Cześć,
jestem adeptką, dopiero zaczynam bawić się w języku C. Robiąc teoretycznie błahe ćwiczenie, natknęłam na problem z którym nie mogę sobie poradzić. Mam nadzieję że mi pomożecie.
Zadanie brzmi:
Napisz program który na wejściu poprosi użytkownika o podanie 10 liczb całkowitych, po czym wyświetli spośród nich:
- tylko parzyste
- tylko parzyste (posortowane)
Oto mój kod. Starałam się dodac komentarze, by uzmysłowić Wam co miałam na myśli.
#include <stdio.h>
#include <conio.h>
// zwykla implementacja sortowania babelkowego
void babelek(int tablica[], int rozmiar)
{
int i, j, temp;
for (i = (rozmiar - 1); i > 0; i--)
{
for (j = 1; j <= i; j++)
{
if (tablica[j-1] > tablica[j])
{
temp = tablica[j-1];
tablica[j-1] = tablica[j];
tablica[j] = temp;
}
}
}
}
int main()
{
int j,n=10, k=0; // k wprowadzilam jako licznik liczb parzystych
int tab[n], tab1[n];
for(int i=1; i<=10; i++)
{
printf("Podaj liczbe nr: %d\n", i);
scanf("%d", &j);
tab[i]=j;
}
// 10 liczb wczytanych do tablicy "tab"
printf("Liczby parzyste to: \n");
printf("****SPRAWDZMY ILE WYNOSI K PRZED INKREMENTACJA****: %d\n", k);
for(int i=1; i<=10; i++)
{
if(tab[i]%2==0) // jesli element tablicy jest parzysty to
{
k++; // zwieksz licznik liczb parzystych o 1
printf("%d\n", tab[i]); // wyswietl ja
tab[i]=tab1[k]; // dodaj ja to tablicy liczb parzystych tab1 w miejsce o indeksie
//poczawszy od 0, bo na poczatku nie mamy zadnych liczb parzystych, jak jakas znajdzie
//to zwiekszy ja o 1, nastepnie o 1 i tak do konca, tj. do ilosci liczb parzystych ktora
//bedzie jednoczesnie rozmiarem tablicy. Jako ze "przesuwamy" sie o jeden, to elementy
//tablicy beda "uporzadkowane", jeden obok drugiego.
}
}
printf("****I PO INKREMENTACJI*****: %d\n",k );
babelek(tab1,k); // wywolanie funkcji, sortuje tablice zawierajaca liczby parzyste o rozmiare k
//ktora definiuje ile liczb parzystych zostalo "odnalezionych" w tablicy "tab"
for(int i=1; i<=k; i++)
printf("%d\n",tab1[i]);
getch();
return 0;
}
Program się kompiluje, przynajmniej pod Dev C++. Działa poprawnie do momentu w którym ma wyświetlić posortowane liczby parzyste. Poprawnie prosi 10-krotnie o podanie liczb, wczytuje je do tablicy, wypisuje parzyste liczby jednak przy sortowaniu wypluwa jakieś śmieci ;/
Zaznaczę tylko że nie chciała bym by ktoś za mnie napisał ten program, tj. wrzucił swoją wersję, bo nie pozwoli mi to na zrozumieniu własnego błędu w tak wydawało by się latwym programie.
Dzięki wielkie za pomoc :)