Pomoc w edycji programu
Ostatnio zmodyfikowano 2020-06-13 00:01
pekfos |
» 2020-06-12 23:18:15 No ale po co mam implementowac find |
Nie wiem, sam chciałeś. Skoro masz wątpliwości, użyj gotowej metody, zamiast próbować osiągnąć to samo pętlą. |
|
skupi967 Temat założony przez niniejszego użytkownika |
» 2020-06-12 23:26:58 Jesli znajde funkcja find przecinek to skad mam wiedziec o ile znakow mam skrocic tekst? |
|
pekfos |
» 2020-06-12 23:39:22 find() zwróci indeks znalezionego przecinka, czyli długość napisu od początku, do tego przecinka, więc możesz to podać prosto do resize(). Musisz tylko sprawdzić, czy faktycznie znalazłeś przecinek. |
|
skupi967 Temat założony przez niniejszego użytkownika |
» 2020-06-12 23:51:08 #include <iostream> #include <string> #include <map> #include <cmath> #include <fstream> #include <stdio.h>
using namespace std;
void print( string::size_type n, string const & s ) { if( n == string::npos ) { std::cout << "not found\n"; } else { cout << "found: " << s.substr( n ) << '\n'; } }
int main() { map < char, int > pythagorean; pythagorean[ 'a' ] = 7; pythagorean[ 'b' ] = 8; pythagorean[ 'c' ] = 1; pythagorean[ 'd' ] = 2; pythagorean[ 'e' ] = 3; pythagorean[ 'f' ] = 4; pythagorean[ 'g' ] = 5; pythagorean[ 'h' ] = 6; pythagorean[ 'i' ] = 7; pythagorean[ 'j' ] = 8; pythagorean[ 'k' ] = 9; pythagorean[ 'l' ] = 1; pythagorean[ 'm' ] = 2; pythagorean[ 'n' ] = 3; pythagorean[ 'o' ] = 4; pythagorean[ 'p' ] = 5; pythagorean[ 'q' ] = 6; pythagorean[ 'r' ] = 7; pythagorean[ 's' ] = 8; pythagorean[ 't' ] = 9; pythagorean[ 'u' ] = 1; pythagorean[ 'v' ] = 2; pythagorean[ 'w' ] = 3; pythagorean[ 'x' ] = 4; pythagorean[ 'y' ] = 5; pythagorean[ 'z' ] = 6; string::size_type n; ifstream plik_wej( "words.txt" ); ofstream plik_wyj( "WYNIKI.txt" ); string slowo; int ilosc = 0, cnt = 0; while( getline( plik_wej, slowo ) ) { int sumaj = 0; n = slowo.find( ',' ); slowo.resize( n ); for( char znak: slowo ) { sumaj += pythagorean[ znak ]; } if( sumaj == 11 ) { cout << slowo << "(" << sumaj << ")" << '\n' << "Pythagorean: " << '\t'; plik_wyj << "Pythagorean: " << '\t' << slowo << " = " << sumaj << endl; ilosc++; } } cout << "\n\n Laczna ilosc znalezionych slow: " << ilosc << '\n'; plik_wyj << "\n\n Laczna ilosc znalezionych slow: " << ilosc << '\n'; return 0; }
Dziala dobrze, nawet jesli w pliku words.txt mam rozne kombinacje ale w konsoli sie program crashuje. Moglbys sprawdzic prosze Cie dlaczego? Blad w stylu terminate called after throwing an instance of 'std::lenght_error' what(); basic_string::_M_replace_aux |
|
pekfos |
» 2020-06-12 23:55:40 Musisz sprawdzić, czy faktycznie znalazłeś przecinek. Jeśli nie znalazłeś, nie wywołuj resize(). |
|
skupi967 Temat założony przez niniejszego użytkownika |
» 2020-06-13 00:01:00 Dobra, dzieki dziala:) |
|
1 2 « 3 » |