Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++, cctype] Zamiana dużych liter na małe

Ostatnio zmodyfikowano 2010-07-13 10:13
Autor Wiadomość
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ś:
C/C++
//...
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 :)
P-19803
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 :(
P-19806
lenrokskate
» 2010-07-12 15:18:55
#edit

znalazłem taki kod, może coś wyciągniesz:

C/C++
#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;
}
P-19807
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 :)
P-19808
DejaVu
» 2010-07-12 17:30:21
C/C++
int tolower( int znak );
P-19814
pekfos
» 2010-07-13 08:53:46
wyszukiwanie łatwo można oprogramować:
C/C++
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:
C/C++
#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;
}
P-19821
SeaMonster131
Temat założony przez niniejszego użytkownika
» 2010-07-13 10:04:16
Z tym tolower to zrobiłem tak:
C/C++
//...
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 ;)
P-19823
Elaine
» 2010-07-13 10:13:13
pekfos, gratulacje, właśnie wynalazłeś koło! :P
P-19824
« 1 »
  Strona 1 z 1