Noob

1. Noob

celio de souza ribeiro junior
celiojedi

(usa Ubuntu)

Enviado em 03/03/2011 - 15:03h

alguem me fala por que nao esta dando... eu estou errando na declaração do ponteiro e no apontamento...

[/code]
#include <iostream>
#include <cstdlib>
#include <string>
#define max 50;
using namespace std;

struct turma
{
char nome[40];
float nota;
} aluno[50];

int main()
{
turma *ptr;
ptr = &aluno;
((*prt) [ i ])->nome = celio de souza;
((*prt) [ i ])->nota = 5,4;
}
[code]


  


2. Re: Noob

celio de souza ribeiro junior
celiojedi

(usa Ubuntu)

Enviado em 03/03/2011 - 16:38h

problema e que tenho que entregar isso hj na facul ... hehe... segue as questoes ...


1) Escrever um programa para ler o nome e a nota de 50 alunos de uma turma. Calcular a média aritmética das notas e imprimir o nome de todos os alunos que têm nota acima da média.



2) Escrever um programa para ler a quantidade de alunos de uma turma, o nome de cada aluno juntamente com sua nota final. Calcular a média aritmética das notas e imprimir o nome de todos os alunos que têm nota acima da média.



3) Escrever um programa para ler o nome e a nota de alunos de uma turma (o nome ‘0’ indica fim de entrada de dados e não deve ser considerado). Calcular a média aritmética das notas e imprimir o nome de todos os alunos que têm nota acima da média.

ps: usando struct e malloc so que eu falte nas duas aluas ... semana passada e retrazada maldita dengue...


3. Re: Noob

BrunoPeinado
Peinado

(usa Ubuntu)

Enviado em 03/03/2011 - 16:40h

não existe incrementação de ponteiro.
Ponteiro aponta pra uma região de memória, se voce fazer ptr++ se vai aponta para algo desconhecido, porque a memoria é toda dinamica.

Esse trabalho é facinho.
Se faz uma struct contendo as variaveis aluno, nome, nota.

typedef struct Aluno {
int nota1, nota2, nota3 etc.....;
char nome;
struct Aluno *proximo
} *Aluno;

typedef struct inicio {
struct Aluno *raiz;
} *inicio;

funcao que aloca nemoria, so pra iniciar a struct.

inicio aux = (inicio) malloc(sizeof(struct inicio));
aux->inicio=NULL;
return aux;


Insere (Aluno *noatual, ..........outras variaveis que voce deseja inserir)
if noatual=null
(*noatual) =(no) malloc(sizeof(struct no))
(*noatual)->nota1=????
(*noatual)->nota2=???
(*noatual)->nome=???
(*noatual)->Proximo= NULL
else
return Insere (&(*Proximo),........nome,nota1,nota2,nota3,etc.....)

Se o seu professor falou que é pra 50, então ele ta pedino algo estático.
O que ue to dando de exemplo é usando ponteiros e sendo uma estrutura dinamica que se auto-ajusta na memoria.
Por isso que nao existe a instrução prt++ que o nosso amigo citou, pois a memoria é dinamica ela vai allocando memoria conforme é necessário.

O exemplo funciona assim, ele aloca a estrutura inicial chamado inicio.
Dai sempre que for inserir alguem o proximo espaço fica VAZIO e isso é caracteristica de uma LISTA DINAMICA ENCADEADA

ALUNO 1 ---> ALUNO 2 ---> ALUNO 3 ----> VAZIO

Seu professor disse que coloca 50 espaços, dai se tu num usa todos os 50 se ta disperdiçando memoria e se ter mais de 50 alunos vai dar um overflow.
A vantagem da dinamica é que ela se auto ajusta independente do tamanho dos dados, o limite é a memoria RAM.
Se estoura a Memoria RAM dai se tem que ter uma memoria secundaria e por ai vai.

To esperano aula começa entao to explicano aki so pra passa o tempo.


4. Re: Noob

celio de souza ribeiro junior
celiojedi

(usa Ubuntu)

Enviado em 03/03/2011 - 16:44h

olha o que eu consegui fazer mas esta tudo paulado ... da um desconto ai por que eu nunca vi essa materia e tenho que entregar essa treta hj ... alguem ai pode me dar uma luz ou mesmo corrigir o meu exemplo ?

//celio de souza ribeiro RA: 1018807013

#include <iostream>
#include <cstdlib>
#include <string>
#define max 50;
using namespace std;

struct turma
{
char nome[60];
float nota;
} aluno[60];

int main()
{
struct turma *ptr = aluno;

ptr = (struct turma) malloc (sizeof(struct turma));
string nome;
int nota;
for (int i = 0; i <= 60; i++ )
{

int cont=+1;
cout << "entre como o nome do aluno:";
cin >> nome1;
cout <<"entre com a nota do aluno:";
cin >> nota2;
if (nome == "0")
i = 60;
else

//p->i=10;
ptr[ i ]->nome = nome1;
ptr[ i ]->nota = nota2;

}
for (int p = 0; p <= cont; p++)
{
// aguarrei aqui ... hehehe ....
}
cout<<((*ptr)[<<1<<]);
cout<< "o numero de alunos sao:" << cont << endl;


}


5. Re: Noob

André
andrezc

(usa Debian)

Enviado em 03/03/2011 - 16:46h

De cara, repare na macro de pré processador em seu código:

#define max 50;

remova o ponto-e-vírgula. Do jeito que está, ele chegaria no formato:

50;

ex:

char str[50;];




6. Re: Noob

celio de souza ribeiro junior
celiojedi

(usa Ubuntu)

Enviado em 03/03/2011 - 16:48h

droga nem percebi isso e o dev passou batido ... ps: estou no trampo e aqui so posso usar o dev...

pronto arrumei alguns erros

//celio de souza ribeiro RA: 1018807013

#include <iostream>
#include <cstdlib>
#include <string>
#define max 50
using namespace std;

struct turma
{
char nome[60];
float nota;
} aluno[60];

int main()
{
struct turma *ptr = aluno;

ptr = (struct turma*) malloc(sizeof(struct turma));
string nome1;
int nota2;
int nota;
for (int i = 0; i <= 60; i++ )
{

int cont=+1;
cout << "entre como o nome do aluno:";
cin >> nome1;
cout <<"entre com a nota do aluno:";
cin >> nota2;
if (nome1 == "0")
i = 60;
else

//p->i=10;
ptr[ i ]->nome = nome1;
ptr[ i ]->nota = nota2;

}
for (int p = 0; p <= cont; p++)
{
// aguarrei aqui ... hehehe ....
}
cout<<((*ptr)[<<1<<]);
cout<< "o numero de alunos sao:" << cont << endl;


}

erro: 36 C:\Dev-Cpp\teste01.cpp base operand of `->' has non-pointer type `turma' // ptr[ i ]->nome = nome1;


7. Re: Noob

celio de souza ribeiro junior
celiojedi

(usa Ubuntu)

Enviado em 03/03/2011 - 17:03h

galera mudei um pouco o codigo... agora esta dando erro assim o: 40 C:\Dev-Cpp\teste01.cpp incompatible types in assignment of `std::string' to `char[60]'

segue o codigo:


//celio de souza ribeiro RA: 1018807013

#include <iostream>
#include <cstdlib>
#include <string>
#define max 50
using namespace std;

struct turma
{
char nome[60];
float nota;
} aluno[60];

int main()
{
struct turma *ptr;

ptr = (struct turma*) malloc(sizeof(struct turma));
string nome1;
int nota2;
int nota;
nome1 ="teste";
for (int i = 0; i <= 60; i++ )
{

int cont=+1;
cout << "entre como o nome do aluno:";
cin >> nome1;
cout <<"entre com a nota do aluno:";
cin >> nota2;
if (nome1 == "0")
i = 60;
else

//p->i=10;
/* ptr[ i ]->nome = nome1;
ptr[ i ]->nota = nota2;
*/
ptr->nome = nome1;
ptr->nota = nota1;
}
for (int p = 0; p <= cont; p++)
{
// aguarrei aqui ... hehehe ....
}
cout<<((*ptr)[<<1<<]);
cout<< "o numero de alunos sao:" << cont << endl;


}


8. Re: Noob

BrunoPeinado
Peinado

(usa Ubuntu)

Enviado em 03/03/2011 - 17:12h

realmente tem necessidade em usasr ponteiros ?
Seria super simples você fazer assim.

i = 0;
aluno[i++] faz o looping que vai preenchendo os alunos.



9. Re: Noob

celio de souza ribeiro junior
celiojedi

(usa Ubuntu)

Enviado em 03/03/2011 - 17:13h

a professora pediu ponteiros / struct / malloc



10. Re: Noob

BrunoPeinado
Peinado

(usa Ubuntu)

Enviado em 03/03/2011 - 17:22h


struct turma
{
char nome[40];
float nota;
} *aluno[50]; <== Acho que falta o ponteiro daki.






11. Re: Noob

celio de souza ribeiro junior
celiojedi

(usa Ubuntu)

Enviado em 03/03/2011 - 17:23h

tem como colocar um exemplo simples ai... por que como eu disse estou vuando nessa materia...

peinado eu declarei ele la embaixo...

no main...


12. Re: Noob

BrunoPeinado
Peinado

(usa Ubuntu)

Enviado em 03/03/2011 - 17:24h

acho que dai o *prt sempre vai apontar pro inicio do vetor, agora não é certo incrementar ponteiro.
Isso é muito perigoso



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts