C++ Zmiana wielkości znaków w tablicy char (tab char w polu struktury)
Ostatnio zmodyfikowano 2013-12-25 19:43
Kefirek Temat założony przez niniejszego użytkownika |
C++ Zmiana wielkości znaków w tablicy char (tab char w polu struktury) » 2013-12-25 09:20:20 Witam forumowiczów Do DejaVu - Twoje rozwiązanie też działa idealnie -chodzi o temat: sortowanie pola struktury(tab char) w wektorze. Odnośnie nowego tematu Program prosi o podanie nazwy(dwuwyrazowej lub jedno)- jedną z intencji programu jest zmiana wielkości liter początkowych w obu lub w jednym z wyrazów nazwy. Poniżej przedstawiam kod odpowiedzialny za wprowadzenie danych oraz funkcje zmieniające wielkość liter w wyrazach nazwy: void Dodaj_klienta() { cout << "Ilu klientów chcesz wprowadzić: "; cin >> ilu_klientow; klient kupujacy; char upper; char upper_second; for( int i = 0; i < ilu_klientow; ++i ) { cout << "Wprowadź nazwę klienta: "; cin.get(); cin.getline( kupujacy.nazwa, 30 ); upper = NaBigger( kupujacy ); kupujacy.nazwa[ 0 ] = upper; upper_second = NaBiggerSecond( kupujacy ); kupujacy.nazwa[ index ] = upper_second; cout << "Ile kg sprzedano: "; cin >> kupujacy.kg; cout << "Podaj cenę za kilogram: "; cin >> kupujacy.price; vektor.push_back( kupujacy ); } }
char NaBigger( klient & x ) { return toupper( x.nazwa[ 0 ] ); }
char NaBiggerSecond( klient & x ) { for( index = 0; index < sizeof( x.nazwa ); index++ ) { if( isspace( x.nazwa[ index ] ) ) { ++index; return toupper( x.nazwa[ index ] ); } } }
Funkcja char NaBigger(klient & x) - spełnia swoje zadanie czyli zmienia wielkość pierwszej litery w pierwszym wyrazie nazwy. Natomiast funkcja char NaBiggerSecond(klient & x) - spełnia swoje zadanie tylko jak użytkownik wprowadzi nazwę dwuwyrazową. Po wprowadzeniu nazwy jednowyrazowej program zgłasz błąd: Expression: c >= -1 && c <= 255. Po długim czasie i wielu próbach udało mi się wyeliminować błąd ale wtedy funkcja ta nie zmienia pierwszej litery drugiego wyrazu nazwy na jej duży odpowiednik. W obecnym , przedstawionym powyżej wydruku funkcji - program zgłasz błąd tak jak podałem 3 wersy wyżej. Proszę o jakieś sugestje Pozdrawiam Kefirek |
|
Kefirek Temat założony przez niniejszego użytkownika |
» 2013-12-25 19:43:56 Witam ponownie Temat zamykam bo znalazłem błąd w funkcji dokładnie w warunku pętli było: for( index = 0; index < sizeof( x.nazwa ); i++ ) for( index = 0; index < strlen( x.nazwa ); i++ ) sizeof(x.nazwa) = było 30 czyli rozmiar tablicy co powodowało wyjście za zakres długości wprowadzonego łańcucha strlen(x.nazwa) = było długości wprowadzonego wyrazu co powodowało normalne wyjście z pętli bez wyjścia poza zakres ostatniego indeksu łańcucha Pozdrawiam Kefirek |
|
« 1 » |