Witam serdecznie,
Mój wykładowca zadał mi dość głupią pracę domową. Polega ona na stworzeniu funkcji o takim prototypie:
int yo (int *source, int ns, int *counter, int *result);
gdzie source to tablica wyjściowa składająca się z liczb, ns to liczba elementów owej tablicy, counter1 to tablica składająca się z liczb, które mówią o tym, ile razy element o tym samym indeksie z tablicy source ma pojawić się w tablicy końcowej - result.
Mój program wygląda tak (przykładowe dane):
#include <stdio.h>
#include <conio.h>
#include <string.h>
int yo (int *source, int ns, int *counter, int *result);
int main() {
int tab[] = {1, 2, 3, 4, 7, 9};
int n = 6;
int counter1[] = {0, 3, 1, 0, 4, 2};
int final_result[100];
int i;
int k;
k = yo(tab, n, counter1, final_result);
for (i=0; i<k; i++) {
printf("%d\n", final_result[i]);
}
getch();
return 0;
}
int yo (int *source, int ns, int *counter, int *result) {
int i, j;
int k = 0;
/*
for (i=0; i<ns; i++) {
printf("%d\n", *(source+i));
}
*/
for (i=0; i<ns; i++) {
for (j=0; j<counter[i]; j++) {
result[k+j+1] = source[i];
k++;
}
}
return k;
}
Niestety w outpucie pojawiają się poza normalnymi dziwne liczby (np -858993460) zamiast tych, które powinny się tam pojawić (w tym wypadku to 2,2,2,3,7,7,7,7,9,9). Co robię źle? Proszę o pomoc.
Pozdrawiam