No nn funziona correttamente...cmq ho aggiutno qualcosa e adesso comincia a funzionare, più o meno...
In effetti se io scrivo:
Devo vedere visualizzato un testo giustificato in modo tale da ottenere:
Ma è nella determinazione degli spazi che nn funziona qualcosa...ci sto sbattendo troppo la testa e sto un pò fuso...se come determinazione degli spazi da inserire tra una parola e l'altra facessi: spa_ins=80-conta_caratteri la cosa potrebbe anche funzionare se io scrivessi due parole da un carattere ciascuna, cioè a b ma per gli altri casi no....come li posso determinare?
Questa è l'ultima versione:
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]!='*'));
for(i=0;i<80;i++)
cout<<testo2[i] ;
getch();
return 0;
}
void clear_buffer(){
char car;
do{
car=cin.get();
}while(car != '\n');
}
void giustifica(){
int s=0, j, conta_caratteri=0, conta_parole=0, num_spazi, spa_ins, k, l;
// conteggio dei caratteri e delle parole
j=0;
while(testo[j]!='\0'){
if(testo[j]!=' ')
conta_caratteri++;
if(((testo[j]==' ')&&(testo[j+1]!=' ')||(testo[j+1]=='\0')))
conta_parole++;
j++;
}
// determ. spazi
num_spazi=80-conta_caratteri;
spa_ins=num_spazi/conta_parole;
// inserimento spazi
k=0;
l=0;
while(testo[k]!='\0'){
if(testo[k]==' '){
l=0;
while(l<spa_ins){
testo2[k+s]=' ';
l++;
s++;
}
s--;
}
else
testo2[k+s]=testo[k];
k++;
}
}