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?!
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.
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!
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;
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!