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

/*
CLAUDIO CARIDNALE 3AI
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.
*/
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
#define MAX 1000
#define LEN 1000
void acquisisci(char mat[MAX][LEN], int *n);
void crea_squadre(char squadre[MAX][LEN], int *n, char results[MAX][LEN]);
void ordina(char squadre[MAX][LEN], int n, int pos);
char risultato(void);

int main(){
	//dichiarazioni
	int i,j,n,len;
	char squadre[MAX][LEN], results[MAX][LEN];
	
	//inizializzazioni
	srand(time(NULL));
	
	//acquisizione
	acquisisci(squadre, &n);
	
	//calcoli
	len = n;
	for(i=0;i<len/2;i++){
		crea_squadre(squadre, &n, results);
		for(j=0;j<2;j++)
			printf("%s ",results[j]);
		printf("%c\n",risultato());
	}
}

void acquisisci(char mat[MAX][LEN], int *n){
	//dichiarazioni
	int i;
	
	//acquisizione lunghezza
	do{
		printf("inserisci il numero di squadre(n pari) : ");
		scanf("%d",n);
	}while(*n<0 || *n>=MAX || *n%2);
	
	//acquisizione
	for(i=0;i<*n;i++){
		printf("inserire la squadra numero %d : ",i+1);
		scanf("%s",mat[i]);
	}
}

void crea_squadre(char squadre[MAX][LEN], int *n, char results[MAX][LEN]){
	//dichiarazioni
	int i,pos;
	
	//calcoli
	for(i=0;i<2;i++){
		pos = rand()%*n;
		strcpy(results[i],squadre[pos]);
		(*n)--;
		ordina(squadre,*n,pos);
	}
}

void ordina(char squadre[MAX][LEN], int n, int pos){
	//dichiarazioni
	int i;
	
	//calcoli
	for(i=pos;i<n;i++)
		strcpy(squadre[i],squadre[i+1]);
}

char risultato(void){
	//dichiarazioni
	int res = rand()%3;
	
	//calcoli
	switch(res){
		case 0:
			return 'x';
		default:
			return res+'0'; 
	}
	
}

torna

Copyright © 2004-2020 thecsea.it (Claudio Cardinale - [email protected])! Tutti i diritti riservati. - contattaci