PDA

Visualizza la versione completa : [C] Formattazione input/output


sizeof
25-09-2013, 13:08
Ciao dovrei stabilire un gironi di andata di un campionato di calcio.
Ho stabilito gli accoppiamenti tramite due cicli for.
per ciscuno accoppiamento devo inserire il risultato della partita in questo modo:

Juve vs Milan : 3 - 2

quindi ho fatto


printf("INSERISCI RISULTATI\n\n");
for ( i = 0; i < 4; i++ ) {
for ( j = 1+ i ; j < 4; j++ ) {
printf("%s vs %s : \n", camp[i].squadra, camp[j].squadra);
scanf("%d", &x);
scanf("%d", &y);
}
}

ma non è proprio lo stesso. io vorrei che dopo il primo scanf mi legga il trattino e poi l'altra scanf..come posso fare?

MItaly
25-09-2013, 13:33
scanf("%d - %d", &x, &y) ;

sizeof
25-09-2013, 15:48
Originariamente inviato da MItaly
scanf("%d - %d", &x, &y) ;

avevo già provato in questo modo..ma non va e non capisco il perchè!

goatboy
25-09-2013, 15:51
Originariamente inviato da sizeof
avevo già provato in questo modo..ma non va e non capisco il perchè!

Strano, quel codice va bene. Posta il resto del codice, magari hai commesso errori in qualche altra parte.

sizeof
25-09-2013, 15:53
Eccolo




#include <stdio.h>
#include <stdlib.h>

struct campionato {
char squadra[10];
int giocate;
int vinte;
int perse;
int pareggiate;
}camp[4];

int main()
{

int i, j;
int x, y;

for ( i = 0; i < 4; i++ ) {
printf("Inserisci il nome squadra %d : ", i+1);
scanf("%s", &camp[i].squadra);
}

printf("INSERISCI RISULTATI\n\n");
for ( i = 0; i < 4; i++ ) {
for ( j = 1 + i; j < 4; j++ ) {
printf("%s vs %s : \n", camp[i].squadra, camp[j].squadra);
scanf("%d - %d", &x, &y);
printf("\n");



}
}





return 0;
}

MItaly
25-09-2013, 15:55
Originariamente inviato da sizeof
non va
Come si dice sempre: "non va" non vuol dire niente; che problemi dà?

sizeof
25-09-2013, 16:02
L'ingresso non mi permette di farlo in questo modo JUVE vs INTER : 3 - 3 ma dopo il primo scanf devo premere invio per inserire il secondo

goatboy
25-09-2013, 17:35
Originariamente inviato da sizeof
L'ingresso non mi permette di farlo in questo modo JUVE vs INTER : 3 - 3 ma dopo il primo scanf devo premere invio per inserire il secondo
Ho provato il tuo codice e a me funziona, sei sicuro che inserisci bene il risultato? Se vuoi inserire il risultato "3 - 3" devi scriverlo proprio così..

sizeof
26-09-2013, 11:35
Ecco alla fine ho fatto ristampare il risultato di ciscuna partita ( anche se la cosa non mi piace molto )..che ne dite?



#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct campionato {
char squadra[10];
int giocate;
int vinte;
int perse;
int pareggiate;
int punteggio;
}camp[4];

int main()
{
char buffer[10];
int app;
int i, j;
int x, y;

for ( i = 0; i < 4; i++ ) {
printf("Inserisci il nome squadra %d : ", i+1);
scanf("%s", &camp[i].squadra);
}

printf("INSERISCI RISULTATI\n\n");
for ( i = 0; i < 3; i++ ) {
for ( j = i + 1; j < 4; j++ ) {
printf("\n\n");
printf("%s vs %s : \n", camp[i].squadra, camp[j].squadra);
scanf("%d", &x);
scanf("%d", &y);
printf("\n");
printf("%s vs %s : %d - %d", camp[i].squadra, camp[j].squadra, x, y);

camp[i].giocate = j;

camp[j].giocate = i + 1;

if ( x > y ) {

camp[i].vinte = camp[i].vinte + 1;
camp[i].punteggio = camp[i].punteggio + 3;
camp[j].perse = camp[j].perse + 1;
camp[j].punteggio = camp[j].punteggio + 0;

} else if ( x < y) {

camp[i].perse = camp[i].perse + 1;
camp[i].punteggio = camp[i].punteggio + 0;
camp[j].vinte = camp[j].vinte + 1;
camp[j].punteggio = camp[j].punteggio + 3;

} else if ( x = y ) {

camp[i].pareggiate = camp[i].pareggiate + 1;
camp[i].punteggio = camp[i].punteggio + 1;
camp[j].pareggiate = camp[j].pareggiate + 1;
camp[j].punteggio = camp[j].punteggio + 1;
}
}
}

for ( i = 0; i < 3; i++ ) {
for ( j = i + 1; j < 4; j++ ) {
if ( camp[i].punteggio < camp[j].punteggio ) {

app = camp[i].punteggio;
camp[i].punteggio = camp[j].punteggio;
camp[j].punteggio = app;

strcpy(buffer, camp[i].squadra);
strcpy(camp[i].squadra, camp[j].squadra);
strcpy(camp[j].squadra, buffer);

app = camp[i].giocate;
camp[i].giocate = camp[j].giocate;
camp[j].giocate = app;

app = camp[i].vinte;
camp[i].vinte = camp[j].vinte;
camp[j].vinte = app;

app = camp[i].perse;
camp[i].perse = camp[j].perse;
camp[j].perse = app;

app = camp[i].pareggiate;
camp[i].pareggiate = camp[j].pareggiate;
camp[j].pareggiate = app;


}
}
}

printf("\n\n");
printf(" *****CLASSIFICA***** \n\n");
printf("%10s%10s%10s%10s%15s%13s", "SQUADRA", "GIOCATE", "VINTE", "PERSE", "PAREGGIATE", "PUNTEGGIO");
printf("\n");
for ( i = 0; i < 4; i++ ) {
printf("%10s%10d%10d%10d%15d%13d", camp[i].squadra, camp[i].giocate, camp[i].vinte, camp[i].perse, camp[i].pareggiate, camp[i].punteggio);
printf("\n");
}

return 0;
}

Loading