Informática, perguntado por nathaliamouraca, 1 ano atrás

Duvida em programação na linguagem C sobre vetores/strings/ponteiros?????
Eu posso armazenar uma string (nome, por exemplo) dentro de um endereço no vetor?
se sim, como eu faço isso?
É porque estou tentando resolver uma questão que pede para armazenar informações a repeito de alunos com 2 vetores. No primeiro vetor é pra armazenar o nome dos alunos e no segundo as notas finais.
Quem puder me ajudar ficaria muito agradecida!!!

Soluções para a tarefa

Respondido por willkf25
1
Ponteiros apontam para o endereço de memória. Um vetor está em um endereço de memória, e cada vetor possui um numero x de indices.
Tem todo um esquema em C que dá pra fazer alocação dinamica em ponteiros, mas para esse exercício não é necessário.

em c. declare um vetor char e um float para os nomes e notas

deixei a solução em anexo 
Anexos:

nathaliamouraca: na hora de mostrar na tela o que foi armazenado não funcionou :(
nathaliamouraca: só aparece a primeira letra e quando eu troco %c por %s pra exibir o nome completo o compilador trava
willkf25: #include <conio.h>
#include <stdio.h>

//LERÁ 10 ALUNOS
main(void){

struct alunos{
char nome[50];
float nota;
};

alunos getAluno[10];
//LENDO
for(int i=1;i<3;i++){
printf("\nDigite o nome do aluno %d :",i);
fflush(stdin);
gets(getAluno[i].nome);

printf("\nDigite a nota do aluno %d :",i);
scanf("%f",&getAluno[i].nota);
}
//Mostrando na tela
for(int i=1;i<3;i++){
fflush(stdin);
printf("Aluno %s", getAluno[i].nome);
printf(" | Nota: %f ", getAluno[i].nota);
}

}
willkf25: a linguagem C é meio chatinha pra ler strings, nesse caso então o ideal foi fazer um struct, e criar um array que suporta N structs
willkf25: ai saiu certinho
nathaliamouraca: nesse caso dessa questão eu não posso usar struct pois tem outra questão que pede pra fazer a mesma coisa só que com struct
nathaliamouraca: #include <conio.h>
#include <stdio.h>

//LERÁ 10 ALUNOS
main(){
int x;
puts("Digite a quantidade de alunos");
scanf("%d",&x);
char aluno[x];
float nota[x];

//LENDO
for(int i=0;i<x;i++){
printf("\nDigite o nome do aluno %d :",i+1);
fflush(stdin);
fgets(aluno,40, stdin);

printf("\nDigite a nota do aluno %d :",i+1);
scanf("%f",&nota[i]);
}
//Mostrando na tela
for(int i=0;i<x;i++){
printf("\nAluno %s | Nota: %f ",aluno[i], nota[i]);
}
return 0;
}
nathaliamouraca: o codigo ficou assim como pede a questão
nathaliamouraca: Eu só não consegui fazer ele exibir o nome completo
willkf25: ah bom... agora entao tens um exemplo com struct xD
Perguntas interessantes