Sari la conținut
Forum Roportal
alina_ally23

Probleme in C++

Evaluează acest topic

Postări Recomandate

Am de facut o problema cu inregistrari care suna cam asa:

Intr-o clasa sunt maxim 30 de elevi , fiecare elev fiind identificat prin nume si prenume. Elevul poate primi maxim 5 note la o disciplina, pe semestru, si o nota la teza. Se citesc de la tastatura : numarul de elevi din clasa si , pentru fiecare elev , numele,

prenumele si notele. Daca are mai putin de 5 note, notelor lipsa lise va atribui valoarea 0. Sa se calculeze si sa se afiseze mediile elevilor din clasa la acea disciplina, in ordinea:

a. descrescatoare a mediilor; b. alfabetica a numelui si prenumelui;

 

Programul facut de mine in C++ arata astfel:

 

#include<iostream.h>

#include<math.h>

#include<string.h>

struct elev {char nume[20],pren[20];

int nota[5],nota_teza;

float media;};

elev clasa[30];

void media (int n)

{int i,j,s,k,nota_teza;

elev clasa[30];

for (i=0;i<n;i++)

{s=0; k=0;

for(j=0;j<5;j++)

if (clasa.nota[j]!=0){s+=clasa.nota[j]; k++;}

clasa.media=(((s/k)*3)+nota_teza)/4;}

for (i=0;i<n;i++) {cout<<clasa.media<<endl;}

void ordine_medii (int n)

{int i,aux;

elev m[30];

for (i=1;i<n;i++)

if (m<m[i+1]) {aux=m;

m=m[i+1];

m[i+1]=aux;}

for (i=1;i<n;i++)

cout<<m<<" "<<clasa.nume<<" "<<clasa.pren;}

void ordine_alfabetica (int n)

{ elev aux;

int i,j;

for (i=0;i<n-1;i++)

for (j=i+1;j<n;j++)

if (strcmp(clasa.nume,clasa[j].nume)>0)

{strcpy(aux,clasa.nume);

strcpy(clasa.nume,clasa[j].nume);

strcpy(clasa[j].nume,aux);}

for(i=0;i<n;i++)

cout<<clasa.nume<<" "<<clasa.pren<<" ";

media (clasa.media);}

void main ()

{int n,i,j;

cout<<"nr de elevi din clasa "; cin>>n;

for (i=0;i<n;i++)

{cin.get(); cout<<"elevul "<<i+1<<endl;

cout<<"nume="; cin.get(clasa.nume,20); cin.get();

cout<<"prenume="; cin.get(clasa.pren,20); cin.get();

for (j=0;j<5;j++) {cout<<"nota "<<j+1<<" ";

cin>>clasa.nota[j];}

cout<<"nota de la teza="; cin>>clasa.nota_teza;}

for (i=0;i<n;i++)

{cout<<clasa.nume<<" "<<clasa.pren<<" ";

media(clasa.media);}

ordine_medii(media(clasa.media));

ordine_alfabetica(clasa.nume,clasa.pren,clasa.media);};}

 

Problema cu care ma confrunt eu este ca atunci cand dau ALT+F9 imi da o eroare : Declaration syntax error, si imi indica ca ar fi de la subprogramul "ordine_medii" si nu stiu ce trebuie modificat ca sa il pot lansa in executie.

 

Am nevoie de cateva sugestii din partea voastra. Daca eroarea provine din alta parte va rog sa imi spuneti.

Multumesc anticipat! :)

Partajează acest post


Link spre post
Distribuie pe alte site-uri
Am de facut o problema cu inregistrari care suna cam asa:

Intr-o clasa sunt maxim 30 de elevi , fiecare elev fiind identificat prin nume si prenume. Elevul poate primi maxim 5 note la o disciplina, pe semestru, si o nota la teza. Se citesc de la tastatura : numarul de elevi din clasa si , pentru fiecare elev , numele,

prenumele si notele. Daca are mai putin de 5 note, notelor lipsa lise va atribui valoarea 0. Sa se calculeze si sa se afiseze mediile elevilor din clasa la acea disciplina, in ordinea:

a. descrescatoare a mediilor; b. alfabetica a numelui si prenumelui;

 

Programul facut de mine in C++ arata astfel:

 

#include<iostream.h>

#include<math.h>

#include<string.h>

struct elev {char nume[20],pren[20];

int nota[5],nota_teza;

float media;};

elev clasa[30];

void media (int n)

{int i,j,s,k,nota_teza;

elev clasa[30];

for (i=0;i<n;i++)

{s=0; k=0;

for(j=0;j<5;j++)

if (clasa.nota[j]!=0){s+=clasa.nota[j]; k++;}

clasa.media=(((s/k)*3)+nota_teza)/4;}

for (i=0;i<n;i++) {cout<<clasa.media<<endl;}

void ordine_medii (int n)

{int i,aux;

elev m[30];

for (i=1;i<n;i++)

if (m<m[i+1]) {aux=m;

m=m[i+1];

m[i+1]=aux;}

for (i=1;i<n;i++)

cout<<m<<" "<<clasa.nume<<" "<<clasa.pren;}

void ordine_alfabetica (int n)

{ elev aux;

int i,j;

for (i=0;i<n-1;i++)

for (j=i+1;j<n;j++)

if (strcmp(clasa.nume,clasa[j].nume)>0)

{strcpy(aux,clasa.nume);

strcpy(clasa.nume,clasa[j].nume);

strcpy(clasa[j].nume,aux);}

for(i=0;i<n;i++)

cout<<clasa.nume<<" "<<clasa.pren<<" ";

media (clasa.media);}

void main ()

{int n,i,j;

cout<<"nr de elevi din clasa "; cin>>n;

for (i=0;i<n;i++)

{cin.get(); cout<<"elevul "<<i+1<<endl;

cout<<"nume="; cin.get(clasa.nume,20); cin.get();

cout<<"prenume="; cin.get(clasa.pren,20); cin.get();

for (j=0;j<5;j++) {cout<<"nota "<<j+1<<" ";

cin>>clasa.nota[j];}

cout<<"nota de la teza="; cin>>clasa.nota_teza;}

for (i=0;i<n;i++)

{cout<<clasa.nume<<" "<<clasa.pren<<" ";

media(clasa.media);}

ordine_medii(media(clasa.media));

ordine_alfabetica(clasa.nume,clasa.pren,clasa.media);};}

 

Problema cu care ma confrunt eu este ca atunci cand dau ALT+F9 imi da o eroare : Declaration syntax error, si imi indica ca ar fi de la subprogramul "ordine_medii" si nu stiu ce trebuie modificat ca sa il pot lansa in executie.

 

Am nevoie de cateva sugestii din partea voastra. Daca eroarea provine din alta parte va rog sa imi spuneti.

Multumesc anticipat! :)

 

Ce compilator folosesti ? Turbo C++ ?

Partajează acest post


Link spre post
Distribuie pe alte site-uri
Borland C++ 3.1

 

Nu am compilat codul, dar analizand vizual ceea ce ai postat vad foarte multe greseli

 

Hai sa analizam problemele din functia ordine medii, daca acolo spui ca iti da eroare

.....

struct elev

{

char nume[20],pren[20];

int nota[5],nota_teza;

float media;

};

....

void ordine_medii (int n)

{

int i,aux;

elev m[30];

for (i=1;i<n;i++)

if (m<m[i+1])

{

aux=m;

m=m[i+1];

m[i+1]=aux;

}

for (i=1;i<n;i++)

cout<<m<<" "<<clasa.nume<<" "<<clasa.pren;

}

 

m este un array de structuri. Precum stii, o structura in C++ este de fapt o clasa cu toti membri publici.

if (m<m[i+1]) - gresit, nu ai definit operatorul '<' pentru structura elev

aux=m; - gresit - faci o conversie implicita de la sructura elev la un intreg. Nu e permis

m[i+1]=aux; - asignezi un intreg la o structura de tip elev

 

Nu cumva vrei sa spui ca aux e de tip elev ?

 

In main:

 

media(clasa.media);}

media este o functie care accepta un parametru de tip intreg, cu ii pasezi un float. Conversia implicita de la float la intreg nu e permisa.

 

S-ar putea sa mai fie si alte probleme in afara de ce-am spus aici ...

 

 

 

Borland C++ 3.1

 

De asemenea, iti recomand cae pe viitor sa folosesti un compilator care implementeaza standardul C++ 98.

Ultima versiune de Visual Studio Express Edition, de exemplu, care este gratuita.

Decat daca nu cumva va obliga la scoala sa folositi Borland C++ 3.1, ceea ce n-ar fi prea bine, e un compilator antic.

Partajează acest post


Link spre post
Distribuie pe alte site-uri

Cum pot defini operatorii relationali pentru structura prezentata de mine anterior?

struct elev {char nume[20],pren[20];
int nota[5],nota_teza;
float media;};

Si anume operatorul "<" din subprogramul ordine_medii:

void ordine_medii (int n)
{int i,aux;
elev m[30];
for (i=1;i<n;i++)
if (m[i]<m[i+1]) {aux=m[i];
m[i]=m[i+1];
m[i+1]=aux;}
for (i=1;i<n;i++)
cout<<m[i]<<" "<<clasa[i].nume<<" "<<clasa[i].pren;}

Partajează acest post


Link spre post
Distribuie pe alte site-uri

Structura e ca o clasa; in principiu poti declara un membru "operator<(parametrii)" si sa-l definesti... sau in fine, poate n-am inteles eu bine intrebarea

Partajează acest post


Link spre post
Distribuie pe alte site-uri

Peste tot vezi aceleasi tutoriale!! Toate cu programare consola!!!!! Eu vreau sa fac programe adevarate in ferestre si vreau sa fac programe cu care poti sa manipulezi fisiere,nu doar sa citesti un text care iti apare! Unde pot gasi sa invata asa ceva pentru ca nu imi pot stapani ambitia!!!! :doh: :roll:

Partajează acest post


Link spre post
Distribuie pe alte site-uri

Te pun in legatura cu o persoana sa-i faci o aplicatie. Persoana a intrebat aici pe forum. Este un proiect distractiv.. sunt convins ca o sa-ti placa dupa cum te vad; am inceput eu ceva, dar n-am timp sa-l termin. Iti dau sursele sa continui tu. Daca te intereseaza da-mi mesaj pe MP. Tin sa precizez ca e munca voluntara.. fara bani; dar aici intervine pasiunea...

 

 

 

Pe de alta parte tutoriale gasesti cate vrei pe http://www.codeproject.com/ si pe http://www.codeguru.com/

Partajează acest post


Link spre post
Distribuie pe alte site-uri

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum

×