Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Duża liczba - nie powinno jej być
artgrus
post 10.10.2010, 17:56:19
Post #1





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 27.03.2008

Ostrzeżenie: (10%)
X----


Witam. Jako że mamy niedzielę, to nudziło mi się. Proszę o napisanie w czym jest błąd. Jest to program w C++ (wiadomo, wiadomo - większość z was lovit ten język, mi on wydaje się jednym z trudniejszych do nauczenia, lecz nie taki diabeł straszny, kiedy się pracuje nad mniejszymi programami).

Napisałem sortowanie przez wstawianie (plus porównywanie ze sobą elementów z tablicy), Niema tu main() ani nagłówków. Oto kod:
  1. int l; // male L: licznik wstawiajacy liczby do tablicy
  2. int j; // licznik petli sortujacej
  3. int n; // ilosc elementow
  4. int p; // element sortowanego ciagu
  5. int i; // zapomnialem biggrin.gif
  6. int lp; // liczenie porownan
  7.  
  8. cout << "Ile elementow do posortowania? ";
  9. cin >> n;
  10.  
  11. int a['n']; // tablica n-elementowa
  12.  
  13. cout << "\n";
  14.  
  15. for (l=0; l<n; l++)
  16. {
  17. cout << (l+1) << "z" << n << ": ";
  18. cin >> a[l];
  19. }
  20.  
  21. cout << "\nPorownania:\n";
  22.  
  23. // Zamiast j=2 ustawilem na j=0.
  24. // Gdyby j=2, to dla dwoch elementow nie posortuje
  25. for (j=1; j<n; j++)
  26. {
  27. p = a[j];
  28. i = j-1;
  29. // Zamiast i>0 ustawilem na j>=0
  30. while ((i>=0) && (a[i]>p))
  31. {
  32. a[i+1]=a[i];
  33. i=i-1;
  34. }
  35. a[i+1]=p;
  36.  
  37. // Pierwsze porownanie
  38. if (a[i] < a[j])
  39. {
  40. lp++;
  41. cout << a[i] << " < " << a[j] << endl;
  42. }
  43. else if (a[i] > a[j])
  44. {
  45. lp++;
  46. cout << a[i] << " > " << a[j] << endl;
  47. }
  48. else
  49. {
  50. lp++;
  51. cout << a[i] << " = " << a[j] << endl;
  52. }
  53. // Drugie porownanie
  54. if (a[j] < p)
  55. {
  56. lp++;
  57. cout << a[j] << " < " << p << endl;
  58. }
  59. else if (a[j] > p)
  60. {
  61. lp++;
  62. cout << a[j] << " > " << p << endl;
  63. }
  64. else
  65. {
  66. lp++;
  67. cout << a[j] << " = " << p << endl;
  68. }
  69. }
  70.  
  71. cout << "---------------------" << endl;
  72.  
  73. cout << "\nPo sortowaniu:" << endl;
  74. for (int x=0; x<n; x++)
  75. {
  76. cout << a[x];
  77. cout << endl;
  78. }
  79. getch();
  80. return 0;


Program działa. Teraz napiszę poniżej co robię a co mi pokazuje - od razu dodam że pokazuje mi baaardzo duże liczby których teoretycznie (niewiem jak to praktycznie) - nie powinno być. Dobra.

Przykład 1:
Uruchamiam program. Pokazuje mi się: Ile elementow do posortowania? Wpisuję 3. Enter. Kolejno podaję 3 elementy aby je zapisać do tablicy a tablicę potem posortować:
1z3: 9
2z3: 5
3z3: -1

Enter.
Pojawia się taki tekścik:
Porownania:
1306224 > 9
9 > 5
1306224 > 9
9 > -1



Przykład 2:
Uruchamiam program. Pokazuje mi się: Ile elementow do posortowania? Wpisuję 3. Enter. Kolejno podaję 3 elementy aby je zapisać do tablicy a tablicę potem posortować:
1z3: 9
2z3: 4
3z3: 8

Enter.
Pojawia się taki tekścik:
Porownania:
1306224 > 9
9 > 4
4 < 9
9 > 8



Przykład 3:
Uruchamiam program. Pokazuje mi się: Ile elementow do posortowania? Wpisuję 3. Enter. Kolejno podaję 3 elementy aby je zapisać do tablicy a tablicę potem posortować:
1z3: 9
2z3: 15
3z3: 7

Enter.
Pojawia się taki tekścik:
Porownania:
9 < 15
15 = 15
1306224 > 15
15 > 7




Pytanie:

Dlaczego w porównaniach pokazuje mi te duże liczby, kiedy to ja ich nie wpisywałem?

Czy jest jakiś sposób na wykluczenie takich problemów?

Ten post edytował Spawnm 10.10.2010, 18:40:49
Powód edycji: [Spawnm]:BBcode
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.07.2025 - 10:50