karambaHZP |
» 2017-03-05 02:15:33 int ilemalych( const std::string[] tab, std::size_t size ) { int licznik = 0; for( std::size_t i { }; i < size(); i++ ) { for( std::size_t j { }; j < tab[ i ].size(); ++j ) { if( islower( tab[ i ][ j ] ) ) { licznik++; } } } return licznik; } std::string::size()std::size_tdown: Przyznam, że umknął mi opis zadanie i zasugerowałem się poczynaniami autora. |
|
maly7 |
» 2017-03-05 02:17:44 int ilemalych( string napis ) { int licznik = 0; for( int i = 0; i < napis.length(); i++ ) { if( islower( napis[ i ] ) ) licznik++; } return licznik; } W tym programie ta funkcja powinna sprawdzać ile małych liter ma każdy wyraz z osobna, a nie ile małych mają razem. Z resztą w poleceniu masz podane jak ma wyglądać ta funkcja. Tablicę napisów masz przekazać dopiero do funkcji sortującej te napisy. |
|
nowawieza Temat założony przez niniejszego użytkownika |
» 2017-03-05 02:18:40 kod programu po zmianach: #include <iostream> #include <string> #include <math.h> #include <cstdlib> #include <ctime> #include <ctype.h> using namespace std;
int ilemalych( const string[] tab, size_t size ) { int licznik = 0; for( size_t i { }; i < size(); i++ ) { for( size_t j { }; j < tab[ i ].size(); ++j ) { if( islower( tab[ i ][ j ] ) ) { licznik++; } } } return licznik; }
int main() { int ilosc; string tab[ 9 ]; do { cout << "Podaj ilosc napisow : \n "; cin >> ilosc; } while( ilosc > 10 && ilosc < 0 ); for( int i = 0; i < ilosc; i++ ) { cout << "Podaj napis : \n "; cin >> tab[ i ]; } cout << "Przed sortowaniem : \n "; for( int i = 0; i < ilosc; i++ ) cout << tab[ i ] << " "; cout << endl; ilemalych( tab ); cout << "Po sortowaniu : \n "; for( int i = 0; i < ilosc; i++ ) cout << tab[ i ] << " "; cout << endl; }
log błędów: 13 32 C:\U sers\filip\Desktop\programowanie\semestr 2\lab 1 zad 2.cpp[ Error ] expected ',' or '...' before 'tab' C:\U sers\filip\Desktop\programowanie\semestr 2\lab 1 zad 2.cpp In function 'int ilemalych(const string*)': 16 19 C:\U sers\filip\Desktop\programowanie\semestr 2\lab 1 zad 2.cpp[ Warning ] extended initializer lists only available with - std = c++ 11 or - std = gnu++ 11 16 21 C:\U sers\filip\Desktop\programowanie\semestr 2\lab 1 zad 2.cpp[ Warning ] extended initializer lists only available with - std = c++ 11 or - std = gnu++ 11 16 33 C:\U sers\filip\Desktop\programowanie\semestr 2\lab 1 zad 2.cpp[ Error ] 'size' was not declared in this scope 17 23 C:\U sers\filip\Desktop\programowanie\semestr 2\lab 1 zad 2.cpp[ Warning ] extended initializer lists only available with - std = c++ 11 or - std = gnu++ 11 17 25 C:\U sers\filip\Desktop\programowanie\semestr 2\lab 1 zad 2.cpp[ Warning ] extended initializer lists only available with - std = c++ 11 or - std = gnu++ 11 17 32 C:\U sers\filip\Desktop\programowanie\semestr 2\lab 1 zad 2.cpp[ Error ] 'tab' was not declared in this scope
|
|
karambaHZP |
» 2017-03-05 02:22:11 włącz C++11 (lub wyżej) w swoim kompilatorze (compiler settings) |
|
maly7 |
» 2017-03-05 02:26:55 Jeśli używasz tej funkcji jaką podał karambaHZP to zamień: int ilemalych( const std::string[] tab, std::size_t size ) na int ilemalych( const std::string tab[], std::size_t size ) I zobacz mój wcześniejszy post, nie tak ma działać ta funkcja w tym zadaniu. |
|
nowawieza Temat założony przez niniejszego użytkownika |
» 2017-03-05 02:35:38 Już się pogubiłem który kod mam wstawić ale wstawiam jeden z powyższych :D No i udało mi się dodać ten c++11 :) Poprawiłem nagłówek funkcji. #include <iostream> #include <string> #include <math.h> #include <cstdlib> #include <ctime> #include <ctype.h> using namespace std;
int ilemalych( const string napis, size_t size ) { int licznik = 0; for( std::size_t i { }; i < napis.size(); i++ ) { if( islower( tab[ i ] ) ) licznik++; } return licznik; } int main() { int ilosc; string tab[ 9 ]; do { cout << "Podaj ilosc napisow : \n "; cin >> ilosc; } while( ilosc > 10 && ilosc < 0 ); for( int i = 0; i < ilosc; i++ ) { cout << "Podaj napis : \n "; cin >> tab[ i ]; } cout << "Przed sortowaniem : \n "; for( int i = 0; i < ilosc; i++ ) cout << tab[ i ] << " "; cout << endl; ilemalych( tab ); cout << "Po sortowaniu : \n "; for( int i = 0; i < ilosc; i++ ) cout << tab[ i ] << " "; cout << endl; }
log błędów: C:\U sers\filip\Desktop\programowanie\semestr 2\lab 1 zad 2.cpp In function 'int ilemalych(std::string, size_t)': 18 22 C:\U sers\filip\Desktop\programowanie\semestr 2\lab 1 zad 2.cpp[ Error ] 'tab' was not declared in this scope
C:\U sers\filip\Desktop\programowanie\semestr 2\lab 1 zad 2.cpp In function 'int main()': 52 16 C:\U sers\filip\Desktop\programowanie\semestr 2\lab 1 zad 2.cpp[ Error ] could not convert '(std::string*)(& tab)' from 'std::string* {aka std::basic_string<char>*}' to 'std::string {aka std::basic_string<char>}'
|
|
maly7 |
» 2017-03-05 02:38:28 Znowu powróciłeś do punktu wyjścia: int ilemalych( const string napis, size_t size ) Jeśli przekazujesz sam napis, to wystarczy tylko jeden argument. Zmieniłeś nazwę z tab na napis, więc w środku funkcji też zmień tab na napis. Zmieniłeś to, że teraz funkcja przyjmuje napis a nie tablicę napisów, a w mainie przekazujesz do niej tablicę. Musisz się zastanowić, którą wersję w końcu przyjmujesz, bo faktycznie widać, że się pogubiłeś :P I napiszę to jeszcze raz, ta funkcja podana w poleceniu jest poprawna, nie trzeba nic w niej zmieniać i będzie działać jak należy (no chyba, że prowadzący każe). |
|
karambaHZP |
» 2017-03-05 02:42:19 Napisałem to jak tylko można najprościej. Sortowanie jest z <algorithm> więc musisz sam sobie radzić z pisaniem sortowania :P #include <iostream> #include <string> #include <cctype> #include <algorithm>
std::size_t ileMalychLiter( const std::string & slowo ) { std::size_t licznik { }; for( std::size_t i { }; i < slowo.size(); ++i ) { if( std::tolower( slowo[ i ] ) == slowo[ i ] ) { ++licznik; } } return licznik; }
void sortuj( std::string tab[], std::size_t size ) { std::sort( tab, tab + size, []( const auto & lhs, const auto & rhs ) { return rhs < lhs; } ); }
int main() { constexpr std::size_t rozmiar { 9 }; std::string tab[ rozmiar ]; std::size_t ile_wyrazow; std::cin >> ile_wyrazow; if( ile_wyrazow <= rozmiar ) { for( std::size_t i { }; i < ile_wyrazow; ++i ) { std::cin >> tab[ i ]; } } sortuj( tab, ile_wyrazow ); for( std::size_t i { }; i < ile_wyrazow; ++i ) { std::cout << tab[ i ] << " ma " << ileMalychLiter( tab[ i ] ) << " malych liter\n"; } } |
|
1 2 3 « 4 » 5 6 |