Już ostatnie pytanie z serii alokacji pamięci. Mianowicie, mam program do napisania, aby znajdywał minimum i maximum z podanych liczb oraz wyświetlał ich pozycje. Tylko, że znów coś z tymi pozycjami jest nie tak.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,n=0,tab[2]={0},ile1=0,ile2=0;
float *arr,max=0,min;
int *data1,*data2;
data1 = (int*) malloc (1);
data2 = (int*) malloc (1);
printf("\nIlosc liczb do zapamietania: ");
scanf("%d",&i);
arr = (float*) calloc (i,sizeof(float));
if (!arr)
{
printf("Blad alokacji pamieci!");
}
do {
printf("\nLiczba nr %d: ",n+1);
scanf("%f", &arr[n]);
n++;
} while (n<i);
min = arr[0];
for (n=0;n<i;n++)
{
if (max<arr[n])
{
max = arr[n];
tab[0] = n+1;
}
if (min>=arr[n])
{
min = arr[n];
tab[1] = n+1;
}
}
/*printf("\nMax to: %.2f (wprowadzona jako %d liczba).",max,tab[0]);
printf("\nMin to: %.2f (wprowadzona jako %d liczba).",min,tab[1]);*/
data1[0]=tab[1];
data2[0]=tab[0];
for (n=0;n<i;n++)
{
if (arr[n]==min)
{
ile1++;
data1 = (int*) calloc (ile1+1,sizeof(int));
data1[ile1-1]=n;
} else if (arr[n]==max){
ile2++;
data2 = (int*) calloc (ile2+1,sizeof(int));
data2[ile2-1]=n;
}
}
for (n=0;n<ile1;n++)
{
printf("\n\nWartosc minimalna to %.2f i wystapila jako %d liczba.",min, data1[n]+1);
}
for (n=0;n<ile2;n++)
{
printf("\n\nWartosc maksymalna to %.2f i wystapila jako %d liczba.",max,data2[n]+1);
}
printf("\n\n");
free(arr);
getchar();
return EXIT_SUCCESS;
}