Dzień dobry.
Dostałem zadanie:
Wprowadzić ciąg liczb, którego weilkości n. Wprowadzić dwie dodatkowe liczby a i b. We wprowadzonym ciągu wszystkie liczby, które są podzielone przez a i b , zamienić na zero. Wyprowadzić nowy ciąg.
Napisałem kod:
#include <stdio.h>
#include <stdlib.h>
void readInput(char*, void*);
void replace_int(int*, size_t, int, int, int);
int main(int argc, char** argv){
size_t size=0;
int a=0;
int b=0;
printf("Wprowadz ilosc liczb: ");
readInput("%Iu", &size);
printf("Wprowadz pierwsza liczbe do sprawdza podzielnosci: ");
readInput("%d", &a);
printf("Wprowadz druga liczbe do sprawdzania podzielnosci: ");
readInput("%d", &b);
int* numbers = (int*)calloc(size, sizeof(int));
for(size_t i=0;i<size;++i){
printf("Wprowadz %Iu/%Iu liczbe do tablicy: ", i+1, size);
readInput("%d", &numbers[i]);
}
replace_int(numbers, size, a, b, 0);
for(size_t i=0;i<size;++i){
printf("%d ", numbers[i]);
}
free(numbers);
return 0;
}
void replace_int(int* tab, size_t tab_size, int div_a, int div_b, int new_val){
if(tab==NULL) return;
for(size_t i=0;i<tab_size;++i){
int mod = tab[i]%div_a + tab[i]%div_b;
if(!mod)
tab[i] = new_val;
}
}
void readInput(char* format, void* variable){
int isInputValid = scanf(format, variable);
if(!isInputValid)
do{
fflush(stdin);
isInputValid = scanf(format, variable);
}while(!isInputValid);
}
Ogólnie to w C nie piszę, wiele rzeczy mi się myliło z C++, więc prosiłbym o wszelkie uwagi.
Dziękuję z góry.
Pozdrawiam.