logo Thecsea.it



Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License



scolastica » esercizi » terza superiore » linguaggio c

Testo dell'esercizio

Dato un vettore chiamato squadre(N) contenente i nomi delle squadre che partecipano ad un torneo calcistico, generare un turno di partite accoppiando casualmente le squadre e associando i risultati casuali alle partire, visualizzando poi la colonna del totocalcio (1, X ,2 ) corrispondente alla giornata calcistica.
Sugg. supporre che il valore di N sia pari.

mostra soluzione

01/*
02CLAUDIO CARIDNALE 3AI
03Dato un vettore chiamato squadre(N) contenente i nomi delle squadre che partecipano ad un torneo calcistico, generare un turno di partite accoppiando casualmente le squadre e associando i risultati casuali alle partire, visualizzando poi la colonna del totocalcio (1, X ,2 ) corrispondente alla giornata calcistica.
04Sugg. supporre che il valore di N sia pari.
05*/
06#include<stdio.h>
07#include<stdlib.h>
08#include<time.h>
09#include<string.h>
10#define MAX 1000
11#define LEN 1000
12void acquisisci(char mat[MAX][LEN], int *n);
13void crea_squadre(char squadre[MAX][LEN], int *n, char results[MAX][LEN]);
14void ordina(char squadre[MAX][LEN], int n, int pos);
15char risultato(void);
16 
17int main(){
18    //dichiarazioni
19    int i,j,n,len;
20    char squadre[MAX][LEN], results[MAX][LEN];
21     
22    //inizializzazioni
23    srand(time(NULL));
24     
25    //acquisizione
26    acquisisci(squadre, &n);
27     
28    //calcoli
29    len = n;
30    for(i=0;i<len/2;i++){
31        crea_squadre(squadre, &n, results);
32        for(j=0;j<2;j++)
33            printf("%s ",results[j]);
34        printf("%c\n",risultato());
35    }
36}
37 
38void acquisisci(char mat[MAX][LEN], int *n){
39    //dichiarazioni
40    int i;
41     
42    //acquisizione lunghezza
43    do{
44        printf("inserisci il numero di squadre(n pari) : ");
45        scanf("%d",n);
46    }while(*n<0 || *n>=MAX || *n%2);
47     
48    //acquisizione
49    for(i=0;i<*n;i++){
50        printf("inserire la squadra numero %d : ",i+1);
51        scanf("%s",mat[i]);
52    }
53}
54 
55void crea_squadre(char squadre[MAX][LEN], int *n, char results[MAX][LEN]){
56    //dichiarazioni
57    int i,pos;
58     
59    //calcoli
60    for(i=0;i<2;i++){
61        pos = rand()%*n;
62        strcpy(results[i],squadre[pos]);
63        (*n)--;
64        ordina(squadre,*n,pos);
65    }
66}
67 
68void ordina(char squadre[MAX][LEN], int n, int pos){
69    //dichiarazioni
70    int i;
71     
72    //calcoli
73    for(i=pos;i<n;i++)
74        strcpy(squadre[i],squadre[i+1]);
75}
76 
77char risultato(void){
78    //dichiarazioni
79    int res = rand()%3;
80     
81    //calcoli
82    switch(res){
83        case 0:
84            return 'x';
85        default:
86            return res+'0';
87    }
88     
89}

Testi Consigliati:

Il linguaggio C. Principi di programmazione e manuale di riferimento. Ediz. MyLab. Con Contenuto digitale per download e accesso on line
C guida alla programmazione: Conoscere lo standard C11 dalle basi del linguaggio alle direttive del preprocessore (Programmare con C Vol. 1)
Programmazione in C

torna



Copyright © 2004-2025 thecsea.it (Claudio Cardinale - cardi@thecsea.it)! Tutti i diritti riservati. - contattaci