Kezdőoldal » Számítástechnika » Programozás » Valaki megnézné hogy mi a...

Valaki megnézné hogy mi a hiba ebbe a kódba? Egy olyan programot szeretnék írni amely kiírja a képernyőre a 2D tömb azon elemeit amelyek kisebbek a közvetlen szomszédainál. pl .1 2 3 4 5 7 5 8 3 eseten kiírja a (z) 1,3, számokat.

Figyelt kérdés

int n;

cout << "Add meg az n erteket ahol (1<=n<=23)" << endl;

cin>>n;

int a[n][n],b[10],minim;

cout<<"Olvasd be az elemeket!"<<endl;

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

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

cin>>a[i][j];


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

for(int j=0;j<n;j++) {

if(a[i][j]<a[i][j+1])

if(a[i][j]<a[i][j-1])

if(a[i][j]<a[i-1][j])

if(a[i][j]<a[i+1][j])


b[i]=a[i][j];

}

}

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

cout<<endl;

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

out<<a[i][j]<<" ";

}

cout<<endl;

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

cout<<b[i]<<" ";


}



2016. jún. 16. 16:22
 1/8 anonim ***** válasza:
Mi a hiba benne?
2016. jún. 16. 17:14
Hasznos számodra ez a válasz?
 2/8 anonim ***** válasza:
Azon kívül, hogy elég masszívan túlindexelsz mindenféle irányba.
2016. jún. 16. 17:14
Hasznos számodra ez a válasz?
 3/8 A kérdező kommentje:
Hogy érted hogy túlindexelem ? esetleg máshogy hogy lhetne?
2016. jún. 16. 17:19
 4/8 anonim ***** válasza:

Az a és b tömb indexei a következők lehetnek: 0 <= index < n


Ehhez képest te végigmész egy ciklussal rajtuk:

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

és nézed:

if(a[i][j]<a[i-1][j])

if(a[i][j]<a[i+1][j])

értékeket.

Tehát -1 és n indexet is, miközben egyik sem mutat érvényes memóriaterületre.

2016. jún. 16. 17:24
Hasznos számodra ez a válasz?
 5/8 A kérdező kommentje:
Igen,értem s hogy lehetne másképp hogy minden szomszédját megvizsgálja?
2016. jún. 16. 17:30
 6/8 anonim ***** válasza:
Kezeld le, hogy ne indexeljen túl. Ha i=0, akkor ne vizsgálja (i-1)-et, stb.
2016. jún. 16. 22:14
Hasznos számodra ez a válasz?
 7/8 anonim ***** válasza:

A vizsgálatot túlzottn leegyszerűsítetted.

9 esetet kell vizsgálnod - talán ezen ábra segítségével könnyebben érthető:

[link]


Az I. esetben 3,

a II. esetben 5,

a III. esetben 3,


a IV. esetben 5,

az V. esetben 8,

a VI. esetben 5,


Az VII. esetben 3,

a VIII. esetben 5,

a IX. esetben 3 feltételt (ugyanis annyi közvetlen szomszédja van) kell ellenőrizned.

2016. jún. 17. 21:31
Hasznos számodra ez a válasz?
 8/8 anonim ***** válasza:

Illetve mivel nem ismerjük előre a 2D tömb azon elemeinek számát amelyek kisebbek a közvetlen szomszédainál, ezért azt nem szimpla tömbben tárolnám, hanem - ha már C++ - vektorban.


Ehhez segítség itt:

[link]

2016. jún. 17. 22:27
Hasznos számodra ez a válasz?

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!