Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    10

    Problema acquisizione dati [c++]

    Salve, ho scritto il seguente programma per risolvere un'esercizio e l'algoritmo funziona, il mio problema è chenon aquisisce dati a più di 4 cifre, cioè ad esempio se in input ho "12345678" prende come dato "1234" perchè?
    codice:
    #include <iostream>
    #include <fstream>
    #include <cstdlib>
    #include <vector>
    
    using namespace std;
    
    struct quadro
    {
        int x; //ascissa;
        int y; //ordinata;
    };
    
    struct rete
    {
        int x; //ascissa
        int y1; //ordinata sup;
        int y2; //ordinata inferiore
    };
    
    ifstream in;
    ofstream out;
    vector <quadro> pescosi;
    vector <rete> pescati;
    vector <int> comandi, comandi2;
    int pesca=0;
    quadro pos;
    
    int main()
    {
        in.open("input.txt");
        int appo;
        in>>appo;
        pescosi.resize(appo);
        rete part;
        in>>part.x;
        in>>part.y1;
        part.y2= part.y1;
        pescati.push_back(part);
        for (int i=0; i<pescosi.size(); i++)
        {
            in>>pescosi[i].x;
            in>>pescosi[i].y;
        };
        in>>appo;
        for (int i=0; appo!=0; i++)
        {
            comandi.push_back(appo);
            in>>appo;
        };
        in>>appo;
        for (int i=0; appo!=0; i++)
        {
            comandi2.push_back(appo);
            in>>appo;
        };
    
        quadro barca1, barca2;
        barca1.x= part.x;
        barca1.y= part.y1;
        barca2= barca1;
    
        rete nuovo;
        for (int i=0; i<comandi.size(); i++)
        {
            for (int j=comandi[i]; j<0; j++)
            {
                nuovo.x= ++barca1.x;
                nuovo.y1= barca1.y;
                nuovo.y2= part.y2;
                pescati.push_back(nuovo);
            };
            for (int j=comandi[i]; j>0; j--)
            {
                pescati[pescati.size()-1].y1++;
                barca1.y++;
            };
        };
        for (int i=0; i<comandi2.size(); i++)
        {
            for (int j=comandi2[i]; j<0; j++)
            {
                barca2.x++;
                pescati[barca2.x-part.x].y2= barca2.y;
            };
            for (int j=comandi2[i]; j>0; j--)
            {
                ++barca2.y;
            };
        };
        for (int i=0; i<pescosi.size(); i++)
        {
            if ((pescosi[i].x<pescati[0].x)||(pescosi[i].x>pescati[pescati.size()-1].x)) continue;
            int x = pescosi[i].x-part.x;
            if ((pescosi[i].y<=pescati[x].y1)&&(pescosi[i].y>=pescati[x].y2))
                {pesca++; continue;}
            if ((pescosi[i].y>=pescati[x].y1)&&(pescosi[i].y<=pescati[x].y2))
                pesca++;
        };
        out.open("output.txt");
        out<<pesca<<endl;
        return 0;
    }
    ringrazio chiunque mi possa indicare l'errore.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,476

    Re: Problema acquisizione dati [c++]

    Originariamente inviato da krisiv99
    non aquisisce dati a più di 4 cifre
    Ma quali dati? Non acquisisce da tastiera? In quale parte del codice?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    10
    il file input.txt è un file composto da dei numeri interi che il programma dovrebbe leggere ed elaborare, cosa che in realtà fa finchè i dati sono minori di 9999. Se invece sono dati a più di 4 cifre legge solo le prime quattro. L'acquisizione è effettuata in più punti del programma ogni istruzione in>>x legge nel file in un numero intero e lo assegna alla variabile int x.

    ti uppo un esempio di file: input

    il primo intero rappresenta il numero di celle "pescose", i due interi seguenti le coordinate di partenza di 2 barche, poi ci sono 2 serie di numeri che terminano con uno 0 che indicano i movimenti delle 2 barche. alla fine si deve resitutire il numero di quadrati pescosi racchiusi nella rete creata dalle 2 barche.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,476
    Il problema è che il tuo file di input ha dei caratteri di Line Feed tra le coppie di valori.
    Cioè, quello che hai mostrato è fatto così

    2000<LF>2255 4080<LF>6680

    e così via.

    Ovviamente il programma separa i valori così come sono nel file.

    Per capire meglio apri il file con notepad++
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.