Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 15 su 15
  1. #11
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    7
    Prima di tutto grazie ancora!!

    Ho provato a compilarlo ma il compilatore è andato in panne e mi ha restituito nel log:

    codice:
    Compilatore: Default compiler
    Esecuzione di  g++.exe...
    g++.exe "C:\test.cpp" -o "C:\test.exe"    -I"C:\Dev-Cpp\lib\gcc\mingw32\3.4.2\include"  -I"C:\Dev-Cpp\include\c++\3.4.2\backward"  -I"C:\Dev-Cpp\include\c++\3.4.2\mingw32"  -I"C:\Dev-Cpp\include\c++\3.4.2"  -I"C:\Dev-Cpp\include"   -L"C:\Dev-Cpp\lib" 
    C:/Dev-Cpp/include/stdio.h: In function `list* CreaListaDaFile(char*)':
    C:/Dev-Cpp/include/stdio.h:178: error: too few arguments to function `FILE* fopen(const char*, const char*)'
    
    C:\test.cpp:44: error: at this point in file
    
    C:\test.cpp:50: error: expected primary-expression before "char"
    
    C:\test.cpp:50: error: `sizoef' undeclared (first use this function)
    
    C:\test.cpp:50: error: (Each undeclared identifier is reported only once for each function it appears in.)
    
    C:\test.cpp:53: warning: converting to non-pointer type `char' from NULL
    
    C:\test.cpp:60: error: expected `)' before numeric constant
    
    C:\test.cpp:60: error: invalid conversion from `FILE*' to `size_t'
    
    C:/Dev-Cpp/include/stdio.h:297: error: too few arguments to function `size_t fread(void*, size_t, size_t, FILE*)'
    
    C:\test.cpp:60: error: at this point in file
    
    Esecuzione terminata
    Potrebbe dipendere dal compilatore ? ho usato Dev-C++

    Cmq se alla fine riesci a fargli scrivere l'output su un file (es c:\output_list.txt), puoi consegnare tu il lavoro al mio capo, hai praticamente fatto il lavoro al posto mio!

  2. #12
    Non so se hai visto ma ho già corretto.
    In ogni caso visto che scrivere tutto su file era un lavoro da niente ho fatto anche quello.
    Qui c'è il codice funzionante
    codice:
    #include <cstdlib>
    #include <iostream>
    #include <fstream>
    #define MAXLEN 100  //lunghezza massima delle stringhe di nomi,cognimi,domini.
    #define OUTPUT "C:/destinazione.txt" //il file dove verranno scritte le combinazioni
    using namespace std;
    struct chunk
    {
       chunk()
       {
          data = NULL;
          next = NULL;
       }
       char* data;
       chunk* next;
    };
    struct list //struttura per le liste di valori per campo
    {
           list() //inizializza la lista
           {
              first = NULL;
              count = 0;
           }
           chunk* first;
           chunk* last;
           int count; //numero di valori nella lista
           char* FindString(int ID) //trova il valore con id ID
           {
    		     if(ID == 0) return(first->data);
                 int i = 0;
                 chunk* c = first;
                 while(i < ID) {c = c->next; i++;}
                 return(c->data);
           }
           void AddValue(char* value)
           {
                chunk* c = new chunk;
    			c->data = new char[strlen(value)+1];
                memcpy(c->data,value,strlen(value)+1);
                if(count == 0){
    				first = c;
    				last = first;
    			}
                else {last->next = c; last = last->next;}
                count++;
           }
    };
    list* CreaListaDaFile(char* fname)
    {
          list* lista = new list();
    	  ifstream fin(fname);
    	  char buffer[MAXLEN];
    	  fin.getline(buffer,MAXLEN);
    	  if(strlen(buffer)>0) lista->AddValue(buffer);
    	  while(!fin.eof())
    	  {
    		  fin.getline(buffer,MAXLEN);
    		  lista->AddValue(buffer);
    	  }
    	  fin.close();
    	  return(lista);
    }
    
    
    int main(int argc, char *argv[])
    {
        list* nomi = CreaListaDaFile("C:/nomi.txt");
        list* cognomi = CreaListaDaFile("C:/cognomi.txt");
        list* domini = CreaListaDaFile("C:/domini.txt");
        //nomi.cognomi.domini
        int campi[3]; //creo 3 campi, ognuno è un numero che va da 0 all'indice dell'ultimo valore della sua lista (==sua_lista.count-1, se diamo al primo indice 0)
        campi[0] = 0;
        campi[1] = 0;
        campi[2] = 0; //ho messo l'indice di ogni campo al primo della loro lista.
        //campo0 è quello più a sinistra, poi viene 1 e 2.
    	int prints = 0;
    	FILE* file = fopen(OUTPUT,"wb");
    	char a_capo[2];
    	a_capo[0] = 13;
    	a_capo[1] = 10;
        while(true)
        { //finchè il campo più a sinistra non ha raggiunto il fondo della sua lista
    	  prints++;
          cout << nomi->FindString(campi[0]) << "." << cognomi->FindString(campi[1]) << "@" << domini->FindString(campi[2]) << endl;
    	  
    	  fwrite(nomi->FindString(campi[0]),sizeof(char),strlen(nomi->FindString(campi[0])),file);
    	  fwrite(".",sizeof(char),1,file);
    	  fwrite(cognomi->FindString(campi[1]),sizeof(char),strlen(cognomi->FindString(campi[1])),file);
    	  fwrite("@",sizeof(char),1,file);
    	  fwrite(domini->FindString(campi[2]),sizeof(char),strlen(domini->FindString(campi[2])),file);
    	  //scrivo un a-capo!
    	  fwrite(a_capo,sizeof(char),2,file);
    	  //Stampo anche in un txt!
          campi[2]++;
          if(campi[2] == domini->count)
          {
             campi[2] = 0;
             campi[1]++;
             if(campi[1] == cognomi->count)
             {
                 campi[1] = 0;
                 campi[0]++;
                 if(campi[0] == nomi->count)
                 {
                     break;
                 }
             }
          }
        }
    	fclose(file);
    	cout << "stampe: " << prints << endl;
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    Purtroppo sono ancora minorenne e il tuo capo non potrebbe pagarmi per questo.. ma se vuoi puoi farlo te in nero.
    Fai attenzione ai primi 2 define, MAXLEN e OUTPUT

  3. #13
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    7
    Davvero fantastico! Funziona alla perfezione, sei un mito!

    p.s
    immagino che la maggior età non sia tanto lontana, in una società in cui siamo tutti sistemisti un programmatore potrebbe servire! XD

  4. #14
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466

    Moderazione

    In futuro, quando si propone un problema legato al linguaggio, si deve inserire anche la propria soluzione e descrivere quali sono gli errori o i problemi che si incontrano.

    Anche se ci sono utenti volenterosi che lo fanno, lo scopo di questo forum non è commissionare la scrittura di codice conto terzi in qualsiasi linguaggio.

    Ad ogni modo, visto che tutte le condizioni sono cambiate, sposto la discussione di nuovo e modifico il titolo.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #15
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    7
    Per quanto riguarda il titolo del thread sono d'accordo, non era previsto cambiare linguaggio di programmazione, io avevo già cominciato a scriverlo in vbs, in oltre non ho mai chiesto a nessuno di scrivermi il codice per intero, se VisRoboris ha deciso di scriverlo interamente non posso che ringraziarlo. Se invece il riferimento era legato alla richiesta di redirezione dell'output hai ragione, ma visto che non sono un programmatore e quelle poche righe che scrivo le scrivo in vbs o in bash non mi sembra un reato chiedergli di inserire una stringa su un codice di oltre 100.

    Ah, ho provato a mettere [RISOLTO] al titolo del post ma non me lo ha fatto fare..

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 © 2025 vBulletin Solutions, Inc. All rights reserved.