Witam,
Mam do rozwiązania zadanie w C, jednak z programowania jestem mocno przeciętny i pojawił się problem.
O ile udało mi się zrobić losowanie ciągu liczb, to niestety poległem na pozostałych punktach.
Czy ktoś może wskazać/poprawić, co jest źle lub jak być powinno? Może w ogóle inny pomysł na rozwiązanie zadania?
Proszę o pomoc.
Treść zadania:
Dany jest ciąg liczb całkowitych nieujemnych.
Napisać program dzielący ciąg na następujące grupy:
-zera,
-jedynki,
-liczby podzielne przez 2,
liczby podzielne przez 3, niepodzielne przez 2,
liczby podzielne przez 5, niepodzielne przez 2 i 3,
W poszczególnych grupach liczby powinny być ustawione w porządku niemalejącym.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
static unsigned long int liczba_od = 0; /* deklaracja wartości poczatkowej losowania */
unsigned int liczba_do; /* unsigned int - zmienne o wartosciach nieujemnych, końcowy zakres losowania */
int ciag;
int zera = 0;
int jeden = 0;
int podzieldwa = 0;
int podzieltrzy = 0;
int podzielpiec = 0;
printf("Ile liczb ma zawierac ciag? Podaj: \n");
scanf("%d", &liczba_do);
printf("Ciag wylosowanych %d liczb to:\n", liczba_do);
printf("\n");
int tablica[liczba_do];
srand(time(0)); /*ustawienie zarodka, aby random losował za kazdym razem inne liczby */
for (liczba_od; liczba_od<liczba_do; liczba_od++) {
ciag = (liczba_od + rand() % liczba_do); /* losowanie liczb z przedziału <liczba_od, liczba_do> */
tablica[liczba_od] = ciag;
// printf("%d, ", ciag);
}
liczba_od = 0; //zerowanie liczby od
tablica[liczba_od] = ciag;
for (liczba_od; liczba_od<liczba_do; liczba_od++) {
printf("%d, ", tablica[liczba_od]);
// printf("Element numer %d = %d\n", liczba_od, tablica[liczba_od]); //wyswietlenie tablicy, element po elemencie.
}
//char * zmiena = (char)tablica[5];
//printf("%d\n\n" ,tablica[4]);
for (liczba_od; ciag<liczba_do; liczba_od++) {
if (ciag == 0) {
zera = zera + 1;
}
else if (ciag = 1) {
jeden = jeden + 1;
}
if ((ciag % 2) == 0) { //dzielenie modulo
podzieldwa = podzieldwa + 1;
}
else if ((ciag % 3) == 0) {
podzieltrzy = podzieltrzy + 1;
}
else if ((ciag % 5) == 0) {
podzielpiec = podzielpiec + 1;
}
}
printf("\n");
printf("\n");
printf("Liczba zer w ciagu:\n");
printf("\n");
printf("%d", zera);
printf("\n");
printf("\n");
printf("Liczba jedynek w ciagu:\n");
printf("\n");
printf("%d", jeden);
printf("\n");
printf("\n");
printf("Liczby podzieldwa w ciagu:\n");
printf("\n");
printf("%d", podzieldwa);
printf("\n");
printf("\n");
printf("Liczby podzieltrzy w ciagu:\n");
printf("\n");
printf("%d", podzieltrzy);
printf("\n");
printf("\n");
printf("Liczby podzielpiec w ciagu:\n");
printf("\n");
printf("%d", podzielpiec);
printf("\n");
printf("\n");
system("PAUSE");
return 0;
}
/*
DO SORTOWANIA:
void boublesort(int table[], int size)
{
int i, j, temp;
for (i = 0; i<size; i++)
for (j=0; j<size-1; j++)
{
if (table[j] > table[j+1])
{
temp = table[j+1];
table[j+1] = table[j];
table[j] = temp;
}
}
}
*/