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ść
skupi967
Temat założony przez niniejszego użytkownika
Pomoc w edycji programu
» 2020-06-12 15:53:22
Witam.

Potrzebuje pomocy z przerobieniem tego programu. Nie znam sie w ogole na C++ a musze przeszukac duza baze danych wiec prosilbym o gotowe rozwiaznaie. Bylbym bardzo wdzieczny.
Wszystko dziala tak jak powinno ale tekst ktory wczytuje z pliku
words.txt
 jest rozdzielony separatorem
,
 i chce by program pobierajac tekst z pliku
.txt
 po napotkaniu separatora
,
 przeszedl do nowej lini, dalej pobieral tekst i tak caly czas.




C/C++
#include <iostream>
#include <string>
#include <map>
#include <cmath>
#include <fstream>
#include <stdio.h>

using namespace std;

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;
   
   
   
    ifstream plik_wej( "words.txt" );
    ofstream plik_wyj( "WYNIKI.txt" );
    string slowo;
    int ilosc = 0;
   
    while( plik_wej >> slowo )
    {
        int sumaj = 0;
       
        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;
}
P-177062
pekfos
» 2020-06-12 16:52:02
Możesz użyć std::getline() z trzecim argumentem, żeby pobierać napis do przecinka, zamiast do spacji.
https://en.cppreference.com/w​/cpp/string/basic_string/getline
P-177065
skupi967
Temat założony przez niniejszego użytkownika
» 2020-06-12 17:35:56
C/C++
#include <iostream>
#include <string>
#include <map>
#include <cmath>
#include <fstream>
#include <stdio.h>
#include <sstream>
using namespace std;

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;
   
   
    ifstream plik_wej( "words.txt" );
    ofstream plik_wyj( "WYNIKI.txt" );
    string slowo;
    int ilosc = 0;
   
   
   
    while( getline( plik_wej, slowo, plik_wej.widen( ',' ) ) >> slowo )
    {
        int sumaj = 0;
       
        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 tylko ze odwrotnie. Teraz pobiera to co jest za przecinkiem a pomija to co jest przed nim
P-177066
pekfos
» 2020-06-12 19:29:05
C/C++
while( getline( plik_wej, slowo, plik_wej.widen( ',' ) ) >> slowo )
C/C++
while( getline( plik_wej, slowo, plik_wej.widen( ',' ) ) )
P-177069
skupi967
Temat założony przez niniejszego użytkownika
» 2020-06-12 20:00:39
Ma byc tak
while( getline( plik_wej, slowo, plik_wej.widen( ',' ) ) >> slowo )
 czy tak
while( getline( plik_wej, slowo, plik_wej.widen( ',' ) ) )
?

W jednym i drugim przypadku zle dziala. W pierwszym po pierwszym napotkanym przecinku program konczy dzialanie, nie sprawdza dalej a w drugim przypadku nie wyswietla wszystkich wyrazow: z wczytywanych danych dokladnie takich:
C/C++
ace, bull
baal
noun
nulled, noun
kupa, asdasd
aligator
 pokazalo wyniki tylko dla
C/C++
Pythagorean: bull = 11
Pythagorean: noun = 11

Czyli dalej pokazuje wyniki za przecinkiem a nie przed bo np. ace ma tez wartosc = 11
P-177072
pekfos
» 2020-06-12 20:18:39
Wszystko dziala tak jak powinno ale tekst ktory wczytuje z pliku
words.txt
 jest rozdzielony separatorem
,
 i chce by program pobierajac tekst z pliku
.txt
 po napotkaniu separatora
,
 przeszedl do nowej lini, dalej pobieral tekst i tak caly czas.
Czyli jak rozumiem chcesz ignorować resztę linii, po przecinku? Wtedy getline() (bez 3. argumentu) żeby wczytać tekst liniami i w każdej linii szukaj przecinka (linia.find()) i jeśli jest, to usuń resztę napisu od tego momentu.
P-177075
skupi967
Temat założony przez niniejszego użytkownika
» 2020-06-12 20:46:17
Tak, dokladnie tak.

Wykonalbys to za mnie? Nie ogarniam juz nic C++. Kiedys w szkole sie uczylem ale to bylo dawno. To dla dobra ludzkosci. Napisze Ci chociaz i tak nie uwierzysz.
12 grudnia 2020 bedzie biblijny Armageddon, koniec swiata. Ja jestem reinkarnacja Henocha/Noe/Adama. Matrix jest realny i moim zadaniem jest z niego wyciagnac ludzi. Uswiadomic. Ten program jest mi potrzebny do mojej pracy nad ktora pracuje juz 4 miesiace. Brzmi nierealnie ale gwarantuje Ci ze przed listopadem uslyszysz o mojej pracy jak i caly swiat i wtedy sobie o mnie przypomnisz. Bede Ci wdzieczny:)


Ps.
Program ma sluzyc do gematrii - zakazana wiedza z ogrodu Eden, sekretny jezyk Pana Boga:)
Ludzie powroca do ogrodu Eden bez smierci, smutku, pieniedzy, chorob itd:)
P-177077
pekfos
» 2020-06-12 21:04:02
https://en.cppreference.com/w​/cpp/string/basic_string/find
https://en.cppreference.com/w​/cpp/string/basic_string/resize
Z tymi dwoma sobie poradzisz w 15 minut max. Zresztą co się tak spieszysz, masz dosłownie czas do końca świata :)
P-177078
« 1 » 2 3
  Strona 1 z 3 Następna strona