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 cognomi(N) contente i cognomi degli studenti di una classe, formare i turni per le interrogazioni visualizzando gli studenti, scelti casualmente, in gruppi di X persone (con X fornito in ingresso e compreso tra 3 e 5)

mostra soluzione

/*
CLAUDIO CARIDNALE 3AI
Dato un vettore chiamato cognomi(N) contente i cognomi degli studenti di una classe, formare i turni per le interrogazioni visualizzando gli studenti, scelti casualmente, in gruppi di X persone (con X fornito in ingresso e compreso tra 3 e 5)
*/
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
#define MAX 1000
#define LUNG 100
void acquisizioni(void);
void turni(void);
void riordina(int pos);
int len;
int x;
char cognomi[MAX][LUNG];
char turno[5][LUNG];

int main(){
	//dichiarazioni
	int i,j,lun;
	
	//inizializzazione generatore numeri pseudo-casuali
	srand(time(NULL));
	
	//acquisizioni
	acquisizioni();
	
	//visualizzazione risultati
	lun = len;
	for(i=0;i<=lun/x;i++){
		turni();
		printf("%d° turno : ",i+1);
		for(j=0;j<x&&j+i*x<lun;j++)
			printf(" %s",turno[j]);
		printf("\n");
	}
}

void acquisizioni(void){
	//dichiarazioni
	int i;
	
	//acquisizione lunghezze
	do{
		printf("inerire il numero di cognomi : ");
		scanf("%d",&len);
	}while(len<1 || len>=MAX);
	
	//acquisizione dati
	//cognomi
	for(i=0;i<len;i++){
		printf("inserire il cognome numero %d : ",i+1);
		scanf("%s",cognomi[i]);
	}
	
	//x
	do{
		printf("inerire il numero di persone per ogni turno(compreso tra 3 e 5) : ");
		scanf("%d",&x);
	}while(x<3 || x>5);
}

void turni(void){
	//dichiarazioni
	int i,pos,lun;
	
	//generazione turni
	lun = len;
	for(i=0;i<x&&i<lun;i++){
		pos = rand()%len;
		strcpy(turno[i], cognomi[pos]);
		len--;
		riordina(pos);
	}
}

void riordina(int pos){
	//dichiarazioni
	int i;
	
	//riordinamento
	for(i=pos;i<len;i++)
		strcpy(cognomi[i], cognomi[i+1]);
}

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-2024 thecsea.it (Claudio Cardinale - [email protected])! Tutti i diritti riservati. - contattaci