Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    152

    [c++] for,switch, sitema I/O ...un po di tutto

    Salve a tutti!!!
    Mi potete dare una mano con questo codice che apre un file di testo legge le diverse righe e riempie file ascii con matrici 5x5 i cui elementi sono sempre gli stessi valori presi dalla singola riga???
    Non so dov'è l'errore ma il compilatore mi restituisce sempre il seguente messaggio:

    jump to case label
    .cpp:30: crosses initialization of `ofstream out'
    .cpp:41: redeclaration of `ofstream out'
    .cpp:30: `ofstream out' previously declared here
    .cpp:40: case label `2' within scope of cleanup or variable
    array



    Grazie


    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <iostream.h>
    #include <fstream.h>



    main()
    {



    char stringa[50];
    float x;

    ifstream in("fonte.txt");

    for(int z=0;z<3;z++)
    {
    in.getline(stringa,20);
    x = atof(stringa);
    switch(z){
    case (0): break;
    case (1):
    ofstream out("prova1.asc");
    for(int i=0;i<5;i++)
    {
    for(int j=0;j<5;j++)
    {
    out << x << " ";
    }
    }
    out.close();
    break;
    case (2):
    ofstream out("prova2.asc");
    for(int i=0;i<5;i++)
    {
    for(int j=0;j<5;j++)
    {
    out << x << " ";
    }
    }
    out.close();
    break;
    }
    }

    in.close()
    }
    andry80

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    338
    a cosa ti serve la stdio? nn basta la iostream? forse e' quello che ti genera alcuni errori di redeclaration

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    152
    tolta la stdio, ma il problema purtroppo resta!!
    Non so cosa fare.....
    andry80

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    338
    il pto e' che il codice scritto cosi' e' illegale perche' il compilatore pensa che tu stia ridefinendo la ofstream e che, come se nn bastasse, una di queste definizioni la condizioni dentro ad un case (non e' permesso).

    bisognerebbe trovare innanzitutto il modo di passare una variabile a ofstream..

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    338
    penso che così possa funzionare, magari aggiustando il case 0..

    codice:
    #include <iostream> 
    #include <fstream> 
    #include <string> 
    using namespace std;
    
    main() 
    { 
    char stringa[50]; 
    float x; 
    
    ifstream in("fonte.txt"); 
    
    string nome_out;
    
    for(int z=0;z<3;z++) 
    { 
      in.getline(stringa,20); 
      x = atof(stringa); 
      switch(z)
      { 
        case (0):
          nome_out = "";
          break;
        case (1): 
          nome_out = "prova1.asc";
          break; 
        case (2): 
          nome_out = "prova2.asc";
          break; 
      }
    
      ofstream out(nome_out.c_str()); 
    
      for(int i=0;i<5;i++) 
      { 
        for(int j=0;j<5;j++) 
        { 
        out << x << " "; 
        } 
      } 
      out.close(); 
    } 
    
    in.close();
    }

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    152
    Non so davvero come ringraziarti!!!!!!
    Così funziona.

    Ciao Ciao
    andry80

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