[C++, cctype] Zamiana dużych liter na małe
Ostatnio zmodyfikowano 2010-07-13 10:13
SeaMonster131 Temat założony przez niniejszego użytkownika |
[C++, cctype] Zamiana dużych liter na małe » 2010-07-12 14:52:56 Chcę sobie stworzyć taki mini program do rozmawiania :) Dla przykładu: Program: Witaj! Ty: Siema To co odpowie użytkownik chcę sprawdzać if'em. Tylko za każdym razem musiałbym robić tak: "if(odp == "Siema" || odp == "siema")"... Dlatego chcę wpisywaną rzecz zamienić na małe litery, żebym napisał tylko "if(odp == "siema")". Czytałem coś o isupper i tolower itd... I zrobiłem takie coś: int i = 0; char c;
cout << "Witaj!" << endl; cin >> w1;
while( w1[ i ] ) { c = w1[ i ]; putchar( tolower( c ) ); i++; }
cout << endl << endl; if( w1 == "Siema" ) { cout << "zle!!!"; } else if( w1 == "siema" ) { cout << "dobrze!!!"; }
Początkowa wartość w1 to "Siema". Pętla wszystko dobrze mi zamienia i wypisuje "siema" ale póżniej program mi nie wypisuje "dobrze" albo "zle"... I teraz mam pytanie: Czy ja to dobrze robię? :D PS. Mam jeszcze jedno pytanie: jak wyszukać ciąg znaków w podanym tekście? Dla przykładu, mam tekst "Owca je barana" i chcę sprawdzić czy w podanym tekście występuje np "baran"... Z góry dziękuję za pomoc bo google mi nie pomogło :) |
|
lenrokskate |
» 2010-07-12 15:12:07 nie pisz tego bo nie dasz rady - robota na 10 lat dla 500 programistów
co do tych liter to pamiętam jak ktoś używał czegoś takiego jak touper ale nie pamiętam jak :( |
|
lenrokskate |
» 2010-07-12 15:18:55 #edit znalazłem taki kod, może coś wyciągniesz: #include <iostream> #include <string>
using namespace std;
int main() { string name; cout << "Podaj swoje imie\n\n\n"; cin >> name; cin.ignore(); for( int i = 0; i < name.length(); i++ ) { name[ i ] = toupper( name[ i ] ); } if( name[ name.length() - 1 ] == 'A' && name != "KUBA" ) cout << "Jestes kobieta"; else cout << "Jestes mezczyzna"; getchar(); return 0; }
|
|
SeaMonster131 Temat założony przez niniejszego użytkownika |
» 2010-07-12 15:20:45 Ja nie chcę tego pisać 10+ lat, tylko tak mniej więcej tydzień :D To ma być tylko taki mini programik :) Chcę się pouczyć troche ifstream itd itp ... Bo niektóre zmienne bd zapisywał do pliku (np imie,wiek czy coś takiego). Potrzebne mi są tylko te funkcje zmieniające litery na małe :) |
|
DejaVu |
» 2010-07-12 17:30:21 |
|
pekfos |
» 2010-07-13 08:53:46 wyszukiwanie łatwo można oprogramować: int where_is( string k, string in ) { bool found = false; for( int a = 0; a < in.length() - k.length(); a++ ) { for( int b = 0; b < k.length(); b++ ) { found = true; if( in[ a + b ] != k[ b ] ) { found = false; break; } } if( found ) return a; } return - 1; } sprawdź czy oto Ci chodziło, przykładzik zastosowania: #include <iostream> #include <conio.h> using namespace std;
int where_is( string k, string in ) { bool found = false; for( int a = 0; a < in.length() - k.length(); a++ ) { for( int b = 0; b < k.length(); b++ ) { found = true; if( in[ a + b ] != k[ b ] ) { found = false; break; } } if( found ) return a; } return - 1; }
string kk = "baran"; string inn = "owca je barana a wilk owce";
int main() { int where = where_is( kk, inn ); for( int a = 0; a < inn.length(); a++ ) { if( a == where || a == where + kk.length() ) cout << "\""; cout << inn[ a ]; } getch(); return 0; } |
|
SeaMonster131 Temat założony przez niniejszego użytkownika |
» 2010-07-13 10:04:16 Z tym tolower to zrobiłem tak: string www;
cin >> www;
for( int i = 0; i < www.length(); i++ ) { www[ i ] = tolower( www[ i ] ); }
cout << endl << endl << www;
I działa :D Dzięki @lenrokskate oraz dzięki wszystkim :) A z tym wyszukiwaniem to zobacze jeszcze ;) |
|
Elaine |
» 2010-07-13 10:13:13 |
|
« 1 » |