Kezdőoldal » Számítástechnika » Programozás » Hogy lehet c++ - ban megcsinál...

Anonymus 0402 kérdése:

Hogy lehet c++ - ban megcsinálni azt hogy egy véletlen számokkal feltöltött tömb-ből kiválaszuk a legkisebb számot és kiiratjuk? A lényeg az lenne hogy ha több kisebb szám van akkor mindet irassa ki egymás után?!

Figyelt kérdés
2011. nov. 9. 22:44
 1/5 _Jessy_ ***** válasza:
a legkisebb érték mellett egy másik változóban rögzíted, hogy hányszor szerepel a tömbben. Ezután annyiszor iratod ki, ahányszor megtaláltad
2011. nov. 9. 23:16
Hasznos számodra ez a válasz?
 2/5 _Jessy_ ***** válasza:

int min = INT_MAX;

int count;

for(int i = 0; i < size; ++i)

{

if(randarray[i] < min)

{

count = 1;

min = randarray[i];

}

else if(randarray[i] == min)

{

++count;

}

}

min-ben a minimum értéke, count-ban, hogy hányszor szerepel a tömbben.

2011. nov. 9. 23:40
Hasznos számodra ez a válasz?
 3/5 A kérdező kommentje:

Amit te küldtél az nem működi! nem tiszta h mit is kénecsinálni! itt a saját forrásom!:


#include <iostream>

#include <ctime>

using namespace std;

int main()

{

/*setlocale (LC_ALL,"hun");*/

srand(time(NULL));

char k=219;

int tomb[75],min=0,index,i,j,l,m,index2=0;


cout << "Sydney es Los Angeles legvonalban mert tavolsaga megkozelitoleg 7500km. \n";

cout << "\n";

for(i=0;i<75;i++)

{

tomb[i]=rand() % 50 + 0;

cout << i+1 << ". " << tomb[i] << "m : \t";

for(l=0;l<tomb[i];l++){cout<<k;}

cout<<"\n";


}

cout << "\n";

int db=0;

for (j=1;j<=75;j++)

{

if (tomb[j]==0) {cout <<"\n";}

else if (tomb[j]<tomb[min])

{

min=j;index=j;

//if(tomb[j]==tomb[min])

{

for(m=0;m<tomb[min];m++)

{

cout<<tomb[j]<<"\n";db=db+1;

}

}

//cout << index+1 << ". " << tomb[min] << "m" << " A legalacsonyabb sziget! \n";

}


}


cout << "\n";

cout << index+1 << ". " << tomb[min] << "m" << " A legalacsonyabb sziget! \n";


cout << "\n";

system ("pause");

return 0;


}


a program megkeresi a legkisebb számot és kiiratja a legkisebb számot és a hozzá tartozó indexet, de ha több kisebb szám van akkor is csak azt az egyet irja ki. a lényeg az lenne h ha több (pl.:1-es van a tömbbe)akkor mindet irassa ki!

2011. nov. 10. 01:12
 4/5 _Jessy_ ***** válasza:

Nekem az nem tiszta, hogy a te kódod mit csinál, vagy egyáltalán megtalálja-e a legkisebb elemet. Az amit leírtam, működik, csak nem tárolja el a megtalált minimum indexeit, de kicsit átírva magyarázattal remélem már érthető lesz:


int size = 75;

int* tomb = new int[size];

srand(time(NULL));

char b = (char)219;

/*

*Tömb feltöltése 1-50 közötti számokkal, közben kiíratás

*/

for(int i = 0; i < size; ++i)

{

tomb[i] = (rand() % 50) + 1;

cout << i+1 << ". " << tomb[i] << "\t";

for(int j = 0; j < tomb[i]; ++j)

{

cout << b;

}

cout << "\n";

}


/*

*Most akkor jöjjön a minimum(ok) megkeresése, kiíratása indexekkel együtt

*/



int min = INT_MAX; /*Tegyük fel, hogy ez a minimum*/

int *idx = new int[size];/*Ebbe a tömbbe kerülnek majd az indexek*/

int count = 0; /*Ebben tároljuk, hogy hányszor szerepel a megtalált minimális elem*/


/*Nna akkor kezdjünk el keresgélni*/

for(int i = 0; i < size; ++i)

{

if(tomb[i] < min)

{

/*Találtunk egy elemet, ami az eddigi legkisebb, gyorsan jegyezzük fel*/

count = 1;/*Eddig egy van belőle*/

idx[count - 1] = i;/*idx tömbbe belerakjuk, hogy hol találtuk, csak ennyivel bővült az előző kód*/

min = tomb[i]; /*Megjegyezzük az értékét.*/

}else if(tomb[i] == min)

{

/*Nos találtunk az eddigi minimummal megegyezőt, hát írjuk fel ezt is a kéménybe korommal*/

++count;/*A talált minimumok számát meg kell növelni*/

idx[count - 1] = i;/*idx tömbbe belerakjuk, hogy hol találtuk*/

/*Az értéket felesleges megjegyezni, mert már megvan...*/

}

}


/*

*Akkor most irassuk ki, hogy mit is találtunk:

*min --> ez a minimális elem

*count --> ez mondja meg, hány darabunk van belőle

*idx --> ebben a tömben van [0-count-1] között az, hogy melyik indexeken volt az adott elem

*/

cout << "A tömb legkisebb eleme: " << min << " és találtam belőle " << count << " darabot.\n";

for(int i = 0; i < count; ++i)

{

cout << idx[i] + 1 << ". " << tomb[idx[i]] << "\t";

for(int j = 0; j < tomb[idx[i]]; ++j)

{

cout << b;

}

cout << "\n";

}

cout << "Nyomj entert a folytatáshoz.";

char c;

cin >> c;

2011. nov. 10. 09:35
Hasznos számodra ez a válasz?
 5/5 A kérdező kommentje:
fhúúúú! naggyon jóóó! naggyon széépen köszönöm! :)
2011. nov. 10. 12:08

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!