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

Zamiana dużych liter na małe[c++]

Ostatnio zmodyfikowano 2009-10-01 08:26
Autor Wiadomość
szkuner
Temat założony przez niniejszego użytkownika
Zamiana dużych liter na małe[c++]
» 2009-09-29 23:46:20
Napisałem sobie programik który po wprowadzeniu ciągu liter ma zamieniać małe na duże a duże na małe i mam problem z wyswietlaniem tego cuda ponieważ wszystko wyświetla dalej jak było może mnie ktoś nakierować na dobrą droge
C/C++
#include <iostream>
#include <cctype>
using namespace std;
char test;
char temp, t1;
int main()
{
    cout << "Podaj jakis text (koniec nacisnij malpe";
    cin.get( test );
    while( test != '@' )
    {
        if( isdigit( test ) )
        {
            cout << "To nie jest litera sprobuj jeszcze raz\n";
            break;
        }
        if( islower( test ) )
        {
           
            toupper( test );
           
        }
        else if( isupper( test ) )
        {
            tolower( test );
        }
       
        cout << test;
       
        cin.get( test );
       
    }
   
    return 0;
}
P-10536
malan
» 2009-09-30 00:14:23
Zamiast się męczyć z funkcjami napisał byś swoją. Zajęło by Ci to góra 5/10 minut. Podpowiedź
P-10537
szkuner
Temat założony przez niniejszego użytkownika
» 2009-09-30 00:18:46
Tylko tak chciałem wypróbować jak ta funkcja działa i co z nią można zdziałać
ale spróbuje to zrobić właśnie na zakresach if zobaczymy co to bedzie z tego
P-10538
GoldWolf
» 2009-09-30 09:48:40
Muszę zgodzić się z przedmówca, jeżeli dostępne rozwiązanie jest stabilne i można je spokojnie wykorzystać to po co tracić czas.

Nie wiem w czym był problem z tym zadaniem:
C/C++
#include <iostream>
#include <cctype>
using namespace std;
char test, t1;
int main()
{
    cout << "Podaj jakis text (koniec nacisnij spacje i malpe)\n";
    cin.get( test );
    //cin.get();
    while( test != '@' )
    {
        if( isdigit( test ) )
        {
            cout << "To nie jest litera sprobuj jeszcze raz\n";
            break;
        } else if( test == '\n' ) {
            cin.get();
            test = '\0';
            t1 = '\0';
        }
       
        if( islower( test ) )
        {
            t1 = toupper( test );
        }
        else if( isupper( test ) )
        {
            t1 = tolower( test );
        }
       
        cout << t1;
        cin.get( test );
       
    }
   
    return 0;
}
Jedyny minus to po wyświetleniu rezultatu trzeba nacisnąć spację by ponownie wprowadzić nowy ciąg.
P-10539
szkuner
Temat założony przez niniejszego użytkownika
» 2009-09-30 12:59:42
No właśnie nie wiedziałem jak mam wyświetlic te dane bo nie wiedziałem że do jednej zmienej znakowej można przypisywać dwie rózne wartości
Czyli jeżeli dobrze rozumuje zmiene znakowe rościagaja sie w miare co do nich wkładamy.
Np

t1=tolower();
t1=toupper();
cout<<t1
A ja na początku myślałem ze jak tak przypisze to wtedy zmiena z tolower sie zamaże i bedzie wyswietlało tylko z toupper no ale człowiek poznaje coraz to ciekawawsze rzeczy
P-10540
GoldWolf
» 2009-09-30 14:27:16
Bo nie można zapominasz, że to jest w pętli, czyli on de fakto przechowuje tylko jedną zmienną. Ale pętla leci tak szybko że tego nie widać i robi się to po kolei. Wykonaj taką sztuczkę:
C/C++
cout << t1;
cin.get( test );
cout << "\n";
system( "pause" );
P-10542
malan
» 2009-09-30 23:31:22
malan, jak będziesz musiał zrobić coś innego (powiedzmy, że bawić się naprawdę dużymi liczbami). to też będziesz wolał "napisać własną funkcję", zamiast "męczyć się z istniejącą"?
No bez przesady ;p. Miałem na myśli ten konkretny przykład.
P-10554
malan
» 2009-10-01 21:37:42
Dobra wygrałeś - lepiej użyć istniejących funkcji.
P-10566
« 1 » 2
  Strona 1 z 2 Następna strona