Calcularea minimului si maximului

18 Iulie, 2009 la 11:58 799 afisari

Etichete : , , , , ,

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;
}

Recomandam, pe aceeasi tema

Probleme algoritmica10 Comentarii
Tutoriale WEB – Concurs pentru programatori

Comentarii la "Calcularea minimului si maximului"

  1. 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.

  2. Avadanei Andrei says:

    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!

  3. anonym says:

    Puteai sa initializezi min si max cu primmul element din sir ca sa scapi de restrictziile de intervale .

  4. 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 :

    max = min = v[0];
    for(i = 1; i < n; i++)

  5. Mihai says:

    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!

  6. 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;
    }

  7. Lch says:

    Frumos raspuns.Necesita o intrebare.Cum aflu maximul si minimul dintr-un vector folosind limbajul C?

  8. Nu am inteles la ce te-ai referit prin acest comentariu. Raspunsul la intrebarea ta e defapt rezolvarea de mai sus. :)

  9. Allyna says:

    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

  10. Claudiu says:

    @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 :)

Lasa un comentariu