Som v diskrétnej matematickej triede a jedným z problémov je implementácia druhu bubliniek. Tu je môj zbytočný pokus, pretože nevytvára riešenie.
#include <iostream>
#include <cstdlib>
using namespace std;
void BubbleSort();
int array1[100] = {0};
int k;
int main()
{
cout << "Enter your numbers and when you are done, enter 0000:n";
int x = 0;
int i;
while (i != 0000)
{
cin >> i;
array1[x] = i;
x++;
k = x;
}
BubbleSort();
system("pause");
return 0;
}
void BubbleSort(){
int temp;
for( int i = 0; i < k; i++ ){
if ( array1[i] > array1[i+1]){
temp = array1[i+1];
array1[i+1] = array1[i];
array1[i] = temp;
}
}
int x = 0;
while (x <= k)
{
cout << array1[x] << "n";
x++;
}
}
Používajte len základné programovacie techniky, pretože to je moja prvá programovacia trieda. Ďakujem. Upraviť: opravil relačný operátor. Ale teraz mám nesprávne výsledky.
odpovede:
1 pre odpoveď č. 1Primárny problém je tu:
while (x >! k)
Pri prvej iterácii podmienka kontroluje, či (0 > !k)
, a k
nie je 0, takže !k
je 0, takže podmienka je nepravdivá a slučka sa nikdy nevykoná. Skúste použiť:
for (int x = 0; x < k; x++)
cout << array1[x] << "n";
Máte tiež problém v triediacej fáze vášho druhu bubliniek; Jediným opakovaním údajov je to len raz, čo nie je dosť na to, aby ste ich mohli usporiadať.
Napokon, niektoré otázky dizajnu.
- Mali by ste mať jednu funkciu na triedenie údajov a samostatnú funkciu na ich vytlačenie. Nespájajte tieto dve funkcie tak, ako ste to urobili.
- Vyhnite sa globálnym premenným. Pole a jeho operačnú dĺžku odovzdajte funkcii triedenia a funkcii tlače, ak ju máte.
2 pre odpoveď č. 2
while (x >! k)
To nie je "to, čo si myslíte, že áno. Ak chcete niečo, čo hovorí," zatiaľ čo x
nie je väčšia ako k
", chceš <=
, od tej doby array1[k]
isn "t jeden z prvkov, ktoré ste zoradili, aj keď pravdepodobne budete chcieť." <
.
while (x < k)
Poznač si to for
existuje pre tieto slučky:
for (int x = 0; x < k; x++) {
cout << array1[x] << "n";
}
Čo sa týka novej chyby, robíte len jedno kolo bubliniek vo vašej bublinkovej triede for
slučky. tiež i
nie je nikdy inicializovaná v main
, a i != 0000
nebude kontrolovať, či užívateľ doslova zadal 4 nuly. 0
.