Originariamente inviato da gaten
Io qui parlo di array.

Supponiamo di riempire dinamicamente un array, un vettore di 10 elementi interi.
Adesso il mio problema stà nel riempire l'array dal programma chiamante(main) e man mano che inserisco i valori, controllo se il nuovo numero inserito risulta essere maggiore di quelli precedenti. Capito?

es.

codice:
#include <stdio.h>

define N 10
int maxElement(int A, int numero, int* p);

int main(int argc, char *argv[])
{
int A[N];
int numero;
int i, max;

for(i=0; i<N; i++){
printf("Inserisci il nuovo numero:\n");
scanf("%d", numero);
A[i]=numero;
max=setArray(A, numero, &i);
}

printf("Il valore massimo dell'array:\t%d", max);
}

int maxElement(int A, int numero, int* p){
int massimo;
k=*p;

if(k==0)
massimo=A[k];
else if (A[k]>massimo)
massimo=A[k];

return massimo;
}
}
Ecco ho creato una cosa del genere, ma non sò se vada bene.
Come potete notare, io man mano che riempio l'array nel programma chiamante(main), nello stesso tempo, richiamo la funzione maxElement che mi permette di capire qual'è il massimo.
Va bene?

Grazie anticipatamente
la tua maxElement che fa? E soprattutto che è la setArray? Visto che i parametri sono gli stessi deduco che hai sbagliato a chiamarle con nomi diversi.
comunque
se k non è uguale a 0 (cioè sempre tranne il primo caso) massimo non viene inizializzato e quindi il controllo
else if (A[k] > massimo) è insensato perchè il valore di massimo è imprevedibile
In più non capisco perchè passi i per riferimento se tanto non la devi modificare.
insomma quella funzione non è corretta

Se vuoi come dici usare una funzione che ti trovi il massimo dell'array mentre la riempi, chiami
codice:
max=maxElement(A,  i);
e scrivi la funzione come
codice:
int maxElement(int* A,  int i){

int j;
int max = A[0]; 
//così risolvi anche il caso particolare della chiamata di questa funzione quando solo la prima "casella" del vettore è piena

   for(j=0; j<i; j++){ //controlla il vettore solo sino a dove è stato riempito
      if( A[j] > max) max = A[j];
  }

   return max;
}
Ti faccio comunque notare che è una soluzione enormemente inefficiente per l'uso che ne fai. Sarebbe molto più semplice (e soprattutto di costo lineare) prima completare tutto il vettore e solo dopo cercare il suo massimo una volta per tutte.
Quello che chiedi tu può avere senso solo se devi usare ogni massimo particolare, all'interno del for di riempimento, per qualche altro scopo o altra funzione. Questo potrebbe giustificare il costo quasi quadratico.