Ciao a tutti, sono quello dell'esercizio del magazzino, se vi ricordate... Sono comunque riuscito a farlo bene quell'esercizio
Ora... Ho questo programma qui:
"Si scriva un programma che allochi dinamicamente un vettore di interi e che effettui le operazioni di: - ricerca di un valore all'interno del vettore restituendo la posizione se il valore è presente - ricerca del valore massimo e di quello minimo presenti nel vettore - reverse degli elementi del vettore Il tutto lavorando sui valori del vettore sia tramite notazione vettoriale che tramite l’aritmetica dei puntatori."
Io l'ho fatto, ho solo un problema nel trovare il valore massimo dell'array.
Ecco il mio codice, andate alla fine per la parte interessata.
#include <stdio.h>
#include <stdlib.h>
void main(void)
{
int *P;
int i = 0, k = 0, numCerca, numCelle, valori, scelta = 0;
printf("Inserire il numero di celle del vettore: ");
scanf("%d", &numCelle);
P = (int*)malloc(numCelle * sizeof(int));
for(i = 1; i <= numCelle; i++)
{
printf("Inserire il numero da inserire nella cella numero %d: ", i);
scanf("%d", &valori);
P[i] = valori;
}
printf("Vuoi stampare a video i numeri contenuti nell'array?\n");
printf("Scrivere 0 per confermare, 1 per saltare questa fase.\n");
scanf("%d", &scelta);
if(scelta == 0)
{
for(i = 1; i <= numCelle; i++)
{
printf("%d\n", *(P + i));
}
}
puts("");
int flag = 0, scelta_2, scelta_3;
printf("Si vuole ricerecare un elemento dell'array?\n");
printf("Scrivere 0 per continuare, 1 per saltare questa fase di programma\n");
scanf("%d", &scelta_2);
if(scelta_2 == 0)
{
printf("Che elemento si vuole ricercare?\n");
scanf("%d", &scelta_3);
for(i = 1; i <= numCelle; i++)
{
if(scelta_3 == P[i])
{
printf("L'elemento e\' presente nella cella numero %d", i);
puts("");
flag = 1;
}
}
if(flag == 0)
{
printf("L'elemento non e\' stato trovato\n");
flag = 0;
}
}
puts("");
int scelta_4 = 0;
printf("Vuoi eseguire il reverse degli elementi del vettore?\n");
printf("Scrivere 0 per continuare, 1 per saltare questa fase di programma\n");
scanf("%d", &scelta_4);
if(scelta_4 == 0)
{
for(i = numCelle; i >= 1; )
{
printf("%d\n", P[i]);
scelta_4 = 0;
i--;
}
}
puts("");
int scelta_5 = 0, maggiore = 0, posizione = 0, minore = 0, scelta_6;
printf("Si desidera trovare l'elemento piu' grande dell'array?\n");
printf("Scrivere 0 per confermare, 1 per saltare questa fase di programma\n");
scanf("%d", &scelta_5);
if(scelta_5 == 0)
{
maggiore = P[0];
for(i = 0; i < numCelle; i++)
{
if(maggiore < P[i])
{
maggiore = P[i];
}
}
printf("Il numero maggiore e\': %d\n", maggiore);
}
printf("Si desidera trovare l'elemento più piccolo dell'array?\n");
printf("Scrivere 0 per continuare, 1 per saltare questa fase di programma\n");
scanf("%d", &scelta_6);
if(scelta_6 == 0)
{
minore = P[0];
for(i = 0; i < numCelle; i++)
{
if(minore > P[i])
{
minore = P[i];
}
}
printf("Il numero minore e\': %d\n", minore);
}
puts("");
system("pause");
return 0;
}
Il problema è che il valore minimo lo trova tranquillamente, quello massimo no! Eppure il procedimento seguito è lo stesso, la dichiarazione e inizializzazione è la stessa, ma il programma non mi stampa il valore massimo bensì un numero che non c'entra niente! Sapreste illuminarmi?
Grazie mille in anticipo.