Mert nem ad helyes eredmenyt ez a program? (c++)
#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;
}
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ó.
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;
}
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!