Ir ao conteúdo
  • Cadastre-se

C Saída do nome em escada


Posts recomendados

Olá, estou respondendo questões de Linguagem C e a questão dá o seguinte exemplo de entrada e saída:

 

Entrada: tiago

Saída: T

            TI

            TIA

            TIAG

            TIAGO

 

O meu código é este:

#include <stdio.h>
#include <string.h>

int main() {
	
	char nome[255];
	int i, tam;
	
	gets(nome);
	
	tam = strlen(nome);
	
	for (i=0; i <= tam; i++)
	{
		printf("%c", nome[i]);
	}
	
	return 0;
}

Onde está o erro e como posso resolver?

  • Amei 1
Link para o comentário
Compartilhar em outros sites

Já fez impressão de matrizes? Seria como imprimir apenas a metade triangular inferior de uma matriz.

 

Pense em cada degrau da escada como uma linha, e cada letra do nome como uma coluna.

 

O primeiro for é responsável por contar as linhas apenas (logo, nele é impresso o caractere nova linha '\n'), e o segundo for é responsável por contar as colunas de cada linha (logo, nele são impressas as letras do nome). O nome tem tam letras então haverão tam linhas, e o número de colunas impressas em cada linha é igual ao número da linha (= índice da linha + 1) atual.

 

 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

5 horas atrás, programadornovatoc disse:

@Flávio Pedroza poderia me explicar a utilização do outro FOR?

vá pensando instrucao a instrucao....

primeiro de tudo em tam você guarda o tamanho do nome

isso ja é usado no primeiro for, q vai de 0 até tam, vale 0 agora

o segundo for usa o valor do primeiro, de 0 até o valor menor ou igual ao índice do primeiro for q agora é 0

faz os prints, e volta ao segundo for

agora ja é maior, vamos ao primeiro entao

o primeiro for vale 1 agora q ainda é menor q o tamanho do nome

vamos ao segundo for q agora vai de 0 a 1=(tam), valendo 0 agora

voltamos ao segundo for q agora esta valendo 1

ao voltar ao segundo for, ja vale mais q (tam), entao volta ao primeiro for

imagino q o print nao tenha segredo.....mas a cada laço do segundo for é o proximo caracter....

 

ou simplificando, o primeiro for é o q dita a linha da impressao, o segundo for dita até qual caracter imprimi....

Link para o comentário
Compartilhar em outros sites

@programadornovatoc o seu raciocínio: Altura é proposicional a quantidade de caracteres.

Se posso usar a linguagem então combinando seu raciocínio com sintaxe de C vem ...

#include <stdio.h>
#include <string.h>

int main() {

	char nome[255];
	int i, tam;

	gets(nome);

	tam = strlen(nome);

	for (i=1; i <= tam; i++)
	{
		printf("%.*s\n",i,nome);
	}

	return 0;
}

Como exite um * no comprimento de saída a função solicita um certo valor de comprimento para só assim imprimir.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

 

@nickosoft, só pequenos detalhes...


Sobre:

Em 26/07/2019 às 19:00, nickosoft disse:

isso ja é usado no primeiro for, q vai de 0 até tam, vale 0 agora

 

No caso, seria de 0 até tam-1.

Por exemplo, se começasse com 1, diriam-se "de 1 até tam", correto? (e não de 1 até tam+1... como, inclusive, é visto no código do @MB_).

 

 

Sobre

Em 26/07/2019 às 19:00, nickosoft disse:

o segundo for usa o valor do primeiro, de 0 até o valor menor ou igual ao índice do primeiro for q agora é 0 

 

No caso, seria de 0 enquanto menor ou igual ao índice...

Ou poderia dizer: "de 0 até maior que o índice".

 

Enquanto tem o sentido de "continuar". Já o até remete a "finalizar".

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!