Calcularea minimului si maximului
15Pentru 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; }
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 🙂
Salut, am o intrebare. Cum pot calcula minimul si maximul a 2 numere fara a folosi instructiunea IF, dar in pseudocod sau limbaj C++, nu cu vectori. multumesc mult!
@Abcdalex
Scuze pentru răspunsul întârziat. Se poate, dar nu în pseudocod, deoarece te vei folosi de un operator (numit operator de condiție) care nu apare în pseudocod. Codul arată astfel:
<code#include
using namespace std;
int main()
{
int a, b;
cin >> a >> b;
a<b ? cout<< a << " e minimul" : cout<< b <
Poți citi mai multe despre operatorii C++ aici.
Au apărut ceva probleme cu codul, așa că l-am pus pe pastebin.
ok, mersi mult, mi-ai fost de ajutor.
cine poate sami ajute am de scris programu cu tablouri unidimensionale dam de la tastatura vectorul 1 -2 3 4 5 6 -7 8 elementele negative sint -2 si -7 trebuie sa calculam maxim si minim dintre aceste numere negative adica dintre numerele 3 4 5 6