Ir ao conteúdo

Posts recomendados

Postado

Gente, a questão é essa:

 

Faça um programa que leia 5 nomes de no máximo 10 caracteres e armazene-os em uma matriz. Depois imprima o nome que possui o maior tamanho.

 

Eu fiz aqui, mas n consigo achar a parte errada da lógica...

#include <stdio.h>#include <string.h>#include <stdlib.h>	int main()		{			char nome[3][10], maiorPal;			int i, j;						printf("Digite o nome:\n");			for (i=0; i<3; i++)				{					fgets(nome[i],10,stdin);				}						printf("\n");						for (i=0; i<3; i++)				{					for (j=0; j<10; j++)						{							maiorPal = strlen(nome[i]);						}					printf("%s", maiorPal);				}		system("pause");		return 0;		}
Postado

A matriz deve ter 11 colunas 5x11, isso se deve porque em um array de char precisa de um espaço a mais para ter o o caracter null \0.

A função strlen() retorna o tamanho da string e não a string em si.

Você também terá que comparar o tamanho dos nomes.

 

veja o código:

#include <stdio.h>#include <string.h>#include <stdlib.h>int main(){	char nome[3][11]; //O tamanho é 11 porque são 10 caracters + 1 do caracter null '\0'	int i, j, indiceMaiorPal = 0;	printf("Digite o nome:\n");	for (i=0; i<3; i++){		fgets(nome[i],12,stdin); //o tamanho deve ser 12 porque é o tamanho da string passada(11) + 1 para a tecla ENTER	}	printf("\n");	for (i=1; i<3; i++){		if(strlen(nome[indiceMaiorPal]) < strlen(nome[i]))			indiceMaiorPal = i; //Armazena o indice do maior nome	}	printf("%s", nome[indiceMaiorPal]);	system("pause");	return 0;}

Nesse código você só irá comparar strings que tem tamanhos maiores, se forem iguais não dá certo.

Se quiser fazer com nomes de tamanhos iguais é só utilizar um array(vetor) de índices indiceNomePal[5]

Postado

Você poderia fazer o teste de mesa dessa parte do código, porque fiquei meio confuso...

for (i=1; i<3; i++){		if(strlen(nome[indiceMaiorPal]) < strlen(nome[i]))			indiceMaiorPal = i; //Armazena o indice do maior nome	}

strlen(nome[indiceMaiorPal] é 0, ai vai testar... se o tamanho da string obtida em strlen(nome) for maior que strlen(nome[indiceMaiorPal]), vai guardar no IndiceMaiorPal = i 

No caso, esse "i" do IndiceMaiorPal, é a maior string obtida, correto?

Visitante
Este tópico está impedido de receber novas respostas.

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...