Calcularea minimului si maximului
algoritmica, informatica, maxim, minim, Olimpiada, programare
Pentru a calcula minimul si maximul dintr-un vector tot ce trebuie sa facem este sa parcurgem fiecare element si sa le comparam cu doua variabile ce reprezinta minimul si maxim,initial declarate cu valorile total opuse ce sunt asteptate.In cazul variabilei maxim o vom declara cu -1 daca stim ca valorile sunt sa spunem in intervalul [0,32000] si minimul il vom declara cu 32001.
/* Algoritm pentru aflarea maximului si minimului dintr'un vector*/
#include <stdio.h>
int main()
{
int n,i,v[101],max=-1,min=32001;
scanf("%d",&n);
for(i=0;i < n;i++)
{
scanf("%d",&v[i]);
}
for(i = 0; i < n; i++)
{
if(max < v[i])
{
max = v[i];
}
if(min > v[i])
{
min = v[i];
}
}
printf("Minimul este : %d\n Maximul este : %d\n",min,max);
return 0;
}





Nou pe 


Comentarii la "Calcularea minimului si maximului"
De ce sunt cele 2 variabile(min,max) deja initializate? Acest proiect l-as face si eu la fel doar ca nu le-as initializa. Eu cred ca astfel programelul ar fi mai flexibil. dar asta este doar parerea mea.
Frumoasa intrebare.Nu stiu daca e o problema atat de mare flexibilitatea in aceasta situatie, deoarece limitele valorilor intr-o problema sunt date intial si le poti decrementa si incrementa pentru a depasi aceste limite.
Stim bine ca o variabila neinitializata ia o valoare imensa insa nu putem influenta acest lucru.Poate fi -10 milioane sau poate fi 50 de mii.
Nu poti avea grija de acest factor si de aceea astfel il controlezi.Daca o declari global,vei sti totdeauna ca e 0,insa daca valoarea 0 se afla in intervalul in care primim valorile de intrare ce facem?
Sper ca ai inteles!
Puteai sa initializezi min si max cu primmul element din sir ca sa scapi de restrictziile de intervale .
Si care e mai e frumusetea?
Sincer ,nu tin minte sa fi folosit metoda de mai sus.Pentru cei care nu au inteles.
Inainte de al doilea for va trebui ceva de genul :
Nu e neaparat nevoie de acel vector. Se pot citi valorile pe rand fara a le memora. Mai ales ca ai precizat ca apoi nu vei mai avea nevoie de date. Risipa de spatiu!
Salut Mihai,
In general un elev asa este invatat sa lucreze.Daca as prelucra direct in O(1) memorie si O(n) timp s-ar uita la mine de ce asa, ca el nu a invatat astfel la scoala.Temele de aici nu sunt pentru a invata optimizarile de memorie si timp.
Pentru cei interesati practic nu aveam nevoie de a citi acele numar in vector.
scanf(“%d”,&max); min = max;
for(i = 0; i < n; i++)
{
scanf("%d",&x);
if(x > max) max = x;
if(x < min) min = x;
}
Frumos raspuns.Necesita o intrebare.Cum aflu maximul si minimul dintr-un vector folosind limbajul C?
Nu am inteles la ce te-ai referit prin acest comentariu. Raspunsul la intrebarea ta e defapt rezolvarea de mai sus.
Am si eu o intrebare.Daca vreau de exemplu sa calculez maximul dintre elementele impare ale unui vector cu ce trebuie initializat maximul…pt ca daca il initializam cu -1 si in vector toate valorile sunt pare el va afisa maximul ca fiind -1 ceea ce este fals pt ca valoarea asta nu exista in vector
@Allyna Caz in care, verifici la sfarsit daca max == -1 si poti sa afisezi un mesaj care sa precizeze ca nu s-au gasit valori impare