Ho scritto questo programma (assai grezzo) pre giusitifcare del testo, solo che mandandolo in esecuzione, una volta che ho scritto il testo di una riga e premo invio, invece di passare alla scrittura della riga successiva chiude la schermata del DOS e termina il programma, che invece dovrebbe terminare, dato il mio ciclo, inserendo il carattere '*' .
Ecco il programma:
codice:
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
void clear_buffer(), giustifica();
const int n=5;
int i;
char testo[80], testo2[80];
int main(){
cout<<"Inserire il testo (Premere * per terminare):\n\n";
i=0;
do{
cin.get(testo,80,'\n');
clear_buffer();
if(testo[0] != '*')
giustifica();
i++;
}while((i<n)&&(testo[0]!='*'));
getch();
return 0;
}
void clear_buffer(){
char car;
do{
car=cin.get();
}while(car != '\n');
}
void giustifica(){
int j, conta_caratteri, conta_parole, num_spazi, spa_ins, k, l;
// conteggio dei caratteri e delle parole
for(j=0;j<80;j++){
if(testo[j]!=' ')
conta_caratteri++;
else
conta_parole++;
}
// determ. spazi
num_spazi=80-conta_caratteri;
spa_ins=conta_parole/num_spazi;
// inserimento spazi
k=0;
while(testo[k]!='\n'){
if(testo[k]==' '){
l=0;
while(l<spa_ins){
testo2[k+l]=' ';
l++;
}
}
else
testo2[k]=testo[k];
k++;
}
}
Uso Dev-C++....sarà ò'istruzione cin.get???
Perchè facendolo a scuola in lab, con il turbo-c++ funzionava...