Skocz do zawartości
Zamknięcie Forum PC LAB

Szanowny Użytkowniku,

Informujemy, że za 30 dni tj. 30 listopada 2024 r. serwis internetowy Forum PC LAB zostanie zamknięty.

Administrator Serwisu Forum PC LAB - Ringier Axel Springer Polska sp. z o.o. z siedzibą w Warszawie: wypowiada całość usług Serwisu Forum PC LAB z zachowaniem miesięcznego okresu wypowiedzenia.

Administrator Serwisu Forum PC LAB informuje, że:

  1. Z dniem 29 listopada 2024 r. zakończy się świadczenie wszystkich usług Serwisu Forum PC LAB. Ważną przyczyną uzasadniającą wypowiedzenie jest zamknięcie Serwisu Forum PC LAB
  2. Dotychczas zamowione przez Użytkownika usługi Serwisu Forum PC LAB będą świadczone w okresie wypowiedzenia tj. do dnia 29 listopada 2024 r.
  3. Po ogłoszeniu zamknięcia Serwisu Forum od dnia 30 października 2024 r. zakładanie nowych kont w serwisie Forum PC LAB nie będzie możliwe
  4. Wraz z zamknięciem Serwisu Forum PC LAB, tj. dnia 29 listopada 2024 r. nie będzie już dostępny katalog treści Forum PC LAB. Do tego czasu Użytkownicy Forum PC LAB mają dostęp do swoich treści w zakładce "Profil", gdzie mają możliwość ich skopiowania lub archiwizowania w formie screenshotów.
  5. Administrator danych osobowych Użytkowników - Ringier Axel Springer Polska sp. z o.o. z siedzibą w Warszawie zapewnia realizację praw podmiotów danych osobowych przez cały okres świadczenia usług Serwisu Forum PC LAB. Szczegółowe informacje znajdziesz w Polityce Prywatności

Administrator informuje, iż wraz z zamknięciem Serwisu Forum PC LAB, dane osobowe Użytkowników Serwisu Forum PC LAB zostaną trwale usunięte ze względu na brak podstawy ich dalszego przetwarzania. Proces trwałego usuwania danych z kopii zapasowych może przekroczyć termin zamknięcia Forum PC LAB o kilka miesięcy. Wyjątek może stanowić przetwarzanie danych użytkownika do czasu zakończenia toczących się postepowań.

Temat został przeniesiony do archiwum

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

Petlik

Program rozpoznajacy i zliczajacy znaki

Rekomendowane odpowiedzi

Witam. Dostalem jako prace domowa napisanie programu, ktory pobiera znaki do momentu wcisniecia ESC, przy czym rozpoznaje duze, male litery, liczby oraz inne znaki. Malo tego, na koncu ma podac ile czego bylo. Szczerze mowiac, nie bardzo wiem jak sie do tego zabrac. Mam uzyc instrukcji "while", zatem stoje na tym:

 

#include <iostream>

#include <cstdio>

using namespace std;

 

int main()

{

char z;

cout << "Podaj znak ";

cin >> z;

while (z!='27')

{

cout << "Podaj kolejny znak ";

cin >> z;

}

cout << "Podales " << z << " wiec koncze";

cin.ignore();

getchar();

return 0;

}

 

Powyzszy algorytm wygooglalem i nieco zmodernizowalem. Niestety mam problemy z programowaniem, gdyz dopiero zaczynam w C++, a moja nauczycielka jest bardzo specyficzna, co wcale mi nie pomaga :/

 

Bylby ktos chetny mi pomoc?

Zeby nie bylo, ze chce sie wyreczac, wystarcza jakies jasne instrukcje co do wykonania algorytmu.

 

Z gory dziekuje :)

 

edit:

 

Wynalazlem cos takiego:

#include <iostream.h> // program zliczajacy znaki

#include <conio.h>

int main()

{

char znak;

int ile=0, duze=0, male=0, cyfry=0 nr, spacje=0, czy_spec=0'

clrscr();

do

{

znak=getch();

nr= (int) znak;

if (nr<=0)

{

czy_spec=1;

inne++;

}

else

{

if (!czy_spec)

{

cout<<znak;

if (nr==32) spacje++;

if (nr>=65 && nr<=90) duze++;

else if (nr>=97 && nr<=57) cyfry++;

else inne++;

}

ile++;

czy_spec=0;

}

}

while (znak!=27);

cout<<"\nWyrazow:"<<spacje+1<<endl;

cout<<"Znakow:"<<ile-1<<endl;

cout<<"Wielkich liter:"<<male<<endl;

cout<<"cyfr:"<<cyfry<<endl;

getch();

return 0;

}

 

Natomiast wyskakuje mi blad, ze napotkano niedozwolona instrukcje... nie rozumiem :/

Dodam, ze wkleilem to do notatnika i zmienilem rozszerzenie na *.exe, moze to jest przyczyna bledu?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Natomiast wyskakuje mi blad, ze napotkano niedozwolona instrukcje... nie rozumiem :/

Dodam, ze wkleilem to do notatnika i zmienilem rozszerzenie na *.exe, moze to jest przyczyna bledu?

 

 

pobierz sobie darmowego i dobrego Dev-cpp ;] wklej tam kod i skompiluj (F9) :-)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
int ile=0, duze=0, male=0, cyfry=0 nr, spacje=0, czy_spec=0'

<- cos nie teges :D na koncu

i brakuje ',' po cyfty = 0 :]

Ze tak zapytam jaki znak ma kod mniejszy od 0 ?

nr= (int) znak;

Nie trzeba rzutowac ..

 

a reszta 3.14 * oko dobrze ;)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Też się dopiero ucze c++ ale poprawiłem troche i jakoś to działa ;]

 

#include <iostream> // program zliczajacy znaki
#include <cstdlib>

using namespace std;
int main()
{
char znak;
int ile=0, duze=0, male=0, cyfry=0, nr, spacje=0, czy_spec=0, inne;
do
{
znak=getchar();
nr= (int) znak;
if (nr<=0)
{
czy_spec=1;
inne++;
}
else
{
if (!czy_spec)
{
cout << znak;
if (nr==32) spacje++;
if (nr>=65 && nr<=90) duze++;
else if (nr>=97 && nr<=57) cyfry++;
else inne++;
}
ile++;
czy_spec=0;
}
}
while (znak!=27);
cout<<"\nWyrazow:"<<spacje+1<<endl;
cout<<"Znakow:"<<ile-1<<endl;
cout<<"Wielkich liter:"<<male<<endl;
cout<<"cyfr:"<<cyfry<<endl;
getchar();
return 0;
}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

wiktor2093 Dzieki wielkie :) u mnie rowniez dziala. Tylko jak teraz zrobic, zeby zliczal na koncu te znaki?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Zrób tablicę o rozmiarze 256, jej indeksy to wartości znaków. Wystarczy wtedy robić tab[z]++, na koniec wyświetlić zawartość. Nie trzeba też wtedy robić warunków przy zliczaniu rodzajów znaków, wystarczy zsumować odpowiednie komórki tablicy.

 

Tu mała pomoc, jakbyś nie miał:

http://www.fotosik.pl/pokaz_obrazek/a4f709b51b8e2512.html

http://www.fotosik.pl/pokaz_obrazek/1c2ef15d3655039a.html

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...