Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Escreva um programa que leia um texto com largura (quantidade de colunas) ilimitada e produza na tela uma versão deste mesmo texto com largura máxima de 80 colunas. Atenção: as palavra não podem ser quebradas em mais de uma linha. A cada nova palavra lida deve ser avaliado se esta fará com que a linha atual exceda 80 colunas, quando isto ocorrer, deve se incluído um caracter '\n' antes dela.
A galera que puder me ajudar, o problema é que o programa que fiz, não está imprimindo o espaço na próxima linha qndo não cabe na anterior.
Segue o programa com máx de 10 colunas para testes.
//Autor: André Luis Salgueiro Costa
#include <stdio.h>
#define IN 1
#define OUT 0
#define TAM 10
int main()
{
char c;
int status,j,i,tamanho;
char palavra[2000];
tamanho=TAM;
status=OUT;
j = 0;
i = 0;
while ((c=getchar())!=EOF)//enqnto não for o final do arquivo copia os caracters para variável c.
{
if (c==' '||c=='\n'||c=='\t')// se for espaço ou quebra de linha ou tabulação.
{
if (tamanho-i<0)//testa se ultrapassou o número de colunas permitidas.
{
while (j<i)
{
putchar(palavra[j]);// imprime a palavra.
j++;
}
putchar('\n');// pula uma linha
putchar (c);
tamanho=TAM;
}
else
{
while (j<i)
{
putchar(palavra[j]);// imprime a palavra.
j++;
}
putchar (c);
}
++i;
tamanho-=i;//armazena o que sobrou do número de colunas após imprimir a palavra.
j=0;
i=0;
}
else
{
if (tamanho-i<0)//testa se ultrapassou o número de colunas permitidas.
{
putchar('\n');// pula uma linha
tamanho=TAM;
}
if (status==OUT)
{
status=IN;//indica que o cursor está dentro da palavra
}
palavra[i]=c;//copia para a variável i o caracter digitado.
i++;
}
}
}Carregando comentários...