Salve a tutti recentemente mi sono avviato alla risoluzione di questo esercizio ve lo descrivo:
Dato una sequenza di N+1 numeri individuare quella più grande (nb i numeri possono arrivare fino a 40 cifre)
Il primo numero rappresenta quanti numeri ci sono nella sequenza seguono poi gli N numeri esempio (con 3 task, l'input originale ne ha 100):
input.txt:
4 3276525753254764275125712 78328263214764866843884 3868328634286863486386784 347634764376754375
6 2345 1823 2344 1643 2352 123
3 25378299384 21452671827 25378299391
output.txt
3868328634286863486386784
2352
25378299391
Ora visto che i numeri come citato nell'esercizio superano le 40 cifre ho pensato di usare le stringhe, cosi una volta chiarito come estrapolare dalle stringhe i numeri scrivo il codice, fino a qui tutto, bene provo l'input d'esempio sopra citato e tutto funziona, ma quando provo con l'input originale e lo carico sul sito per prendere il voto questo mi da 0, così controllo il file di output che è uscito e noto una cosa strana ossia che alcuni numeri iniziano con 0 (cosa abbastanza insolita) ad esempio 05432562 o 0964264 e così via e visto che c'èro ho controllato anche il file di input e noto che anche questo ha dei numeri che iniziano con lo 0, il che mi confonde, come devo interpretarli questi numeri? è sbagliato il mio codice o il file di input generato dal computer?.
qui c'è il mio codice:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
ifstream read ("input.txt");
ofstream write ("output.txt");
int main ()
{
string x;
string y;
int p1=0;
int p2=0;
int k=0;
int j=0;
int first=0;
string world;
for (int i = 0; i < 100; i++)
{
read >> first;
read >> x;
world=x;
for (int r = 0; r < first-1; r++)
{
read >> y;
p2=y.length();
p1=world.length();
if (p1>p2)
{
world=x;
continue;
}else if (p1<p2)
{
world=y;
continue;
}else if(p1==p2)
{
for (int t = 0; t < p1; t++)
{
k=(int)world[t]-'0';
j=(int)y[t]-'0';
if (k>j)
{
world=x;
break;
}else if (k<j)
{
world=y;
break;
}else if (k==j)
{
continue;
}
}
}
}
write << world;
write << '\n';
}
return 0;
}