Ir ao conteúdo
  • Cadastre-se
lucasgarcia

Duvida em ler char em vetor dinamico

Recommended Posts

segue o enunciado:Um time de basquete possui 12 jogadores. Elabore um algoritmo que, dado dois vetores dinâmicos Nome e Altura

faça um programa que imprima o nome do jogador mais alto e sua altura.

e o meu codigo ate agora:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{ float* array;
int n,i,nomemaior;
float maioraltura;
char* nome;




printf("digite o numero de jogadores\n");
scanf("%d",&n);
//informando dinamicamente o vetor
array=(float*) malloc(n*sizeof(float));
array=(char*) malloc(n*sizeof(char));

printf("digite a altura do jogador\n");
scanf("%f",&array[0]);
maioraltura=array[0];



//atribundo valores ao vetor
for(i=0;i<n-1;i++)
{
printf("digite a altura do jogador\n");
scanf("%f",&array[i]);

if(array[i]>maioraltura)
maioraltura=array[i];

}


//imprimindo os valores
printf("a maior altura e:%.2f\n",maioraltura);
free(array);




system("PAUSE");
return 0;

Já fiz a metade do exericio,só estou em duvida em como declarar a variavel char para armazenar os nomes se é assim mesmo char* nome;,e como seria tambem no scanf se é o %s mesmo,e se eu ja teria que pedir pra digitar o nome fora do for igualmente como fiz com a maior altura,e se eu teria que criar outro for para armazenar os nomes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se realmente deve ser totalmente dinâmico, vai precisar definir a variável "array" como sendo um ponteiro pra ponteiro.

Fiz uns ajustes no seu código, usando estrutura:


#define SIZE 12

typedef struct
{
char nome[50];
float altura;
} Jogador;

int main(void)
{
Jogador **array = NULL;
int i = 0;
char *nome = NULL;
float altura = 0;

/* Alocação do array principal */
array = malloc( SIZE * sizeof(Jogador *) );

/* Alocação para cada posição do array e atribuição dos valores */
for (i = 0; i < SIZE; i++)
{
array[i] = malloc( sizeof(Jogador) );
printf("Nome do Jogador: ");
scanf(" %s", array[i]->nome);
printf("Altura do jogador %s: ", array[i]->nome);
scanf("%f", &array[i]->altura);

/* Verificação se a variável altura não foi usada */
if (altura == 0)
{
nome = array[i]->nome;
altura = array[i]->altura;
}
else
{
/* Comparação para descobrir a maior altura e atribuir os valores e referencias para as variáveis */
if (array[i]->altura > altura)
{
nome = array[i]->nome;
altura = array[i]->altura;
}
}
}

printf("\n== JOGADOR MAIS ALTO ==\n");
printf("Nome: %s\nAltura: %.2f\n\n", nome, altura);

/* Liberação da memória para cada posição do array */
for (i = 0; i < SIZE; i++)
free(array[i]);

/* Liberação da memória do array principal */
free(array);

return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×