Kezdőoldal » Számítástechnika » Programozás » C++ növekvő számba rendezés hiba?

C++ növekvő számba rendezés hiba?

Figyelt kérdés

van egy kis gondom

kellet csinálnom egy olyna programot hogy kérjen be 20 számot és írja ki növekvőbe nos ez nem is volr gond de kaptam még mellé fealadatok hogy a első 10 legkisebb pozitív egész számokat írja ki és ugye ide kell egy szamlalo ami számolja a 10et de ha a szamlalonak addok egy értéket akkor a tomb jelen esetbe a t[] első eleme 0 lesz akármit írok be valaki valami tanácsot hogy hogy lehet ezt a hibát elkerülni

itt a kép a kóddal és a hibával együtt:

[link]



2014. szept. 26. 22:55
 1/9 anonim ***** válasza:
Hol a hiba? (És hol a kód?)
2014. szept. 26. 23:02
Hasznos számodra ez a válasz?
 2/9 anonim ***** válasza:
Túlindexeled a tömböt a rendezéskor. 20 elemű a tömböd, az indexek ugyebár 0..19 tartományban vannak, a rendezés mindkét ciklusában ezt tartod be, viszont i+1 -et is olvasol/írsz, ami i=19-nél már a 20-as index, ami nem létezik. Val.szeg onnan olvassa be a 0-t.
2014. szept. 26. 23:03
Hasznos számodra ez a válasz?
 3/9 A kérdező kommentje:

#1 ott a kép

#2 de csak akkor van ha a szamlalo változonak értéket adok amugy jól működik kép:

[link]

2014. szept. 26. 23:11
 4/9 anonim ***** válasza:

#2 vagyok


Amikor kifutsz a tömbből, a memóriából olvasol, és lehet épp pont a szamlalo változót olvasod, mert az van a tömb után a memóriában.


Mondom, rossz a rendező algoritmusod, ellenőrizd a ciklusfeltételeket az órán tanultakkal / neten látottakkal.

2014. szept. 26. 23:38
Hasznos számodra ez a válasz?
 5/9 A kérdező kommentje:
Pont az van hogy így van a füzetbe odáig eljututtunk hogy rendezés és kiírja növekvőbe és pont így mert az másoltam füzetből és ehez kaptunk rész feladatokat hogy írja ki 10 legkisebb páros számot aztán írja ki abba a sorrendbe a 10 legkisseb páros számot mint ahogy beírtuk de nem ez a lényeg amugy lehet hogy neked lesz igazad mert a tanárom se ért annyira programozáshoz 20 percig nézet egy egyszerű programot és nem taláta meg rajta a hibát :)(pedig csak egy +1 volt rossz helyre írva) nah mind1 majd holnap megnézem a programot ahogy mondtad azért köszi szépen
2014. szept. 26. 23:44
 6/9 anonim ***** válasza:

Keress erre: "rendezés cserével", itt:

[link]


És nézd meg a ciklusfeltételeket. :)

2014. szept. 26. 23:46
Hasznos számodra ez a válasz?
 7/9 SimkoL ***** válasza:

#include <iostream>

#include <fstream>

using namespace std;

int main ()

{

const int meret = 20;

int data[meret], inserttomb[meret], bubbletomb[meret], swap, i, j, poz = 0;

//beolvasás

ifstream myfile;

myfile.open ("a.txt");

for (i = 0; i < meret; i++){

myfile >> data[i];

inserttomb[i] = data[i];

bubbletomb[i] = data[i];

}

myfile.close();

//bubblesort

for (i = 0 ; i < meret; i++){

for (j = 0 ; j < meret - 1; j++){

if (bubbletomb[j] > bubbletomb[j + 1]){

swap = bubbletomb[j];

bubbletomb[j] = bubbletomb[j + 1];

bubbletomb[j + 1] = swap;

}

}

}

//insertsort

for (i = 1; i < meret; i++) {

j = i;

while (j > 0 && inserttomb[j - 1] > inserttomb[j]) {

swap = inserttomb[j];

inserttomb[j] = inserttomb[j - 1];

inserttomb[j - 1] = swap;

j--;

}

}

//kiiratás

cout << "Eredeti: ";

for (i = 0; i < meret; i++) cout << data[i] << " ";

cout << endl << "10 elso paros: ";

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

if ((poz < 10) && (data[i] %2 == 0)){

cout << data[i] << " ";

poz++;

}

poz = 0;

cout << endl << endl << "10 elso rendezett paros: ";

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

if ((poz < 10) && (bubbletomb[i] %2 == 0)){

cout << bubbletomb[i] << " ";

poz++;

}

cout << endl << endl << "10 elso pozitiv: ";

poz = 0;

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

if ((poz < 10) && (bubbletomb[i] > 0)){

cout << bubbletomb[i] << " ";

poz++;

}

cout << endl << endl << "Bubblesort: ";

for (i = 0; i < meret; i++) cout << bubbletomb[i] << " ";

cout << endl << "Insertsort: ";

for (i = 0; i < meret; i++) cout << inserttomb[i] << " ";

cout << endl << endl;

system ("Pause");

return 0;

}


a.txt tartalma: 45 2 23 12 67 89 -10 5 125 11 -12 0 513 654 222 359 -112 56 69 354


Nem volt kedvem mindig begépelni :)


Nem irigyellek a tanárod miatt, bár az én fiamé sem jobb.

2014. szept. 27. 00:16
Hasznos számodra ez a válasz?
 8/9 A kérdező kommentje:
Köszönöm mindenkinek aki segített :) így már megértettem hogy mi volt a hiba amugy nem azt kértem hogy írd meg helyettem de ez is közrejátszott hogy megértsem :D
2014. szept. 27. 08:55
 9/9 SimkoL ***** válasza:
Nagyon sok ilyen apró programocskám van előre elkészítve, pár sort kellett csak beleírnom.
2014. szept. 28. 14:53
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!