Kezdőoldal » Közoktatás, tanfolyamok » Házifeladat kérdések » Mert nem ad helyes eredmenyt...

Mert nem ad helyes eredmenyt ez a program? (c++)

Figyelt kérdés

#include <iostream>

#include <fstream>


// adott egy matrix, irasd ki a matrix azon legnagyobb oszlopat melynek elemeinek szamtani kozeparanyosa megegyezik az oszlopszammal

//az oszlop szamaval! :)

using namespace std;

float kozeparanyos( int x[][50], int m, int n)

{


int S=0;

int k=0;

for (int i=1;i<=m;i++)

{

S=S+x[i][n];

k++;

}

float kozarany=(float)S/k;

return kozarany ;

}



int oszlop(int x[][50], int m, int &n)

{

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

{

if(kozeparanyos(x,m,j)==j) return j;

else return 0;

}

}


int main()

{

cout << "Hello world!" << endl;

ifstream f("adatok.txt");

int X[50][50], M, N, E;

f>>M>>N;

for(int i=1; i<=M;i++)

for(int j=1;j<=N;j++)

f>>X[i][j];


cout<<oszlop(X,M,N);



return 0;

}



2016. dec. 17. 21:40
 1/2 bongolo ***** válasza:

A for ciklus belsejében az "else return 0;" nem kell, mert így a ciklusból csak a j=1 ág fut le, és ha nem jó, akkor rögtön visszatér 0-val. A for ciklus lezáró "}" zárójele után kell egy "return 0;"


Viszont ez sem biztos, hogy jó, mert mit jelent az, hogy a mátrix " legnagyobb oszlopat" kell kiadni? Szóval ha van két oszlop is, aminél teljesül a feltétel, akkor a nagyobbikat kell kiírni? Ha igen, akkor visszafelé érdemes futtatni a ciklust:

for (int j=n; j>=1; j--)


Egyéb észrevételek:

- Nincs értelem referenciaként átvenni az n-et az oszlop()-ban.

- A kozeparanyos-ban nem szükséges a k változó, úgyis m lesz a végén az értéke.

- C/C++-ban nem az a szokás, hogy 1-től induljon a tömb index, nullától szokás. Így a main-ben lefoglalt 50x50-es X mátrixszal csak 49x49-es mátrixot tudsz kezelni, 50-eset már nem.

- A main-ben nincs használva az E változó.

2016. dec. 18. 01:22
Hasznos számodra ez a válasz?
 2/2 A kérdező kommentje:

koszonom a valaszt, igy javitottam ki:


float kozeparanyos( int x[][50], int m, int n)

{


int S=0;


for (int i=1;i<=m;i++)

{

S=S+x[i][n];


}

float kozarany=(float)S/m;

return kozarany ;

}



int oszlop(int x[][50], int m, int n)

{

int k=0;

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

{

if( kozeparanyos(x,m,j)==j) k=j ;


}

return k;

}

2016. dec. 18. 22:00

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!