• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Program szyfrujący C++

–2 głosów
3,113 wizyt
pytanie zadane 21 stycznia 2019 w C i C++ przez HaSen Nowicjusz (230 p.)
#include <iostream>
#include <fstream>
#include <string>
#include <conio.h>
#include <time.h>
#include <windows.h>
#include <algorithm>
#include <cstdlib>
#include <fstream>
#include <string>
#include <cmath>
using namespace std;

char wybor;
char litera;
int litera_ascii;
fstream zaszyfrowanieotwarcie;
fstream zaszyfrowaniezapis;
fstream odszyfrowanieotwarcie;
fstream odszyfrowaniezapis;

string tekstzaszyfrowanie;
string linia1;
string linia2;
string linia3;
string linia4;
string linia5;
string linia6;
string linia7;
string linia8;
string linia9;
string linia10;
string linia11;
string linia12;
string linia13;
string linia14;
string linia15;
string linia16;
string linia17;
string linia18;
string linia19;
string linia20;

int nr_linii=1;



int main()
{
    cout << "Witaj W Szyfratorze v0.1!" << endl;
    cout << "Wybierz Dzialanie:" << endl;
    cout <<"1. Zaszyfruje Tekst"<<endl;
    cout <<"2. Odkoduje Tekst"<<endl;
    wybor=getch();



    switch(wybor)
    {
        case '1':
        {
            cout <<"Prosze umiescic tekst w pliku o nazwie 'dozaszyfrowania' w folderze programu  UWAGA! Max 20linii!!!!!"<<endl;
            cout <<"Kiedy gotowe wcisnij dowolny klawisz"<<endl;
            getch();


            zaszyfrowanieotwarcie.open("dozaszyfrowania.txt", ios::in);
            if (zaszyfrowanieotwarcie.good()==false)
            {
                cout <<"plik nie istnieje!!"<<endl;
                exit(1);
            }
            zaszyfrowaniezapis.open("zaszyfrowanytekst.txt", ios::out);

            while(getline(zaszyfrowanieotwarcie,tekstzaszyfrowanie))
            {

                switch(nr_linii)
                {
                    case 1:
                        {
                         linia1=tekstzaszyfrowanie;
                         int dlugosc1=linia1.length();
                         for(int i=0; i>=dlugosc1-1; i++ )
                        {
                        litera=linia1[i];
                        litera_ascii=static_cast<int>(litera);
                        zaszyfrowaniezapis<<litera_ascii<<"";
                        }
                         break;
                        }
                    case 2:
                        {
                        linia1=tekstzaszyfrowanie;
                         int dlugosc1=linia1.length();
                         for(int i=0; i>=dlugosc1-1; i++ )
                        {
                        litera=linia1[i];
                        litera_ascii=static_cast<int>(litera);
                        zaszyfrowaniezapis<<litera_ascii;
                        }
                        break;
                        }
                    case 3:
                        {
                        linia1=tekstzaszyfrowanie;
                         int dlugosc1=linia1.length();
                         for(int i=0; i>=dlugosc1-1; i++ )
                        {
                        litera=linia1[i];
                        litera_ascii=static_cast<int>(litera);
                        zaszyfrowaniezapis<<litera_ascii;
                        }
                        break;
                        }
                    case 4:
                        {
                        linia1=tekstzaszyfrowanie;
                         int dlugosc1=linia1.length();
                         for(int i=0; i>=dlugosc1-1; i++ )
                        {
                        litera=linia1[i];
                        litera_ascii=static_cast<int>(litera);
                        zaszyfrowaniezapis<<litera_ascii;
                        }
                        break;
                        }
                    case 5:
                        {
                        linia1=tekstzaszyfrowanie;
                         int dlugosc1=linia1.length();
                         for(int i=0; i>=dlugosc1-1; i++ )
                        {
                        litera=linia1[i];
                        litera_ascii=static_cast<int>(litera);
                        zaszyfrowaniezapis<<litera_ascii;
                        }
                        break;
                        }
                    case 6:
                        {
                        linia1=tekstzaszyfrowanie;
                         int dlugosc1=linia1.length();
                         for(int i=0; i>=dlugosc1-1; i++ )
                        {
                        litera=linia1[i];
                        litera_ascii=static_cast<int>(litera);
                        zaszyfrowaniezapis<<litera_ascii;
                        }
                        break;
                        }
                    case 7:
                        {
                        linia1=tekstzaszyfrowanie;
                         int dlugosc1=linia1.length();
                         for(int i=0; i>=dlugosc1-1; i++ )
                        {
                        litera=linia1[i];
                        litera_ascii=static_cast<int>(litera);
                        zaszyfrowaniezapis<<litera_ascii;
                        }
                        break;
                        }
                    case 8:
                        {
                        linia1=tekstzaszyfrowanie;
                         int dlugosc1=linia1.length();
                         for(int i=0; i>=dlugosc1-1; i++ )
                        {
                        litera=linia1[i];
                        litera_ascii=static_cast<int>(litera);
                        zaszyfrowaniezapis<<litera_ascii;
                        }
                        break;
                        }
                    case 9:
                        {
                        linia1=tekstzaszyfrowanie;
                         int dlugosc1=linia1.length();
                         for(int i=0; i>=dlugosc1-1; i++ )
                        {
                        litera=linia1[i];
                        litera_ascii=static_cast<int>(litera);
                        zaszyfrowaniezapis<<litera_ascii;
                        }
                        break;
                        }
                    case 10:
                        {
                        linia1=tekstzaszyfrowanie;
                         int dlugosc1=linia1.length();
                         for(int i=0; i>=dlugosc1-1; i++ )
                        {
                        litera=linia1[i];
                        litera_ascii=static_cast<int>(litera);
                        zaszyfrowaniezapis<<litera_ascii;
                        }
                        break;
                        }
                    case 11:
                        {
                        linia1=tekstzaszyfrowanie;
                         int dlugosc1=linia1.length();
                         for(int i=0; i>=dlugosc1-1; i++ )
                        {
                        litera=linia1[i];
                        litera_ascii=static_cast<int>(litera);
                        zaszyfrowaniezapis<<litera_ascii;
                        }
                        break;
                        }
                    case 12:
                        {
                        linia1=tekstzaszyfrowanie;
                         int dlugosc1=linia1.length();
                         for(int i=0; i>=dlugosc1-1; i++ )
                        {
                        litera=linia1[i];
                        litera_ascii=static_cast<int>(litera);
                        zaszyfrowaniezapis<<litera_ascii;
                        }
                        break;
                        }
                    case 13:
                        {
                        linia1=tekstzaszyfrowanie;
                         int dlugosc1=linia1.length();
                         for(int i=0; i>=dlugosc1-1; i++ )
                        {
                        litera=linia1[i];
                        litera_ascii=static_cast<int>(litera);
                        zaszyfrowaniezapis<<litera_ascii;
                        }
                        break;
                        }
                    case 14:
                        {
                        linia1=tekstzaszyfrowanie;
                         int dlugosc1=linia1.length();
                         for(int i=0; i>=dlugosc1-1; i++ )
                        {
                        litera=linia1[i];
                        litera_ascii=static_cast<int>(litera);
                        zaszyfrowaniezapis<<litera_ascii;
                        }
                        break;
                        }
                    case 15:
                        {
                        linia1=tekstzaszyfrowanie;
                         int dlugosc1=linia1.length();
                         for(int i=0; i>=dlugosc1-1; i++ )
                        {
                        litera=linia1[i];
                        litera_ascii=static_cast<int>(litera);
                        zaszyfrowaniezapis<<litera_ascii;
                        }
                        break;
                        }
                    case 16:
                        {
                        linia1=tekstzaszyfrowanie;
                         int dlugosc1=linia1.length();
                         for(int i=0; i>=dlugosc1-1; i++ )
                        {
                        litera=linia1[i];
                        litera_ascii=static_cast<int>(litera);
                        zaszyfrowaniezapis<<litera_ascii;
                        }
                        break;
                        }
                    case 17:
                        {
                        linia1=tekstzaszyfrowanie;
                         int dlugosc1=linia1.length();
                         for(int i=0; i>=dlugosc1-1; i++ )
                        {
                        litera=linia1[i];
                        litera_ascii=static_cast<int>(litera);
                        zaszyfrowaniezapis<<litera_ascii;
                        }
                        break;
                        }
                    case 18:
                        {
                        linia1=tekstzaszyfrowanie;
                         int dlugosc1=linia1.length();
                         for(int i=0; i>=dlugosc1-1; i++ )
                        {
                        litera=linia1[i];
                        litera_ascii=static_cast<int>(litera);
                        zaszyfrowaniezapis<<litera_ascii;
                        }
                        break;
                        }
                    case 19:
                        {
                        linia1=tekstzaszyfrowanie;
                         int dlugosc1=linia1.length();
                         for(int i=0; i>=dlugosc1-1; i++ )
                        {
                        litera=linia1[i];
                        litera_ascii=static_cast<int>(litera);
                        zaszyfrowaniezapis<<litera_ascii;
                        }
                        break;
                        }
                    case 20:
                        {
                        linia1=tekstzaszyfrowanie;
                         int dlugosc1=linia1.length();
                         for(int i=0; i>=dlugosc1-1; i++ )
                        {
                        litera=linia1[i];
                        litera_ascii=static_cast<int>(litera);
                        zaszyfrowaniezapis<<litera_ascii;
                        }
                        break;
                        }



                }
                nr_linii++;
            }
            zaszyfrowanieotwarcie.close();
            zaszyfrowaniezapis.close();



            break;
        }

        case '2':
            {
                cout<<"nic"<<endl;
                break;
            }

        default:
        {
            cout<<"podaj poprawna opcje"<<endl;
            break;
        }
    }

















    return 0;
}

Witam

Czemu ten program nie zapisuje wyników swej pracy do notatnika?

8
komentarz 21 stycznia 2019 przez Secrus Nałogowiec (32,880 p.)
Wiem, że nic nie wniosę do dyskusji, ale muszę: o mój Boże...

3 odpowiedzi

+5 głosów
odpowiedź 21 stycznia 2019 przez RafalS VIP (122,780 p.)
edycja 21 stycznia 2019 przez RafalS

xD Ładny kod. Taki nie za czytelny.

for (int i = 0; i >= dlugosc1 - 1; i++)

Dopóki i jest wieksze od dlugosci? Program nigdy nic nie zapisuje, bo nie wchodzi do tych 20 pętli.

A wiesz co teraz sie stanie? Będziesz musiał w tych 20 identycznych miejscach to poprawić :D

Dlatego lepiej było napisać to w pętli a nie copy pasta 20 razy i bezsensowny switch case.

Tak możesz pozbyć się switch case:

			while (getline(zaszyfrowanieotwarcie, linia))
			{
				for (int i = 0; i < linia.length(); i++)
				{
					litera = linia[i];
					litera_ascii = static_cast<int>(litera);
					zaszyfrowaniezapis << litera_ascii << "";
				}
			}

A jeszcze lepiej tak:

    std::transform(std::istreambuf_iterator<char>(in_file), istreambuf_iterator<char>(),
        std::ostream_iterator<int>(out_file),[](char litera) { 
            return static_cast<int>(litera); 
    });

Ale na to pewnie za wczesnie :P

komentarz 21 stycznia 2019 przez HaSen Nowicjusz (230 p.)
dzięki bardzo :)
+2 głosów
odpowiedź 21 stycznia 2019 przez jkdfklgdf Nałogowiec (32,020 p.)

na serio myślisz że chce nam się czytać kod który ma 350 lini?

Szczerze to nawet go nie przejrzałem ale rzuciły mi się 2 rzeczy w oko:

1) dlaczego jest taki odstęp przed returnem

2) 

string linia1;
string linia2;
string linia3;
string linia4;
string linia5;
string linia6;
string linia7;
string linia8;
string linia9;
string linia10;
string linia11;
string linia12;
string linia13;
string linia14;
string linia15;
string linia16;
string linia17;
string linia18;
string linia19;
string linia20;

chyba nie przerabiałeś jeszcze tablic, co?

nie wspominając już o tych długich polskich nazwach zmiennych, wielu niepotrzebnych pustych liniach, złe formatowanie kodu, no i nie myślałeś żeby zoptymalizować jakoś chociażby te switche?

komentarz 21 stycznia 2019 przez HaSen Nowicjusz (230 p.)
Te zmienne to pozostałość po 1szej wersji-jeszcze tego sie nie pozbyłem; te wolne miejsca to miejsce na dodatkowe głupoty które mogE tam wcisnąć
komentarz 21 stycznia 2019 przez jkdfklgdf Nałogowiec (32,020 p.)
@HaSen a w tych switchach nie ma przypadkiem tego samego kodu?

No i może porozbijaj to na co najmniej 3 funkcje, w sensie funkcja main, szyfrująca i odszyfrowująca.
0 głosów
odpowiedź 22 stycznia 2019 przez Jackob Obywatel (1,430 p.)

Udało mi się skrócić kod do 65 linii.

#include <iostream>
#include <fstream>
#include <string>
#include <conio.h>
#include <time.h>
#include <algorithm>
#include <cstdlib>
#include <cmath>
#include <windows.h>
using namespace std;
 
char wybor;
char litera;
int litera_ascii;
int nr_linii=0;
fstream plikodczyt;
fstream plikzapis;
string tekstzaszyfrowanie;
string linia[20];

void szyfrowanie()
{
	cout <<"Prosze umiescic tekst w pliku o nazwie 'dozaszyfrowania' w folderze programu  UWAGA! Max 20linii!!!!!"<< endl << "Kiedy gotowe wcisnij dowolny klawisz" << endl;
    getch();
 
 
    plikodczyt.open("dozaszyfrowania.txt", ios::in);
	if(plikodczyt.good()==false)
    {
        cout <<"plik nie istnieje!!"<<endl;
        exit(1);
    }
    plikzapis.open("zaszyfrowanytekst.txt", ios::out);
 
    while (getline(plik, linia))
	{
		for (int i = 0; i < linia.length(); i++)
		{
			litera = linia[i];
			litera_ascii = static_cast<int>(litera);
			plikzapis << litera_ascii;
		}
	}
	plikodczyt.close();
    plikozapis.close();
}
int main()
{
    cout << "Witaj W Szyfratorze v0.1!" << endl << "Wybierz Dzialanie:" << endl << "1. Zaszyfruje Tekst" << endl <<"2. Odkoduje Tekst"<<endl;
    wybor=getch();
    switch(wybor)
    {
        case '1':
			szyfrowanie();
			break;
        case '2':
            cout<<"nic"<<endl;
			break;
        default:
            cout<<"podaj poprawna opcje"<<endl;
			break;
        
    }
    return 0;
}

Wykorzystałem tu fragment kodu z komentarza powyżej.

Podobne pytania

0 głosów
1 odpowiedź 775 wizyt
0 głosów
1 odpowiedź 659 wizyt
0 głosów
3 odpowiedzi 1,901 wizyt
pytanie zadane 29 stycznia 2018 w C i C++ przez Cylian Początkujący (280 p.)

93,741 zapytań

142,676 odpowiedzi

323,294 komentarzy

63,323 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...