Riporto la soluzione, da me scritta, di un esercizio assegnatomi a lezione.
codice:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 10
int *Crea(void);
void Stampa(int *);
int Min(int *; int);
int MaxC(int *; int *; int);
void f(int *);
int main()
{
int *V = (int *)malloc(sizeof(int)*N);
V = Crea();
Stampa(V);
f(V);
return 0;
}
int *Crea()
{
int i;
int *AUX = (int *)malloc(sizeof(int)*N);
srand((unsigned)time(NULL));
for(i=0; i<N; i++)
AUX[ i] = rand()%25+1;
return AUX;
}
void Stampa(int *X)
{
int i;
for(i=0; i<N; i++)
printf("%d ", X[ i]);
printf("\n");
}
int Min(int *V; int i)
{
int j=0;
while (j<i)
if (V[j] < V[ i])
return 0;
else
j++;
return 1;
}
int MaxC(int *V; int *C; int i)
{
int j;
int maxC = -1;
for(j=0; j<i; j++)
if (V[ i] > V[j])
if (C[j] > maxC)
maxC = C[j];
return maxC;
}
void f(int *V)
{
int i;
int *C = (int *)malloc(sizeof(int)*N);
for(i=0; i<N; i++)
if (i==0)
C[ i] = 1;
else
if (Min(V,i) == 1)
C[ i] = 1;
else
C[ i] = 1+MaxC(V,C,i);
Stampa(C);
}
Concettualmente la soluzione è corretta! Ma il codice riporta i seguenti errori:
gcc -Wall -o "main" "main.c" (nella cartella: /home/peppe/Scrivania/Nuova cartella)
main.c:9:1: error: parameter ‘({anonymous})’ has just a forward declaration
main.c:10:1: error: parameter ‘({anonymous})’ has just a forward declaration
main.c:10:1: error: parameter ‘({anonymous})’ has just a forward declaration
main.c:42:14: error: parameter ‘V’ has just a forward declaration
main.c: In function ‘Min’:
main.c:46:7: error: ‘V’ undeclared (first use in this function)
main.c:46:7: note: each undeclared identifier is reported only once for each function it appears in
main.c: At top level:
main.c:53:23: error: parameter ‘C’ has just a forward declaration
main.c:53:15: error: parameter ‘V’ has just a forward declaration
main.c: In function ‘MaxC’:
main.c:58:7: error: ‘V’ undeclared (first use in this function)
main.c:59:8: error: ‘C’ undeclared (first use in this function)
Compilazione fallita.
Gli errori individuati dal compilatore, a quanto ho capito, sono da ricercare nelle dichiarazioni delle funzioni Min e MaxC...ma non riesco ad individuarli!!