Készíts programot, amely bekér 50 számot és kiszámolja a negatívok szorzatát illetve a pozitívok összegét. - hogyan lehet megoldani?
@#31:
Nem tudom, mi a bajod vele. Valódi igazságok, bárki által elismerhető, mély szentenciák. Csak az „A kérdező kommentje:” az, ami nagyon furcsán hat a tetején.
Rég megírhattátok volna neki, és nem nyúlna 3 oldalasra egy ilyen téma.
1 perc komoly eredménye:
int szamok[50];
for(int i = 0; i < 49; i++)
{
std::cin >> szamok[i];
}
int osszeadasOsszeg = 0;
int szorzasOsszeg = 1;
for (int i = 0; i < 49; i++)
{
if(szamok[i] < 0)
{
szorzasOsszeg *= szamok[i];
}
else if(szamok[i] > 0)
{
osszeadasOsszeg += szamok[i];
}
}
#34 Neked könnyű, te már tudtad hogy milyen programnyelv. :)
Most lehet itt a válaszadókat szapulni, de alapvetően ez az oldal úgy van kitalálva, hogy a válaszok nem csak a kérdezőknek segítenek, mert általános problémák vannak megfogalmazva, nem pedig a csütörtöki házi feladat.
Ennek ellenére mégis van aki megírja hogy 100 Euró hány forint, ahelyett hogy belinkelne egy valutaváltó oldalt. És mondom... mi vagyunk lecseszve meg lenézve, mindezt egy ilyen pötsömnyi feladatanál. szánalom az egész,
@#34:
1. Én már megírtam, csak akkor még nem volt szó arról, hogy c++-ban kell. Igaz, a csúfondárosan agyonbarokkosított FreeBASIC sem volt valószínűsíthető követelmény, de a program működik, és nem gond átírni, ha Kérdező gondolkodásra is hajlandó.
2. Minek kell tömböt használni? Persze, lehet, de szükségtelen.
3. Ha a bevitt számok között egyáltalán nincs negatív, a programod szerintem 1 értéket ad szorzatként 0 helyett. Ennek a kiküszöbölésre bonyolítottam a magamét azzal, hogy az első negatív bevitelt másképp kezeltem.
Egyszerűen megérthetőre írtam, ha úgy írom meg ahogy alapból tenném nem értené meg, pl:
auto numbers = std::array<int, 50>{};
for (auto& num : numbers)
{
std::cin >> num;
}
auto sum = 0;
auto product = 0;
std::tie(sum, product) = std::accumulate(numbers.cbegin(), numbers.cend(), std::pair<int, int>{}, [](auto& ipair, const auto& val)
{
if (val > 0)
{
std::get<0>(ipair) += val;
}
else if (val < 0)
{
if(std::get<1>(ipair) == 0)
{
std::get<1>(ipair) = val;
}
else
{
std::get<1>(ipair) *= val;
}
}
return ipair;
});
std::cout << "osszeg: " << sum << '\n';
std::cout << "szorzat: " << product << '\n';
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!