ďťż

Ładny brzuch

Witam. Mam mały problem z programem
napisanym w języku C (sortowanie bąbelkowe 10 wpisywanych elementów z klawiatury).
Otóż wykrzacza mi się po wpisaniu np. 3 4 5 0 i dostaję wynik
"Liczba 1 to -1076468004" i dalej juz bida :(
Trzeba coś wykombinować, aby przy wpisaniu
samego 0 lub 0 jako którejś z kolei liczby program się nie wykopywał.
Z tego co wiem, muszę zawrzeć w nim warunek
brzegowy, niestety po raz pierwszy o czymś takim
słyszę. Zapewne trzeba będzie dopisać 1 krótką linijkę kodu,
mam nadzieję, że mi ktoś KONRKETNIE wytknie błąd oraz napisze,
jak kod powinien poprawnie wyglądać (nie jestem w stanie sam
poprawić ze względu na mega podstawową znajomość C).
Dla ułatwienia zamieszczam treść programu:

#include <stdio.h> #define n 10 int main(void) { int i, tabl[10]; i=0; while (i<n) { scanf("%i",&tabl[i++]); if (tabl[i-1]==0) {i=n;}; }; { int i,j; int p; for(i=0;i<n;i++) for(j=0;j<n-1;j++) if (tabl[j]>tabl[j+1]) { p=tabl[j]; tabl[j]=tabl[j+1]; tabl[j+1]=p; } } i=0; while (i<n) { if (tabl[i]==0) {i=n;} else { printf("Liczba %i to %i\n",i,tabl[i++] ); }; }; }

Za wszelką pomoc serdecznie dziękuję ;)

PS. Gdyby ktoś widział niesformatowany tekst to zapraszam tutaj CLICK lub CLICK :)
Użytkownik Sponsorek edytował ten post 22 listopad 2007, 19:49


Na początek sformatuj ładniej kod (wcięcia) bo tutaj prawie nic nie widać ;).
// Błąd: Przekroczenie zakresu wczytywanych danych przy sortowaniu. Sortowanie niezainicjalizowanych danych.
Użytkownik Ali240 edytował ten post 22 listopad 2007, 19:28
Łatwiej będziesz jak napiszesz co ten program ma konkretnie robić :-) (czy np zero ma kończyć ciąg liczb). Bo póki co kod jest bez sensu poczynając od wczytywania "i" danych a sortowaniu "n" elementów ... już nie wspominając o niepotrzebnych średnikach gdzie popadnie :-).
Użytkownik NeVeS edytował ten post 22 listopad 2007, 21:59
Program ma sortowac metoda babelkowa 10 liczb wpisywanych z klawiatury od najmniejszej do najwiekszej i je wypisac Liczba 1 to ... itd :)



ale dodatkowa zasada to ze 0 przerywa ciag? pomysl co sie dzieje jesli wpiszesz 0 np. jako 5 liczba. od 6 do 10 komorki pamieci przechowuja losowe dane. pozniej te dane sortujesz, wiec na pierwsza pozycje wchodzi ci losowa dana o najmniejszej wartosci :) zainicjum wszystko 0rami przed pobieraniem wartosci, albo wyrzuc tablice poza main, to bedzie dzialac. ale druga sprawa - petle wypisaywania przerywasz gdy aktualna wartosc to 0. tylko ze te wartosci sa posortowane, wiec 0 bedzie pierwsze, nie ostatnie :)

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •