Ir ao conteúdo
  • Cadastre-se
Lucas532

Como armazenar vários nomes em c

Recommended Posts

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

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para copiar uma string você precisa utilizar a função strcpy, exemplo strcpy(aluno[0].nome,"Pedro Jose Jr");  

P.S: no inicio do arquivo implemente #include <string.h>

Editado por 1freakday
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

valeu cara eu consegui mas voce pode me mostrar como seria se eu usasse uma array de strings? porque eu tentei antes e n consegui...

Compartilhar este post


Link para o post
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 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok entendi mas como eu faço para achar o aluno mais velho agora, quero dizer, achar o aluno mais velho eu consigo mas como faço para exibir também o nome dele? estou tentando usar um for mas eu não estou conseguindo...

Compartilhar este post


Link para o post
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;
    }

Compartilhar este post


Link para o post
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.

Editado por 1freakday
  • Curtir 1

Compartilhar este post


Link para o post
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.

Editado por Lucas532
  • Curtir 1

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

×