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

Program szyfrujący C++

Object Storage Arubacloud
–2 głosów
2,531 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,820 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 Milesq 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 Milesq 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ź 280 wizyt
0 głosów
1 odpowiedź 200 wizyt
0 głosów
3 odpowiedzi 1,246 wizyt
pytanie zadane 29 stycznia 2018 w C i C++ przez Cylian Początkujący (280 p.)

92,536 zapytań

141,377 odpowiedzi

319,452 komentarzy

61,920 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...