Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[c++] probleem met 2-dimensionale array in functie

Pagina: 1
Acties:
  • 35 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik krijg dus bij de volgende stuk code een foutmelding, namelijk: error: invalid conversion from `int' to `int (*)[20]'

dit komt namelijk voor op lijn 22, 23 en 24.

[code=taal]
#include <iostream>
using namespace std;

const int KOL = 20;
const int RIJ = 100;

int aantal_studenten();
int aantal_vakken();
void punten_per_vak(int studenten, int vakken, int punten_studenten[RIJ][KOL]);
void gemiddelde_per_student(int studenten, int vakken, int punten_studenten[RIJ][KOL]);
void gemiddelde_per_vak(int studenten, int vakken, int punten_studenten[RIJ][KOL]);
//void gemiddelde_algemeen(int studenten, int vakken, int punten_studenten[RIJ][KOL]);

int main()
{
int studenten, vakken;
int punten_studenten[RIJ][KOL];

studenten = aantal_studenten();
vakken = aantal_vakken();

punten_per_vak(studenten, vakken, punten_studenten[RIJ][KOL]);
gemiddelde_per_student(studenten, vakken, punten_studenten[RIJ][KOL]);
gemiddelde_per_vak(studenten, vakken, punten_studenten[RIJ][KOL]);

return 0;
}

int aantal_studenten()
{
int aantal;
bool failed = true;

while (failed)
{
cout << "Geef aantal studenten: ";

if (cin >> aantal)
{
failed = false;
}

else
{
failed = true;
cout << "\tU hebt waarschijnlijk een letter ingevoerd. Probeer opnieuw!" << endl;
cin.clear();
}

if (cin.peek())
{
string rest;
getline (cin, rest);
}
}

failed = true;

while (aantal < 1 || aantal > 100)
{
cout << "\tHet aantal studenten moet tussen de 1 en 100 liggen." << endl;

while (failed)
{
cout << "Geef aantal studenten: ";
if (cin >> aantal)
{

failed = false;
}

else
{
failed = true;
cout << "\tU hebt waarschijnlijk een letter ingevoerd. Probeer opnieuw!" << endl;
cin.clear();
}

if (cin.peek())
{
string rest;
getline (cin, rest);
}
}
}
return aantal;
}

int aantal_vakken()
{
int aantal;
bool failed = true;

while (failed)
{
cout << "Geef aantal vakken: ";

if (cin >> aantal)
{
failed = false;
}

else
{
failed = true;
cout << "\tU hebt waarschijnlijk een letter ingevoerd. Probeer opnieuw!" << endl;
cin.clear();
}

if (cin.peek())
{
string rest;
getline (cin, rest);
}
}

failed = true;

while (aantal < 1 || aantal > 20)
{
cout << "\tHet aantal vakken moet tussen de 1 en 20 liggen." << endl;

while (failed)
{
cout << "Geef aantal vakken: ";
if (cin >> aantal)
{
failed = false;
}

else
{
failed = true;
cout << "\tU hebt waarschijnlijk een letter ingevoerd. Probeer opnieuw!" << endl;
cin.clear();
}

if (cin.peek())
{
string rest;
getline (cin, rest);
}
}
}
}

void punten_per_vak(int studenten, int vakken, int punten_studenten[RIJ][KOL])
{
for (int r = 1; r <= studenten; r++)
{
cout << "Geef de punten van student " << r <<": " << endl;

for (int k = 1; k <= vakken; k++)
{
cout << "\tVak " << k << " : ";
cin >> punten_studenten[r-1][k-1];

while (punten_studenten[r-1][k-1] < 0 || punten_studenten[r-1][k-1] > 20)
{
cout << "\tPunten moeten tussen 0 en 20 liggen. Probeer opnieuw...." << endl;
cout << "\tVak " << k << " : ";
cin >> punten_studenten[r-1][k-1];
}
}
}

}

void gemiddelde_per_student(int studenten, int vakken, int punten_studenten[RIJ][KOL])
{
cout << "Het gemiddelde per student: " << endl;

double gemiddelde_per_student[100]={0}, som, gemiddelde;

for (int r = 1; r <= studenten; r++)
{
for (int k = 1; k <= vakken; k++)
{
som += punten_studenten[r-1][k-1];
}

gemiddelde = som / vakken;
gemiddelde_per_student[r-1] = gemiddelde;
cout << "\tStudent " << r <<" : " << gemiddelde << endl;
}
}

void gemiddelde_per_vak(int studenten, int vakken, int punten_studenten[RIJ][KOL]
{
cout << "Het gemiddelde per vak: " << endl;

double gemiddelde_per_vak[20]={0}, som, gemiddelde;

for (int k = 1; k <= vakken; k++)
{
for (int r = 1; r <= studenten; r++)
{
som += punten_studenten[r-1][k-1];
}
gemiddelde = som / studenten;
gemiddelde_per_vak[k-1] = gemiddelde;
cout << "\tVak "<< k <<" : " << gemiddelde << endl;
}
}

[/code=taal]

  • ValHallASW
  • Registratie: Februari 2003
  • Niet online
als je punten_studenten[RIJ][KOL] doorstuurt dan stuur je de int op plaats [RIJ][KOL] (die buiten de scope van je array valt trouwens) mee. Je wilt de array doorsturen, dus je moet daar punten_studenten gebruiken.

Dus:
C++:
22
23
24
    punten_per_vak(studenten, vakken, punten_studenten);
    gemiddelde_per_student(studenten, vakken, punten_studenten);
    gemiddelde_per_vak(studenten, vakken, punten_studenten);


(wat trouwens heel erg basic is. Is dit een schoolopdracht? zo nee, dan kan je misschien beter een andere taal nemen ;) - verder is lezen wat er staat natuurlijk ook praktisch, je krijgt netjes een foutmelding dat je een int naar een pointer-naar-een-int-array-met-20-vakjes wilt converteren)

edit:
regelnummer toegevoegd, extra commentaar, edittag uitproberen

[ Voor 18% gewijzigd door ValHallASW op 20-12-2007 00:32 ]


Verwijderd

Topicstarter
thx, nu werkt het inderdaad en ja, het is een schoolopdracht :*) ben nog niet lang bezig met c++.

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 23:35

Creepy

Tactical Espionage Splatterer

Eeh, het is hier op GoT niet de bedoeling je foutmelding te dumpen samen met je code en te hopen dat wij het voor je gaan oplossen. Wil je voor een volgende keer aub Programming Beleid en dan met name Programming Beleid - De Quickstart eens doorlezen zodat je weet wat we van een topicstart verwachten. Daarnaast is het handig om relevante code te posten, dus niet *alle* code.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Dit topic is gesloten.