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

których znaków wczytano więcej, małych liter czy cyfr i ile razy znaki & stały obok siebie.

VPS Starter Arubacloud
0 głosów
473 wizyt
pytanie zadane 11 grudnia 2017 w C i C++ przez Daniel Miłek Nowicjusz (120 p.)

Witam. Mam następujący problem z zadaniem. O ile pierwsze 2 części nie stanowią dla mnie problemu o tyle zadanie 3 jest już mocno problematyczne. W ogóle nie wiem jak się za nie zabrać. Możecie ocenić mój dotychczasowy kod i pomóc mi się uporać z tym problemem? 

Napisać program działający na ciągu znaków, który:

1. wczytuje znak będący symbolem końca ciągu, wymuszając, by był on kropką lub wykrzyknikiem;

2. wczytuje ciąg znaków pojedynczo (znak po znaku) aż do napotkania tego końca ciągu

3. drukuje informację:

a) których znaków wczytano więcej: małych liter czy cyfr (lub informację, że było ich tyle samo)

b) ile razy dwa znaki & stały obok siebie (tzn. wczytano kolejno po sobie dwa takie znaki).

Wskazówka: Małe litery to znaki zawarte między ‘a‘ i ‘z’ , cyfry to znaki zawarte między ‘0’ i ‘9’. Znaki należy wczytywać instrukcją cin (będą się wczytywały tylko znaki widoczne).

Wskazówka do 3b: przed wczytaniem nowego znaku należy zapamiętać poprzednio wczytany znak.

UWAGA: Program należy napisać bez użycia tablic. Nie należy nigdzie zapisywać całego wczytanego ciągu.

 

#include <iostream>

using namespace std;

int main()
{
    char znak, znaki_ciagu, znak1, znak2;
    int licznik_litery=0, licznik_cyfry=0;

do  {
    cout << "Podaj znak konca ciagu ('!' lub '.'): ";
    cin >> znak;
    }
while (znak!='!' && znak!='.');
cout << "Podales prawidlowy znak"<<endl;


cout << "Podaj wyrazy ciagu i naciśnij enter."<<endl;
do
cin >> znaki_ciagu;
while (znaki_ciagu!=znak);


cout << "Gratulacje. Wykonales polecenie jak najbardziej poprawnie.";

    return 0;
}

 

komentarz 11 grudnia 2017 przez Aisekai Nałogowiec (42,190 p.)
Można założyć, że jakiś znak nie będzie występował w inpucie?
komentarz 11 grudnia 2017 przez Daniel Miłek Nowicjusz (120 p.)
Raczej nie. Można wczytać wszystkie znaki, ale na przykład jak wczyta się na początku znak kropki i później kiedyś też się go wczyta to on zatrzymuje wykonywanie się pętli, ale to już pewnie zdążyłeś zauważyć.

1 odpowiedź

0 głosów
odpowiedź 11 grudnia 2017 przez Aisekai Nałogowiec (42,190 p.)
Zrób licznik, ustaw go na 0.

Przed drugim do-while pobierz do jakiejś zmiennej typu char pierwszy znak. Sprawdź czy znak jest cyfra, jeżeli jest to zinkrementuj licznik, jeżeli jest literą - zdekrenentuj licznik Zmień do-while na while. W while pobierz znak do innej zmiennej. Sprawdź czy pobrany znak jest litera czy cyfrą i zrób to co masz napisane na górze. Sprawdź na końcu pętli czy pierwsza zmienna i druga są równe '&' jeżeli są to zinkrementuj inny licznik dla &&. Na. Ostatnia rzecz, to zapisz do zmiennej (tej do której zapisałeś pierwszy znak) zapisz ten drugi znak.

O ile nic nie zapomniałem to powinno zadziałać.

Podobne pytania

0 głosów
1 odpowiedź 200 wizyt
0 głosów
5 odpowiedzi 32,951 wizyt
0 głosów
1 odpowiedź 518 wizyt

93,008 zapytań

141,975 odpowiedzi

321,256 komentarzy

62,350 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

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...