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

Program, który po wprowadzeniu wyrażenia wyświetli tylko te które mają wielką literę (np. koGut)

Object Storage Arubacloud
0 głosów
462 wizyt
pytanie zadane 8 czerwca 2022 w C i C++ przez raczuss Nowicjusz (120 p.)
edycja 8 czerwca 2022 przez raczuss

 Mam program w c++ do wykonania na informatykę "spośród wprowadzonych wyrazów program ma za zadanie pokazać który wyraz ma wielką literę".

Powinien on działać na zasadzie, że mam w polu wprowadzić wyraz i gdy wpiszę dany wyraz z wielką literą lub na caps locku np. "koGut" to musi powiedzieć, że ten wyraz ma wielką literę. gdy nie ma to ma wyświetlić zdanie "upss... tu nie ma wielkich liter"

w kompilatorze niestety gdy wpisuje jakikolwiek wyraz wyświetlają mi się wszystkie opcje tzn. i że ma wielkie litery i że ich nie ma.

mój program wygląda tak

#include <iostream>
#include <string>
#include <algorithm>
 
using namespace std;
 
   int main()
{
  char znak;  
     
    cout<<"Podaj tekst:"<<endl;
    cin>>znak
     
  ;if ((znak > 64) && (znak < 91) && (znak > 96) && (znak < 123) || (znak > 64) && (znak < 91)); //jest to np. wyraz koGut
    cout << "wyrazenie ma wielki znak/wielkie znaki" << endl;
{
    ;if ((znak > 96) && (znak < 123));  //wyraz ma same małe litery 
    cout << "upssss... cos poszlo nie tak. Tu nie ma wielkich liter!!" << endl;
}
   system("PAUSE");

    return 0;
 }

 

1 odpowiedź

0 głosów
odpowiedź 8 czerwca 2022 przez Apled Dyskutant (9,520 p.)

Gdy podajesz warunki w if, na końcu dajesz średnik, co sprawia, że ciało if'a jest puste. Także automatycznie wypisujesz cout'y pod warunkami bo nie podlegają one pod ciało warunku.

A w dodatku nie sprawdzasz całe podanego tekstu, tylko jego pierwszy znak, jako że zmienną zapisujesz jako char.

komentarz 8 czerwca 2022 przez raczuss Nowicjusz (120 p.)
czyli w if co muszę zmienić? char zmieniłem na string
komentarz 8 czerwca 2022 przez toko Mądrala (7,270 p.)

zamień wszystkie ;if (...); ... na if (...) { ... }

komentarz 8 czerwca 2022 przez Apled Dyskutant (9,520 p.)

@raczuss, 

bezsensu jest ten drugi if, który umieszczasz w { }, zamiast tego ten if może być else if'em i nie musi iść w klamry powyższego if'a

komentarz 8 czerwca 2022 przez raczuss Nowicjusz (120 p.)

dobra zmieniłem całkowicie program bo już miałem problemy ogarnąć co zmienić. Teraz próbuje ten program: 

#include<iostream>
#include<string>
using namespace std;

int main()
{
	string tekst = "Ala ma kota";
	string szukaj = "ma";
	
	int pozycja = tekst.find(szukaj);
	
	if(pozycja!=string::npos) //jesli znaleziono frazę "ma"
		cout<<"Znaleziono tekst \"ma\" na pozycji: "<<pozycja;
	else
		cout<<"Nie znaleziono";
	
	cin.ignore();
	cin.get();
	
	return 0;
} 

zmienić na to by wyświetlał mi wielkie znaki. Ale w DEV wyświetla mi komunikat no match for operator>. domyślam się że nie zdefiniowany ale nie wiem jak go zdefiniować by zmienić string jako cały wyraz na to by wyszukiwał poszczególne znaki i mógł wskazać ich pozycję.

Ten przerobiony przeze mnie wygląda tak:

#include<iostream>
#include<string>
using namespace std;

int main()
{
	string ciag;
	cout<<"Podaj wyraz: "; //np. LOKomotywa
	cin>>ciag;
	string szukaj = ((znak > 64) && (znak < 91)) ;
	
	int pozycja = ciag.find(szukaj);
	
	if(pozycja!=string::npos) //jesli znaleziono wielką literę
		cout<<"Znaleziono wielka litere na pozycji: "<<pozycja;
	else
		cout<<"Nie znaleziono";
	
	cin.ignore();
	cin.get();
	
	return 0;
} 

 

komentarz 8 czerwca 2022 przez Apled Dyskutant (9,520 p.)

Dobrze, że kombinujesz, ale raczej próbujesz przekombinować.

string szukaj = ((znak > 64) && (znak < 91)) ;

co chcesz tym osiągnąć, skoro nie masz nawet zmiennej znak?

string str = "wyraz";
string result = "";

for (int i = 0; i < str.length(); i++)
{
    if (str[i] > 96 && str[i] < 123)
        continue;
    else
        result += str[i];
}

if (result.length() == str.length())
    cout << "Cały wyraz jest z dużych liter\n";
else if (result.length() != 0)
    cout << "Wyraz zawiera duża literę\n";
else
    cout << "Cały wyraz jest z małych liter\n";

Możesz zrobić coś takiego - rozpisałem tak, żebyś wiedział o co chodzi.

Sprawdzasz każdy znak w tekście (zrobiłem na sztywno bez cin) i jeżeli znak jest małą literą to go pomijasz (continue), w innym wypadku dodajesz go do pomocniczej zmiennej tekstowej i później porównujesz tą zmienną z oryginalnym wyrazem. Jeżeli jest takiej samej długości, to znaczy, że każdy znał był dużą literą. Jeżeli nie, to sprawdzasz czy długość jest różna od 0, czyli czy występuje choć jeden duży znak, a jak nie to znaczy, że wyraz zawiera same małe litery.

Twój problem polegał właśnie na tym, że nie próbowałeś iterować przez wyraz, żeby sprawdzać znaki.

komentarz 8 czerwca 2022 przez raczuss Nowicjusz (120 p.)
Dobra, spróbuje to przerobić na to bym mógł w samej aplikacji wpisywać wyrażenia.

Podobne pytania

–2 głosów
1 odpowiedź 392 wizyt
+1 głos
0 odpowiedzi 516 wizyt
0 głosów
1 odpowiedź 130 wizyt

92,536 zapytań

141,377 odpowiedzi

319,456 komentarzy

61,922 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!

...