Ir ao conteúdo
  • Cadastre-se
Nathália Moura

Programação na linguagem c sobre vetores/strings/ponteiros?

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que não entendi a dúvida, mas tentando responder, a linguagem c não possui um "tipo string" por padrão, uma string é representada por um vetor do tipo char. Pra solucionar esse teu problema, acho que seria mais fácil criar um tipo struct, contendo os campos nome (vetor de char) e notas finais (int).

 

Algo assim:

typedef struct DATA DATA

struct DATA{

	char nome[300];
	int notasFinais[10];

}

int main(){
	
	DATA aluno;
	.....

}

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

. Crie um programa em C que receba como entrada o numero de alunos de uma disciplina. ´ Aloque dinamicamente dois vetores para armazenar as informac¸oes a respeito desses ˜ alunos. O primeiro vetor contem o nome dos alunos e o segundo cont ´ em suas notas ´ finais. Crie um vetor que armazene a cada linha o nome do aluno e sua nota final. Use nomes com no maximo 40 caracteres. Se o nome n ´ ao cont ˜ em 40 caracteres, complete ´ com espac¸o em branco

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Nathália Moura Nesse caso, leia sobre as funções malloc e realloc, já que precisa alocar dinamicamente. Faz algo parecido com o que postei no código ali em cima, só que na hora de declarar o vetor "aluno", declara usando a notação de ponteiro do tipo DATA e depois vai alocando e realocando esse espaço com malloc e realloc, usando esse ponteiro.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Citação

. Crie um programa em C que receba como entrada o numero de alunos de uma disciplina.

Perguntar o numero de alunos e guardar em um inteiro (int nAlunos).

 

Citação

Aloque dinamicamente dois vetores para armazenar as informações a respeito desses alunos.

você pode usar a estrutura que lhe comentou djm_jm, nesse caso seria criar um vetor de estruturas do tamanho de de sizeof( Dados) * nAlunos). Use calloc em vez de malloc, e ponha todos os bytes a null, com isso você tem o problema resolvido sobre os espaços em branco... ao menos com entradas novas, se precisar alterar dados você terá que "limpar" esses espaços manualmente.
 

 

Citação

O primeiro vetor contem o nome dos alunos e o segundo contêm suas notas finais.

A ideia é ter algo como strcpy ( Aluno[2].nome, "Lula do pt"). E logo depois ler X notas: Aluno[2].nota[0] = X, Aluno[2].nota[1] = X2....

 

Citação

Crie um vetor que armazene a cada linha o nome do aluno e sua nota final. Use nomes com no máximo 40 caracteres. Se o nome não contêm 40 caracteres, complete com espaço em branco

Nessa parte o enunciado é confuso. Um vetor só tem uma linha porém pode se tratar de um vetor2D(bidimensional).
Acho que se trata de um vetor 2d de char*, tipo:
char notas[nAlunos][100];

porém deveria ser reservado dinamicamente também, ou usar arrays de tamanho variável (VLA) que pertence ao padrão C99 se não me engano. Se usar reserva dinâmica use calloc para dar formato aos bytes a null.

 

Tire a media de cada aluno e ponha nessa matriz de notas tipo "lula do pt 7.85". você pode usar sprintf para isso. sprintf é como o printf, só que em vez de sair na tela, a saída é um string que você precisa indicar aparte. Algo como:
for( i = 0; i < nAlunos; i++)
float nota = Aluno.nota[0] + Aluno.nota[1] +Aluno.nota[2]... até Aluno.nota[nNotas].
nota = nota/nNotas;
sprintf(notas, "%40.40s %5.2f" Aluno.nome, nota); // 35 chars(%35s) mais

Acho que da para ter uma ideia...
Por um lado você tem um array de structs do tamanho de nAlunos reservado dinamicamente, que contem 2 vetores, o char nome[35] e um array de floats para armazenar as notas do tamanho de nNotas que é a quantidade de provas que teve o aluno durante o ano. Dai você passa tudo isso para uma matriz usando sprintf onde cada linha vai conter o nome e a media.

Não é tão difícil, tente ir fazendo o enunciado. Se tiver problemas avise... ponha seu código aqui e iremos lhe ajudando.

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

×