Znalezienie i wyświetlenie minimalnej liczby parzystej

0

Program ma znaleźć i podać minimalną liczbę, która jest jednocześnie parzysta. Niestety w niektórych wypadkach program nie działa jak powinien, np. 4 pudełka cukierki: 1, 2, 3, 4.

#include <iostream>
using namespace std;
int main()
{
    int pudelka;
    cin >> pudelka;
    int cukierki[pudelka];
    int ile = 0;
    do
    {
        cin >> cukierki[ile];
        ile++;
    } while(ile<pudelka);

    int ile2 = 0;
    int ilosc = 0;

    do
    {
        if(cukierki[ile2]%2==0)
            ilosc++;

        ile2++;
    } while(ile2<pudelka);

    if(ilosc==0)
    {
        cout << "0";
        return 0;
    }

    int ile3 = 0;
    int liczby[ilosc];
    int ile4 = 0;

    do
    {
        if(cukierki[ile3]%2==0)
            liczby[ile4]=cukierki[ile3];
        ile3++;
        ile4++;
    } while(ile3<ilosc);

    int min = liczby[0];

    for(int ile5 = 0; ile5<ilosc; ile5++)
    {
        if(min>liczby[ile5])
            min = liczby[ile5];

        ile5++;
    }

    cout << min;

}

dodanie znacznika <code class="cpp"> - @furious programming

1

Wybacz ale naprawdę ciężko się połapać pomiędzy ile3, ile2, ile1 etc....
Na szybkiego:

 
#include <iostream>

using namespace std;

int main()
{
    int iloscLiczb = 0;
    cin >> iloscLiczb;
    int tablica[iloscLiczb];
    for(int i = 0; i< iloscLiczb; i++)
    {
            cin>>tablica[i];
            }
    
    int najmniejszaWartosc=0;           
    for(int i=0; i<iloscLiczb; i++)
    {
            if(tablica[i]%2==0)
            {
                if(najmniejszaWartosc==0){najmniejszaWartosc = tablica[i];}                                  
                                  
                if(tablica[i] < najmniejszaWartosc)
                {najmniejszaWartosc=tablica[i];}
                
            }
            
            }
            
    cout << najmniejszaWartosc << endl;
    
    system("pause");
}

2

Najpierw trochę marudzenia:

  1. Kod powinien być w <code class="cpp">
, samo `<code></code>` nie wystarczy.
2) `ile`, `ile2`, `ile3`, `ile4` - naprawdę nie dało się wymyśleć lepszych nazw?
3) Niestandardowy kod w C++, rozmiar tablicy powinien być stałą:
```cpp
int cukierki[pudelka];
int liczby[ilosc];

Przechodząc do istoty problemu:

do
{
    if(cukierki[ile3]%2==0)
        liczby[ile4]=cukierki[ile3];
    ile3++;                        // używaj ++ile3 
    ile4++;                        // zwiększasz ile4 nawet jeśli nie dodałeś żadnej parzystej liczby do tablicy
} while(ile3<ilosc);

Powinno być raczej:

if (cukierki[ile3] % 2 == 0)
{
    liczby[ile4] = cukierki[ile3];
    ++ile4;
}
++ile3;
2
twonek napisał(a):

Jestem pewien, że @_13th_Dragon jest w stanie wyskrobać taki w mniej niż 5 linijkach :D - twonek 15 minut temu
Jakim cudem jeżeli Hello World 8 zajmuje, ale ... :

#include <iostream>
using namespace std;

int main()
  {
   unsigned count,value,found=0,min=0;
   for(cin>>count;(count--)&&(cin>>value);) if((!(value&1))&&((!(found++))||(min>value)) min=value;
   cout<<min<<endl;
   return 0;
  }
1

Hmm... niestety dalej mam problem. W przypadku jak podam wartość dla pudełek równą 4 a liczbę cukierków np. 1, 3, 2, 3 to program zwraca niezadowalający wynik.

Problem jest dalej w tej pętli, przez to że mylisz ile i ilosc. Lepiej będzie jak po prostu napiszesz od nowa, z sensownymi nazwami zmiennych. Najlepiej bez tablic.

1 użytkowników online, w tym zalogowanych: 0, gości: 1