Witam, posiadam taki program, analizuję go, wszystko fajnie, kod coraz lepiej rozumiem, ale przy kompilacji wyskakuje mi: [Error] invalid conversion from 'void*' to 'int*' [-fpermissive]. Zadanie jest od wykładowcy i się normalni mi kompilowało na zajęciach, czy możliwe, że mam coś z kompilatorem? Wykluczam to, że przez przypadek coś zmieniłem w kodzie, bo mam kilka kopii tego pr i we wszystkich jest tak samo. Z góry dziękuję za pomoc
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ILE 5
void wczytaj(int, int *);
void wyswietl(int, int *);
int suma(int, int *);
int iloczyn(int, int *);
void losuj_tab(int, int *, int, int);
int losuj_element(int, int *);
void zamien(int *, int, int);
void mieszaj(int, int *);
int szukaj_min(int, int *);
int szukaj_max(int, int *);
int
main(void)
{
/* int liczby[ILE]; */
int *liczby;
/* zamiast ILE mozemy podac wartosc wczytana z klawiatury i odwolywac
* sie do niej wszedzie tam gdzie odwolujemy sie do ILE
*/
liczby = malloc(sizeof(int) * ILE);
/* inicjalizacja generatora liczb losowych */
srand(time(NULL));
/* wczytaj(ILE, liczby); */
losuj_tab(ILE, liczby, 1, 7);
wyswietl(ILE, liczby);
printf("Wylosowany element: %d\n", losuj_element(ILE, liczby));
printf("suma = %d, iloczyn = %d\n", suma(ILE, liczby), iloczyn(ILE, liczby));
printf("Indeks el. max = %d, el. min = %d\n", szukaj_max(ILE, liczby), szukaj_min(ILE, liczby));
mieszaj(ILE, liczby);
wyswietl(ILE, liczby);
return 0;
}
void
wczytaj(int rozm, int tab[])
{
int i;
for (i = 0; i < rozm; i++) {
printf("Podaj liczbe numer %d: ", i+1);
scanf("%d", &tab[i]);
}
}
void
wyswietl(int rozm, int tab[])
{
int i;
for (i = 0; i < rozm; i++)
printf("tab[%d] = %d\n", i, tab[i]);
return;
}
int
suma(int rozm, int tab[])
{
int i, r = 0;
for (i = 0; i < rozm; i++)
r += tab[i];
return r;
}
int
iloczyn(int rozm, int tab[])
{
int i, r = 1;
for (i = 0; i < rozm; i++) {
if (tab[i] == 0) return 0;
else r *= tab[i];
}
return r;
}
void
losuj_tab(int rozm, int tab[], int min, int max)
{
int i;
for (i = 0; i < rozm; i++) {
tab[i] = min + (rand() % (max+1));
}
return;
}
int losuj_element(int rozm, int tab[])
{
return tab[rand() % rozm];
}
void zamien(int tab[], int i, int j)
{
int t;
printf("Zamiana %d z %d\n", i, j);
if (i != j) {
t = tab[i];
tab[i] = tab[j];
tab[j] = t;
}
}
void mieszaj(int rozm, int tab[])
{
int i;
for (i = 0; i < rozm; i++) {
zamien(tab, i, rand() % rozm);
}
}
int szukaj_min(int rozm, int tab[])
{
int i;
int r = 0;
for (i = 1; i < rozm; i++) {
if (tab[i] < tab[r]) {
r = i;
}
}
return r;
}
int szukaj_max(int rozm, int tab[])
{
int i;
int r = 0;
for (i = 1; i < rozm; i++) {
if (tab[i] > tab[r]) {
r = i;
}
}
return r;
}
c#
w tagach? ;)karolinaavoid
) to nie musisz tego returna tam dawać:)
radi0071