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.