Salve a tutti,
programmo in c/c++ da qualche anno tramite la scuola sono abbastanza capace quindi non sono proprio un principiante. Oggi mi si è presentato un problema assurdo e pensando che fosse colpa del codice troppo lungo e che quindi poteva contenere errori, ho riscritto solo la parte che mi dava problemi e continua a darmene.
Il codice è questo:
#include <iostream>
int main()
{
freopen("input.txt","r",stdin);
int n,collegamenti;
scanf("%d%d",&n,&collegamenti);
int i,primo[n],secondo[n];
for(i=0; i<collegamenti; i++)
{
scanf("%d",&primo[i]);
scanf("%d",&secondo[i]);
}
for(i=0; i<collegamenti; i++)
{
printf("primo:%d secondo:%d\n",primo[i],secondo[i]);
}
fclose(stdin);
}
il file di input contiene:
6 10
1 2
3 3
5 4
4 5
1 5
3 8
3 1
5 7
2 2
3 2
Insomma nulla di difficile, riempe i vettori e li stampa. E invece no.
Con i=0 mi stampa primo:2 secondo 2: (invece di primo:1 secondo:2), con i=1 mi stampa primo:2 secondo:3 e poi da i=2 fino alla fine del ciclo i valori sono regolari.
Da che dipende una cosa del genere? Ho perso circa 4 ore oggi per implementare l'algoritmo di djistra su dei vettori sballati rispetto agli originali e non capivo perchè non andava quando il codice era giusto. Estratto questo pezzo ho capito che era qui il problema, ma qual è con precisione? Per quale arcano motivo mi deve alterare solo i primi 2 valori del vettore primo[n] ?
Grazie in anticipo per le risposte