codice:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int start[100];
int nv, ns;
int winner;
int app;
int i;
int empy;
FILE *fp;
fp= fopen("input.txt","r");
i=0;
fscanf(fp,"%d %d",&nv, &ns);
printf("%d %d\n", nv, ns);
for(i=0;i<nv;i++){
fscanf(fp,"%d", &start[i]);
printf("%d\n",start[i]);
}
/* ciclo errato
for(i=0;i<ns;i++){
//i++; anche se aumento il contatore mi escono risultati sbagliati numeri troppo lunghi a 5 cifre
fscanf(fp,"%d%d", &start[i+nv], &start[i+nv+1]);
printf("%d ",start[i]);
printf("%d\n",start[i+1]);
}
*/
//ciclo esatto
for(i=0;i<ns;i++){
fscanf(fp,"%d%d", &app, &app1);
printf("%d ",app);
printf("%d\n",app1);
}
fclose(fp);
system("PAUSE");
return 0;
}
l'ho rifatto a mado mio con gli fscanf, però nell'ultimo ciclo non mi prende i valori giusti.. se invece utilizza delle valiabili mi da i valori esatti.. anche se sono riuscito a fare ciò che volevo vorrei sapere perchè con il vettore mi escono risultati sbagliati e con le variabili no..
inoltre con gli ultimi 6 valori avrei dovuto modificare i 3 valori messi prima scambiandoli di posto... ed ho fatto cosi
codice:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int start[100];
int nv, ns;
int winner;
int app;
int i;
int empy;
int app1;
int app2;
FILE *fp;
fp= fopen("input.txt","r");
i=0;
fscanf(fp,"%d %d",&nv, &ns);
printf("%d %d\n", nv, ns);
for(i=0;i<nv;i++){
fscanf(fp,"%d", &start[i]);
printf("%d\n",start[i]);
}
int i1, i2;
for(i=0;i<ns;i++){
fscanf(fp,"%d%d", &app, &app1);
for(i1=0;i<nv;i1++){
if(start[i1]==app){
for(i2=0;i<nv;i2++){
if(start[i2]==app1){
start[i2]=app;
start[i1]=app1;
goto done;
}
}
}
}
done:
printf("%d ",app);
printf("%d\n",app1);
}
printf("\n\n%d",start[0]);
fclose(fp);
system("PAUSE");
return 0;
}
nello spazio start[0] seguendo tutti gli scambi si dovrebbe trovare il 2, però mi esce 1.