C++ növekvő számba rendezés hiba?
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:
#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:
#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.
#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.
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!