Miralem Temat założony przez niniejszego użytkownika |
Liczba znaków w wyrazie (string) » 2013-11-24 13:00:28 #include <iostream> #include <string>
int main() { int n; std::cin >> n; std::string wyrazy[ 10 ]; for( int i = 0; i < n; i++ ) { std::cin >> wyrazy[ i ]; } return 0; }
W jaki sposób mogę teraz wyświetlić liczbę wszystkich znaków w pojedynczym wyrazie tej tablicy? |
|
Mitu |
» 2013-11-24 13:23:23 for( int i = 0; i < n; i++ ) { std::cout << wyrazy[ i ].length(); }
|
|
Miralem Temat założony przez niniejszego użytkownika |
» 2013-11-24 13:34:55 Dzięki, a teraz mam pytanie, czy tutaj również indeksy liter są podobnie przedstawione jak w ASCII? Bo potrzebuję jeszcze ilości małych liter, dużych liter, cyfr czy znaków interpunkcyjnych. |
|
kubek3898 |
» 2013-11-24 13:39:27 Tak. Choć zapewne szybciej byś to sprawdził samemu, testując. |
|
Miralem Temat założony przez niniejszego użytkownika |
» 2013-11-24 13:58:39 A jak wyznaczyć do sprawdzenia pojedynczą literę z wyrazu string, bo oczywiście to mi nie przechodzi: #include <iostream> #include <string>
int main() { int n; std::cin >> n; std::string wyrazy[ 10 ]; for( int i = 0; i < n; i++ ) { std::cin >> wyrazy[ i ]; std::cout << wyrazy[ i ].length() << std::endl; } for( int i = 0; i < n; i++ ) { if( wyrazy[ i ] >= 65 && wyrazy[ i ] <= 90 ) { std::cout << wyrazy[ i ] << " "; } } return 0; } |
|
Buby |
» 2013-11-24 14:09:18 Odwołasz się do litery w ten sposób: #include <iostream> #include <string>
using namespace std;
int main() { string Wyrazy[ 10 ]; Wyrazy[ 1 ] = "Wyraz"; cout << Wyrazy[ 1 ][ 2 ]; } Zapis Wyrazy[ 1 ][ 2 ] oznacza, że odwołujemy się do znaku z pozycji 3, zmiennej typu string, o numerze 1 w tablicy wyrazy. Program wypisze r, ponieważ w tablicy znaki są numerowane od zera. Ja osobiście poleciłbym Ci funkcje islower() , ispunct() , isdigit() oraz isupper() ze standardu C. Funkcje znajdują się w pliku nagłówkowym #include <ctype.h> . Funkcja islower() sprawdza czy znak jest małą literą, a isupper() czy dużą. Natomiast isdigit() sprawdza czy znak jest liczbą, a ispunct() czy to znak interpunkcyjny lub specjalny. Przykładowy kod: #include <iostream> #include <ctype.h> #include <string> #include <vector>
int main() { std::string Napis = "TaKi! 1, N4Pi$ >"; std::vector < char > ZnakMaly; std::vector < char > ZnakDuzy; std::vector < char > Liczby; std::vector < char > Interpunkcja; for( size_t i = 0; i < Napis.size(); ++i ) { if( islower( Napis[ i ] ) ) ZnakMaly.push_back( Napis[ i ] ); if( isupper( Napis[ i ] ) ) ZnakDuzy.push_back( Napis[ i ] ); if( isdigit( Napis[ i ] ) ) Liczby.push_back( Napis[ i ] ); if( ispunct( Napis[ i ] ) ) Interpunkcja.push_back( Napis[ i ] ); } std::cout << "Male znaki:" << std::endl; for( int i = 0; i < ZnakMaly.size(); ++i ) std::cout << ZnakMaly[ i ] << ","; std::cout << "\nDuze znaki:" << std::endl; for( int i = 0; i < ZnakDuzy.size(); ++i ) std::cout << ZnakDuzy[ i ] << ","; std::cout << "\nLiczby: " << std::endl; for( int i = 0; i < Liczby.size(); ++i ) std::cout << Liczby[ i ] << ","; std::cout << "\nZnaki interpunkcyjne: " << std::endl; for( int i = 0; i < Interpunkcja.size(); ++i ) std::cout << Interpunkcja[ i ] << " "; }
Wyjście programu: Male znaki: a,i,i, Duze znaki: T,K,N,P, Liczby: 1,4, Znaki interpunkcyjne: ! , $ > |
|
pekfos |
» 2013-11-24 17:31:31 Funkcje znajdują się w pliku nagłówkowym #include <ctype.h> . |
W C++ powinno się używać <cctype>. |
|
Buby |
» 2013-11-24 18:10:05 @pekfos, Zbyt dużej różnicy nie ma, jeśli używasz ich w domyślny sposób. Biblioteki z 'C' przerobione do 'C++' różnią się tylko tym, że ich funkcji można używać w przestrzeni nazw std. std::printf( "Jakis tam tekst" );
printf( "Jakis tam tekst" ); Czytałem o tym ostatnio na wikibooks. http://pl.wikibooks.org/wiki/C++/Przestrzenie_nazw#Korzystanie_z_biblioteki_standardowej_CChociaż biblioteki dołączane ze starymi nazwami, mogą wywoływać czasem ostrzeżenia lub błędy. |
|
« 1 » 2 |