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

Pomoc z wlasnym programem

Ostatnio zmodyfikowano 2020-05-10 01:18
Autor Wiadomość
skupi967
Temat założony przez niniejszego użytkownika
Pomoc z wlasnym programem
» 2020-05-09 16:30:24
Witam.

Chcialbym aby ktos pomogl mi edytowac kod zrodlowy programu w ten sposob aby wyswietlaly sie na ekranie i zapisywaly do pliku dane.txt tylko takie slowa wczytane z pliku words.txt ktorych suma wszystkich liter bedzie rowna 11 lub 23(Zarowno przy uzyciu jednej mapy jak i drugiej gdzie wczesniej zdefiniowalem sam jakie poszczegolne litery maja miec wartosci).
Nie znam sie na programowaniu, to nie jest zadna praca na zaliczenie. Czas nagli a musze to zrobic, dlatego bede wdzieczny za pomoc jesli ktos pomoze mi w rozwiazaniu problemu.


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

using namespace std;

int main()
{
    map < char, int > fiveg, five;
   
    fiveg[ 'a' ] = 7;
    fiveg[ 'b' ] = 8;
    fiveg[ 'c' ] = 1;
    fiveg[ 'd' ] = 2;
    fiveg[ 'e' ] = 3;
    fiveg[ 'f' ] = 4;
    fiveg[ 'g' ] = 5;
    fiveg[ 'h' ] = 6;
    fiveg[ 'i' ] = 7;
    fiveg[ 'j' ] = 8;
    fiveg[ 'k' ] = 9;
    fiveg[ 'l' ] = 1;
    fiveg[ 'm' ] = 2;
    fiveg[ 'n' ] = 3;
    fiveg[ 'o' ] = 4;
    fiveg[ 'p' ] = 5;
    fiveg[ 'q' ] = 6;
    fiveg[ 'r' ] = 7;
    fiveg[ 's' ] = 8;
    fiveg[ 't' ] = 9;
    fiveg[ 'u' ] = 1;
    fiveg[ 'v' ] = 2;
    fiveg[ 'w' ] = 3;
    fiveg[ 'x' ] = 4;
    fiveg[ 'y' ] = 5;
    fiveg[ 'z' ] = 6;
   
   
    five[ 'a' ] = 1;
    five[ 'b' ] = 2;
    five[ 'c' ] = 3;
    five[ 'd' ] = 4;
    five[ 'e' ] = 5;
    five[ 'f' ] = 6;
    five[ 'g' ] = 7;
    five[ 'h' ] = 8;
    five[ 'i' ] = 9;
    five[ 'j' ] = 1;
    five[ 'k' ] = 2;
    five[ 'l' ] = 3;
    five[ 'm' ] = 4;
    five[ 'n' ] = 5;
    five[ 'o' ] = 6;
    five[ 'p' ] = 7;
    five[ 'q' ] = 8;
    five[ 'r' ] = 9;
    five[ 's' ] = 1;
    five[ 't' ] = 2;
    five[ 'u' ] = 3;
    five[ 'v' ] = 4;
    five[ 'w' ] = 5;
    five[ 'x' ] = 6;
    five[ 'y' ] = 7;
    five[ 'z' ] = 8;
   
   
   
    FILE * plik; //uchwyt do pliku
   
    plik = fopen( "words.txt", "r" ); //otwieramy plik w trybie tylko do odczytu - parametr "r"
   
    char znak;
    int sumaj = 0, sumad = 0;
   
    ofstream zapis( "dane.txt" );
   
   
    do
    {
        znak = fgetc( plik ); //zapisuję jeden znak z pliku
        cout << znak;
        zapis << znak;
        sumad += fiveg[ znak ];
        sumaj += five[ znak ];
        if( znak == '\n' )
        {
            if( sumad == 11 || sumad == 23 )
            {
                cout << "G=5: " << sumad << endl << endl;
                zapis << "G=5: " << sumad << endl;
            }
            if( sumaj == 11 || sumaj == 23 )
            {
                cout << "G=7: " << sumaj << endl << endl;
                zapis << "G=7: " << sumaj << endl;
            }
            sumaj = 0, sumad = 0;
        }
    }
    while( znak != EOF ); //End Of File - koniec pliku
   
    fclose( plik ); //zamykamy plik
    zapis.close(); //obowiązkowo należy zamknąć plik
   
    return 0;
}
P-176845
pekfos
» 2020-05-09 17:03:48
Po co ten miks C i C++? Wczytuj dane słowami i je wypisuj słowami. Teraz wypisujesz każdy wczytany znak, gdy nie da się nawet stwierdzić czy powinien być wypisany.
C/C++
std::string slowo;
while( plik_wej >> slowo )
{
    if( wypisac )
    {
        std::cout << slowo << '\n';
        plik_wyj << slowo << '\n';
    }
}
P-176846
skupi967
Temat założony przez niniejszego użytkownika
» 2020-05-09 18:47:48
Tak jak Ci mowilem przyjacielu jestem noga z programowania. Potrzebuje tego ze sie tak brzydko wyraze na gwalt. Zabrzmi to troche zalosnie ale czy nie moglbys zedytowac tego kodu ktory wkleilem? Zrobisz dobry uczynek a ja bede wdzieczny. Potrzebuje cos policzyc, kilka slow. To nie jest zadna praca na zaliczenie, zebys nie myslal. To taka mini gematria do uzytku wlasnego.
P-176847
pekfos
» 2020-05-09 20:39:13
Więc skąd pośpiech?
C/C++
std::ifstream plik_wej( "aaaa" );
std::ofstream plik_wyj( "bbbb" );
std::string slowo;

while( plik_wej >> slowo )
{
    int sumaj = 0, sumad = 0;
   
    for( char znak: slowo )
    {
        sumad += fiveg[ znak ];
        sumaj += five[ znak ];
    }
   
    if( sumad == 11 || sumad == 23 || sumaj == 11 || sumaj == 23 )
    {
        std::cout << slowo << '\n';
        plik_wyj << slowo << '\n';
    }
}
Reszty kodu nie chciało mi się kopiować.
P-176848
skupi967
Temat założony przez niniejszego użytkownika
» 2020-05-10 01:18:55
Dziekuje za pomoc. Jestem wdzieczny:)
P-176854
« 1 »
  Strona 1 z 1