Ir ao conteúdo
  • Cadastre-se

Como armazenar vários nomes em c


Lucas532

Posts recomendados

tem um exercicio em que preciso armazenar 6 nomes,idades e notas só não sei como, pensei em usar uma struct, ou uma matriz de char para os nomes e vetores para idade e nota mas estou com dificuldade na parte das strings, enfim, preciso de ajuda, segue ai embaixo o exercicio...

Uma escola quer saber:
- qual o nome e o desempenho de seu aluno mais velho,
- e o nome e a idade do aluno com melhor desempenho.
Faça um programa que atenda essa necessidade, sabendo que o grupo de alunos tem as seguintes informações: 
Nome do Aluno      Idade      Conceito Final
Pedro Jose Jr.         18            8
Augusto Severo       19            10
Mylena Reis             20            9
Sirlei Silva e Silva    20            5
Vera Nogueira         17             10
Regis Martins           21            2

Link para o comentário
Compartilhar em outros sites

1 - Poste uma parte do código para te ajudar.

2 - Dica: você pode armazenar varias string usando um array de strings declarando do seguinte modo:

     char nome[5][3]; onde,  5 é a quantidade de strings e 3 é a quantidade de caracteres nessa string,     ou pode usar um array de struct e declarar apenas uma variável de char nome[25];  , usando array de struct permite cadastrar não só o nome mas também a idade e o conceito final, sem precisar array nessas variáveis, exemplo:

    //Struct
    struct Aluno
     {
      char nome[25];
      int idade;
      int conceitoFinal;
     }
    //Array de struct com 8(alunos) estruturas
    Aluno alunos[8];

 

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

struct dados_do_aluno
    {
        int idade, nota;
        char nome[20];
    };
    struct dados_do_aluno aluno[6];

    aluno[0].nome = "Pedro Jose Jr.";
    aluno[1].nome = "Augusto Severo";
    aluno[2].nome = "Mylena Reis";
    aluno[3].nome = "Sirlei Silva e Silva";
    aluno[4].nome = "Vera Nogueira";
    aluno[5].nome = "Regis Martins";
 

eu tentei isso antes mas não consigo definir as strings (nomes) de cada aluno

Link para o comentário
Compartilhar em outros sites

Para usar array de string você faria do seguinte modo:

struct todos_dados_
    {
        int idade[6], nota[6];
        char nome[6][128]; // <---- array de seis nomes com 128 caracteres cada
    };
 struct todos_dados_ aluno;

 

Exemplo de programa:

#include <stdio.h>
#include <stdlib.h>
struct todos_dados
    {
        int idade[6], nota[6];
        char nome[6][128];//Array de string com 6 palavras de ate 128 caracteres
    };
struct todos_dados aluno;//Uma estrutura ja e suficiente

int main() {
    int c = 0;

    printf("\n -- REGISTRO --\n");
    for(;c < 6;c++){
        printf("\nNome do aluno:");
        scanf("%s",aluno.nome[c]);//Array de string
        printf("Idade do aluno:");
        scanf("%d",&aluno.idade[c]);
        printf("Nota do aluno:");
        scanf("%d",&aluno.nota[c]);
    }

    printf("\n -- LEITURA --\n");
    for(c = 0;c < 6;c++){
        printf("Nome do aluno:%s\n",aluno.nome[c]);
        printf("Idade do aluno:%d\n",aluno.idade[c]);
        printf("Nota do aluno:%d\n\n",aluno.nota[c]);
    }
}

 

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

de struct, inventei uma parada louca aqui mas n funcionou do jeito q eu esperava kkkkkkk

 mv[0] = aluno[0].idade = 18;
    for(i=0; i<6; i++)
    {
        if(aluno.idade > mv)
            mv = aluno.idade;
    }

opa n mandei certo o código aqui ta todo ele

#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <locale.h>

main()
{
    setlocale(LC_ALL,"portuguese");
    int i;
    int mv[6];
    int md[6];
    struct dados_do_aluno
    {
        int idade, nota;
        char nome[20];
    };
    struct dados_do_aluno aluno[6];

    strcpy(aluno[0].nome, "Pedro Jose Jr.");
    strcpy(aluno[1].nome, "Augusto Severo");
    strcpy(aluno[2].nome, "Mylena Reis");
    strcpy(aluno[3].nome, "Sirlei Silva e Silva");
    strcpy(aluno[4].nome, "Vera Nogueira");
    strcpy(aluno[5].nome, "Regis Martins");
    aluno[0].idade = 18;
    aluno[1].idade = 19;
    aluno[2].idade = 20;
    aluno[3].idade = 20;
    aluno[4].idade = 17;
    aluno[5].idade = 21;
    aluno[0].nota = 8;
    aluno[1].nota = 10;
    aluno[2].nota = 9;
    aluno[3].nota = 5;
    aluno[4].nota = 10;
    aluno[5].nota = 2;

    mv[0] = aluno[0].idade = 18;
    for(i=0; i<6; i++)
    {
        if(aluno.idade > mv)
            mv = aluno.idade;
    }

Link para o comentário
Compartilhar em outros sites

So um erro basico, como voce possui mais de uma estrutura, voce precisa determinar qual estrutura esta sendo acessada, o que nao ocorre a seguir:  

//Como esta dentro do loop eu adicionei o

if(aluno.idade > mv)
           mv = aluno.idade;
O certo seria:

  int ultimoMv = 0;
  //A variavel utilmomv armazena o local que vimos o irmão mais velho
  if(aluno[i].idade > mv){
            mv = aluno[i].idade;
 			ultimoMv = i;
   } 
   //Como ja temos o local onde o mais velho esta, usamos do seguinte modo para mostrar seu nome:
   printf("O mais velho se chama : %s",aluno[ultimoMv].nome);

Perdão, corrigi.

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

sim foi isso ai q eu fiz é que eu quero saber se tem como eu usar o indice em comum para exibir o nome também, por exemplo, o aluno mais velho é o do índice 5, então eu queria exibir o nome com o mesmo indice, só q com o laço for q eu estou usando ele só acha a idade, mas eu gostaria de achar apenas o indice da maior idade entende?

ah bom agora sim entendi valeu mesmo pela ajuda ai cara.

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

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