Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 14 su 14

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Personalmente non mi perderei dietro a questi problemi perché la memoria non rappresenta più un limite ormai. Quindi puoi benissimo prevedere un buffer di 4000 caratteri e una funzione che limita l'input a questi 4000 caratteri.

    Scrivere un codice che alloca esattamente lo spazio è possibile ma sicuramente avrai bisogno di una funzione con qualche decina di righe ben congegnate ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2016
    Messaggi
    13
    grazie, infatti ne ho messo un array di 1000 char; ora il problema è un altro: ho quasi finito di studiare la teoria di programmazione a oggetti e per esercitarmi un po' ho cambiato il codice per creare una classe, il programma parte ma non appena metto la stringa che voglio criptare o decriptare crasha... avresti qualche parere??
    codice:
    #include <stdio.h>#include <stdlib.h>
    #include <iostream>
    #include <fstream>
    
    
    using namespace std;
    
    
    const unsigned int MAX = 1000;
    
    
    class criptodecripto{
    
    
    private: 
        char mystring[MAX];
        char key[28];
    public:
        
        criptodecripto(char* director){
            ifstream cinf(director, ios::in);
            cinf>>key; 
        }
        ~criptodecripto(){
            cout<<"IL MIO LAVORO E' FINITO"<<endl;
            system("pause");
        }
        void cripto();
        void decripto();
        inline void insertmystring(){
            cin.ignore();
            gets(mystring);
        };
        inline void putsmystring(){
            puts(mystring);
        };
    };
    
    
    
    
    char alp[]= {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',' '};
    
    
    
    
    int main(){
        criptodecripto cript("C:\\Users\\chris\\Desktop\\Chiave.txt");
        int risposta=0;
        do{
            puts("Vuoi criptare o decriptare[1/2]");
            cin>>risposta;
           
            system("cls");
            if (risposta==1){
                cript.insertmystring();
                cript.cripto();
                cout<<"ciao";
                cript.putsmystring();
            }
            else if(risposta==2){
                cript.insertmystring();
                cript.decripto();
                cout<<"ciao";
                cript.putsmystring();
              
           }
            cout<<"Ti servo ancora?[0/1]"<<endl;
            cin<<risposta;
        }
        while(risposta);
        return 0;
        }
    
    
    
    
    
    
    
    
    void criptodecripto::cripto(){
        unsigned int y=0; 
        do {
            for(int i=0; i<27;i++){
                if  (mystring[y]==alp[i]){
                     mystring[y]=*(key+i);
                     break;
                    }
                }
            y++;    
           }
           while (*mystring); 
    }
    
    
    void criptodecripto::decripto(){
        unsigned int y=0;
        do {
               
            for(int i=0 ; i<27;i++){
                if (mystring[y]==*(key+i)){
                    mystring[y]=alp[i];
                    break;
                   }
                   
            }
        y++;    
        }
        while (*mystring);   
    }
    //    "C:\\Users\\chris\\Desktop\\Chiave.txt"

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2016
    Messaggi
    13
    Ho risolto quel problema grazie lo stesso, c'era un cin.ignore() di troppo; ora però che ho creato un altro file header e un file .cpp non parte piu... Se vuoi provarlo allego anche il .txt;


    main.cpp
    codice:
    #include "criptolib.h"
    
    using namespace std;
    
    
    
    
    int main(){
        criptodecripto cript("C:\\Users\\chris\\Desktop\\Chiave.txt");
        int risposta=0;
        do{
            puts("Vuoi criptare o decriptare[1/2]");
            cin>>risposta;
            system("cls");
            if (risposta==1){
                cript.insertmystring();
                cript.cripto();
                cript.putsmystring();
            }
            else if(risposta==2){
                cript.insertmystring();
                cript.decripto();
                cript.putsmystring();
              
           }
            cout<<"Ti servo ancora?[0/1]"<<endl;
            cin>>risposta;
        }
        while(risposta);
        return 0;
        }


    criptolib.h
    codice:
    #include <stdio.h>#include <stdlib.h>
    #include <iostream>
    #include <fstream>
    
    
    #ifndef CRIPTOLIB_H
    #define CRIPTOLIB_H
    using namespace std;
    #ifdef __cplusplus
    extern "C" {
    #endif
    #ifdef __cplusplus
    }
    #endif
    extern const unsigned int MAX = 1000;
    
    
    char alp[]= {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',' '};
        
    class criptodecripto{
    
    
    private: 
        char mystring[MAX];
        char key[28];
    public:
        criptodecripto(char* director){
            ifstream cinf(director, ios::in);
            if (cinf.good())
                cinf>>key; 
            else{
                cerr<<"Error"<<endl;
                exit(0);
            }
        }
        ~criptodecripto(){
            cout<<"IL MIO LAVORO E' FINITO"<<endl;
            system("pause");
        }
        void cripto();
        void decripto();
        inline void insertmystring(){
            cin.ignore();
            gets(mystring);
        };
        inline void putsmystring(){
            puts(mystring);
        };
    };
    
    
    #endif /* CRIPTOLIB_H */

    criptolib.cpp
    codice:
    #include "criptolib.h"
    
    
    
    
    
    
    void criptodecripto::cripto(){
        for (unsigned short int y=0; mystring[y]; y++){
            for(unsigned short int i=0; i<27;i++){
                if  (mystring[y]==alp[i]){
                     mystring[y]=key[i];
                     break;
                    }
                else continue;
            }
        }
    }
    
    
    
    
    void criptodecripto::decripto(){
        for (unsigned short int y=0; mystring[y]; y++){
            for(unsigned short int i=0; i<27;i++){
                if  (mystring[y]==key[i]){
                     mystring[y]=alp[i];
                     break;
                    }
                else continue;
            }
        }
     
    }
    File allegati File allegati

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2016
    Messaggi
    13
    cd 'W:\Documenti\Programming\CppApplication_1'
    C:\mingw\msys\1.0\bin\make.exe -f Makefile CONF=Debug
    "/C/mingw/msys/1.0/bin/make.exe" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
    make.exe[1]: Entering directory `/w/Documenti/Programming/CppApplication_1'
    "/C/mingw/msys/1.0/bin/make.exe" -f nbproject/Makefile-Debug.mk dist/Debug/MinGW-Windows/cppapplication_1.exe
    make.exe[2]: Entering directory `/w/Documenti/Programming/CppApplication_1'
    mkdir -p dist/Debug/MinGW-Windows
    g++ -o dist/Debug/MinGW-Windows/cppapplication_1 build/Debug/MinGW-Windows/criptolib.o build/Debug/MinGW-Windows/main.o
    build/Debug/MinGW-Windows/main.o:main.cpp.data+0x0): multiple definition of `alp'
    build/Debug/MinGW-Windows/criptolib.o:criptolib.cpp.data+0x0): first defined here
    build/Debug/MinGW-Windows/main.o: In function `basic_istream':
    c:/mingw/lib/gcc/mingw32/4.9.3/include/c++/istream:607: multiple definition of `MAX'
    build/Debug/MinGW-Windows/criptolib.o:c:/mingw/lib/gcc/mingw32/4.9.3/include/c++/iostream:74: first defined here
    collect2.exe: error: ld returned 1 exit status
    make.exe[2]: *** [dist/Debug/MinGW-Windows/cppapplication_1.exe] Error 1
    make.exe[2]: Leaving directory `/w/Documenti/Programming/CppApplication_1'
    make.exe[1]: *** [.build-conf] Error 2
    make.exe[1]: Leaving directory `/w/Documenti/Programming/CppApplication_1'
    make.exe": *** [.build-impl] Error 2








    Questi sono gli errori

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.