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

Pomoc w edycji programu

Ostatnio zmodyfikowano 2020-06-13 00:01
Autor Wiadomość
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ą.
P-177089
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?
P-177090
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.
P-177091
skupi967
Temat założony przez niniejszego użytkownika
» 2020-06-12 23:51:08
C/C++
#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
C/C++
terminate called after throwing an instance of 'std::lenght_error'
what(); basic_string::_M_replace_aux
P-177092
pekfos
» 2020-06-12 23:55:40
Musisz sprawdzić, czy faktycznie znalazłeś przecinek. Jeśli nie znalazłeś, nie wywołuj resize().
P-177093
skupi967
Temat założony przez niniejszego użytkownika
» 2020-06-13 00:01:00
Dobra, dzieki dziala:)
P-177094
1 2 « 3 »
Poprzednia strona Strona 3 z 3