• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed C++ Program nie działa jak oczekuje

Object Storage Arubacloud
0 głosów
301 wizyt
pytanie zadane 15 lipca 2016 w C i C++ przez Animal Użytkownik (700 p.)
zamknięte 16 września 2016 przez Animal
#include <iostream>
using namespace std;
int main()
{
    int ilosc = 1;
    char litera = 'A';

   for(litera; ilosc; litera++, ilosc++)
    {
        cout << litera;
        if(ilosc == 6)
           {
            cout << "\n Tu zmienna ilosc ma wartosc: " << ilosc;
            cout << "\nIle liter jeszcze wypisac: ";
            cin >> ilosc;
            }
        if(ilosc > 6)
            cout << litera;
    }
}

Program ma za zadanie wypisać liczby od A do F potem zapytać ile liter jeszcze wypisać i je wypisać.

Program działa połowicznie wypisuje do F potem zadaje pytanie i działają odpowiedzi od 1-5 tylko, że na odwrót czyli wpisanie 1 skutkuje wyświetleniem 5 cyfr. Wpisanie 6 w górę wypisuje nieskończony ciąg różnych znaków.

Próbowałem na różne sposoby i nie udało mi się osiągnąć zaplanowanego efektu.

Gdzie popełniam błąd?

Z góry dziękuje za pomoc.

komentarz zamknięcia: Rozwiązano problem.

4 odpowiedzi

+1 głos
odpowiedź 15 lipca 2016 przez MetRiko Nałogowiec (37,110 p.)
wybrane 15 lipca 2016 przez Animal
 
Najlepsza

Twój problem polega na złym warunku w pętli for.
Zapis: for(litera; ilosc; litera++, ilosc++)
oznacza, że pętla będzie się wykonywać dopóki zmienna [ilosc] jest różna od zera, a za każdym jej obejściem będzie inkrementować zmienne [litera] i [ilosc]. Poza tym drugi if jest niepotrzebny, a liczba wprowadzana powinna być nową zmienną, która zostanie dodana do zmiennej [ilosc]. Aktualnie zamiast tego modyfikujesz bezpośrednio zmienną [ilosc] przez co by program działał poprawnie musiałbyś wpisać, nie ile jeszcze byś chciał wypisać liter, a do której litery chciałbyś wypisywać.
Poprawiony kod:

#include <iostream>
using namespace std;
int main()
{
    int ilosc = 6;
    char litera = 'A';

    //for(; ilosc; litera++, ilosc++)
    for(; litera<'A'+ilosc; litera++)
    {
        cout << litera;
        if(litera=='F') //Jeżeli chcesz mieć tutaj mimo wszystko warunek z liczbą to wystarczy zmienić to na: if(litera=='A'+5), jednak to rozwiązanie wydaje mi się lepsze
        {
            cout << "\n Tu zmienna ilosc ma wartosc: " << ilosc;
            cout << "\nIle liter jeszcze wypisac: ";
            int temp; //Ta zmienna jest potrzebna by dodać ją do zmiennej [ilosc] (zakres jest zwiększany, a nie ustawiany na nowo)
            cin >> temp;
            ilosc+=temp;
        }
    }
}

 

+1 głos
odpowiedź 15 lipca 2016 przez Szahid Pasjonat (20,930 p.)
for(int licznik=1; licznik
komentarz 15 lipca 2016 przez Szahid Pasjonat (20,930 p.)
Kurcze ... nie wysłało się. Zaraz napiszę jeszcze raz
komentarz 15 lipca 2016 przez Szahid Pasjonat (20,930 p.)
Błąd jest w 8 linijce ponieważ ten zapis jest mało logiczny. Przypomnij sobie jak działa pętla for Zmień to co masz na taki kod for (int licznik;licznik
komentarz 15 lipca 2016 przez Szahid Pasjonat (20,930 p.)
***** coś jest nie tak albo z tym forum albo z moim telefonem bo nie mogę wysłać kodu. Obcina go. Postaram się wysłać go do Ciebie na pw
0 głosów
odpowiedź 15 lipca 2016 przez MichałGNU Gaduła (4,330 p.)
Zmienną "litera" również daj jako typ int.
komentarz 15 lipca 2016 przez Animal Użytkownik (700 p.)
Nie ma jak skoro to mają być litery a int nie przechowuje znaków prócz liczb.

Zamiana ta skutkuje zamianą liter na liczby i nic poza tym.
0 głosów
odpowiedź 15 lipca 2016 przez Animal Użytkownik (700 p.)
Dziękuję wszystkim za pomoc jak będzie czas to przeanalizuje.

Podobne pytania

0 głosów
2 odpowiedzi 358 wizyt
pytanie zadane 7 stycznia 2017 w C i C++ przez pokrywa1 Użytkownik (990 p.)
0 głosów
1 odpowiedź 1,077 wizyt
0 głosów
2 odpowiedzi 3,414 wizyt
pytanie zadane 7 października 2018 w C i C++ przez Vitall Początkujący (400 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...