Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

André Salgueiro

exercício (getchar / putchar)

Recommended Posts

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++;
		}

	}
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.