Salve, sono uno studente del primo anno di informatica itps e il professore ci ha assegnato la creazione di un programma che prenda n float e restituisca la loro media, i valori massimo e minimo con relativa posizione (ovvero quando sono stati inseriti). per rendere però il compito più complicato ci ha richiesto di utilizzare un solo ciclo all'interno del programma.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int main(void) {
int n;
float s=0;
float media, min, max;
int i=0;
char *indmin, *indmax, *strint;
setbuf(stdout, NULL);
printf ("inserisci il numero di elementi che vuoi inserire\n");
scanf("%d", &n);
float numeri[n];
for(i=0; i<=n-1; i++){
printf ("inserisci il %d° elemento \n", i+1);
scanf("%f", &numeri[i]);
s=s+numeri[i];
if(i==0){
min=numeri[i];
max=numeri[i];
indmin="1° elemento\n";
indmax="1° elemento\n";
}
[color=#FF0000]else[/color]{
if(numeri[i]<min){
indmin="";
min=numeri[i];
sprintf(strint, "%d° elemento\n", i+1);
strcpy(indmin, strint);
}
else if(numeri[i]==min){
sprintf(strint, "%d° elemento\n", i+1);
strcat(indmin, strint);
}
if(numeri[i]>max){
indmax="";
max=numeri[i];
sprintf(strint, "%d° elemento\n", i+1);
strcpy(indmax, strint);
}
else if(numeri[i]==max){
sprintf(strint, "%d° elemento\n", i+1);
strcat(indmax, strint);
}
}
if(i==n-1){
media=s/n;
printf("la media è %f\nil valore minimo è %f ed è stato inserito come:\n%sil valore massimo è %f ed è stato inserito come:\n%s", media, min, indmin, max, indmax);
}
}
}
il programma però crasha quando entra nell'else segnato in rosso o meglio crasha quando raggiunge la funzione strcpy o la funzione strcat e non ne capisco il perchè. la domanda non è su come ottimizzare il programma ma sul perchè quelle istruzioni mandano in crash il programma.
spero in una celere risposta
grazie in anticipo
ps: credo che il problema sia dato dal indmin e indmax all'interno di quelle funzioni ma non capisco perchè