Dúvida sobre estruturas....
2 participantes
Página 1 de 1
Dúvida sobre estruturas....
Bom galera, fiz um código pra mim entender melhor o uso de estruturas.
Este código de programa que eu fiz, lê 8 nomes de alunos, 4 notas para cada aluno, em seguido apresenta todas as notas de cada aluno junta a sua media, e apresenta também a média da turma...
Mas numa sala de aula da vida real, não tem 8 alunos, tem mais, eu posso mudar para 30,40, etc, mas em vez disso, eu quero que o programa, pergunte quantos alunos tem na turma, e faça a estrutura do tamanho entrado, entenderam?
O livro que eu to lendo, mostra um exemplo de como fazer isso, que é por meio de ponteiros, mas quando compilo o exemplo no Visual Studio 2008 Express Edition, retorna 3 erros e 1 warning:
O código do Exemplo é esse:
Este código de programa que eu fiz, lê 8 nomes de alunos, 4 notas para cada aluno, em seguido apresenta todas as notas de cada aluno junta a sua media, e apresenta também a média da turma...
Mas numa sala de aula da vida real, não tem 8 alunos, tem mais, eu posso mudar para 30,40, etc, mas em vez disso, eu quero que o programa, pergunte quantos alunos tem na turma, e faça a estrutura do tamanho entrado, entenderam?
O livro que eu to lendo, mostra um exemplo de como fazer isso, que é por meio de ponteiros, mas quando compilo o exemplo no Visual Studio 2008 Express Edition, retorna 3 erros e 1 warning:
- Código:
1>.\sdg.cpp(32) : error C2057: expected constant expression
1>.\sdg.cpp(32) : error C2466: cannot allocate an array of constant size 0
1>.\sdg.cpp(32) : error C2133: 'ALUNO' : unknown size
1>.\sdg.cpp(61) : warning C4244: '=' : conversion from 'double' to 'float', possible loss of data
O código do Exemplo é esse:
- Código:
// C08EX03.CPP
#include <iostream>
#include <iomanip>
#include <cctype>
#include <cstring>
#include <cstdlib>
using namespace std;
#define TOTAL 41
int main(void)
{
// Definicao de variaveis e configuracao do ambiente
struct CAD_ALUNO
{
char NOME[TOTAL];
float NOTA[4];
float MEDIA;
};
int I, J, TAMANHO;
float SOMA_NT, SOMA_MD, MEDIA_GP;
char LETRA, ENTRANOTA[6], QUANT[15];
struct CAD_ALUNO ALUNO[TAMANHO], *PALUNO, X;
PALUNO = &ALUNO[0];
cout << setprecision(2);
cout << setiosflags(ios::fixed);
// Rotina para a entrada dos nomes
cout << "Cadastro de alunos\n\n";
cout << "Entre a quantidade de elementos: ";
cin.getline(QUANT, sizeof(QUANT));
TAMANHO = atoi(QUANT);
// Rotina para a entrada dos nomes e notas
cout << endl;
for (I = 0; I <= TAMANHO-1; I++)
{
cout << "Informe o " << setw(2) << I + 1 << "o. nome: ";
cin.getline(PALUNO[I].NOME, sizeof(PALUNO[I].NOME));
cout << endl;
cout << "Entre as notas:\n" << endl;
for (J = 0; J <= 3; J++)
{
cout << setw(2) << J + 1 << "a. nota: ";
cin.getline(ENTRANOTA, sizeof(ENTRANOTA));
PALUNO[I].NOTA[J] = atof(ENTRANOTA);
}
cout << endl;
}
// Processamento do calculo das medias
SOMA_MD = 0;
for (I = 0; I <= TAMANHO-1; I++)
{
SOMA_NT = 0;
for (J = 0; J <= 3; J++)
SOMA_NT = SOMA_NT + PALUNO[I].NOTA[J];
PALUNO[I].MEDIA = SOMA_NT / 4;
SOMA_MD = SOMA_MD + PALUNO[I].MEDIA;
}
MEDIA_GP = SOMA_MD / TAMANHO;
// Classificacao dos dados
for (I = 0; I < TAMANHO-1; I++)
for (J = I + 1; J < TAMANHO; J++)
if (strcmp(PALUNO[I].NOME, PALUNO[J].NOME) > 0)
{
X = PALUNO[I];
PALUNO[I] = PALUNO[J];
PALUNO[J] = X;
}
// Apresentacao da tabela nome/notas/media
cout << endl;
cout << "Relatorio Geral" << endl;
cout << endl;
cout << setiosflags(ios::left);
cout << setw(41) << "Aluno";
cout << resetiosflags(ios::left);
cout << setiosflags(ios::right);
cout << setw( 7) << "Nota1";
cout << setw( 7) << "Nota2";
cout << setw( 7) << "Nota3";
cout << setw( 7) << "Nota4";
cout << setw( 7) << "Media";
cout << endl;
cout << endl;
for (I = 0; I <= TAMANHO-1; I++)
{
cout << resetiosflags(ios::right);
cout << setiosflags(ios::left);
cout << setw(41) << PALUNO[I].NOME;
cout << resetiosflags(ios::left);
cout << setiosflags(ios::right);
for (J = 0; J <= 3; J++)
cout << setw( 7) << PALUNO[I].NOTA[J];
cout << setw( 7) << PALUNO[I].MEDIA;
cout << endl;
}
cout << endl;
cout << setw(70) << "Media Geral = " << setw( 6) << MEDIA_GP;
cout << endl;
cout << endl;
cout << "\nTecle <F> + <Enter> para finalizar o programa ";
do
{
LETRA = cin.get();
LETRA = toupper(LETRA);
}
while (LETRA != 'F');
return 0;
}
Perdigão- Silver Member
- Mensagens : 249
Posts : 5215
Agradecimentos : 9
Data de inscrição : 16/06/2011
Re: Dúvida sobre estruturas....
você não definiu o que é ALUNO (no caso uma variável)
só consegui ver esse erro
:S
- Código:
struct CAD_ALUNO, ALUNO[TAMANHO], *PALUNO, X;
só consegui ver esse erro
:S
IsLifersBozo?- Silver Member
- Mensagens : 219
Posts : 9689
Agradecimentos : 6
Data de inscrição : 02/06/2011
Idade : 29
Re: Dúvida sobre estruturas....
edoo, essa variavel nao precisa ser declarada pq faz parte da estrutura, o erro esta no tamanho dela, que é a variavel TAMANHO, e se fosse uma variavel, poderia ser assim:
Mas o exemplo do livro (o exemplo era pra ensinar isso numa struct) dá erro na hora de compilar, nao fui eu que fiz a source, foi o autor... affff
eu nao consigo acha isso na net.
o certo para o meu problema, seria usar um ponteiro para definir o tamanho da struct, mas nao sei adaptar isso.
Até mais
- Código:
<ponteiro> = new <tipo> <variavel>[<TAMANHO>];
Mas o exemplo do livro (o exemplo era pra ensinar isso numa struct) dá erro na hora de compilar, nao fui eu que fiz a source, foi o autor... affff
eu nao consigo acha isso na net.
o certo para o meu problema, seria usar um ponteiro para definir o tamanho da struct, mas nao sei adaptar isso.
Até mais
Perdigão- Silver Member
- Mensagens : 249
Posts : 5215
Agradecimentos : 9
Data de inscrição : 16/06/2011
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|