Logica algoritmo corretta?

di il
2 risposte

Logica algoritmo corretta?

Ciao a tutti,secondo voi quest'algoritmo è corretto, rispecchia quello che voleva l'esercizio 12.15?
Vi posto il link dell'esercizio ed il mio codice.

DESCRIZIONE ESERCIZIO.
Simulazione di un supermercato:

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

typedef struct cliente {
	int numero;
	struct cliente *next;
} Cliente;

typedef Cliente *ClientePtr;

int dequeue(ClientePtr *, ClientePtr *);
void unqueue(ClientePtr *, ClientePtr *, int);

int main() {
	
	int arrivi, uscite, i, num = 0;
	ClientePtr headPtr = NULL, tailPtr = NULL;
	
	srand(time(NULL));
	
	i = arrivi = 1 + rand() % 4;
	uscite = 1 + rand() % 4;
	unqueue(&headPtr,&tailPtr, ++num);
	arrivi += 1 + rand() % 4;
	for (; i <= 720; i += 1) {
		if(arrivi == i) {
		unqueue(&headPtr,&tailPtr, ++num);
		arrivi += 1 + rand() % 4;
		}
		if(headPtr != NULL && uscite-- == 0) {
			printf("Servito il cliente n.%d\n", headPtr->numero);
			dequeue(&headPtr,&tailPtr);
			uscite = 1 + rand() % 4;
		}
	}
	while (headPtr != NULL) {
		printf("Cliente %d rimasto fuori\n", dequeue(&headPtr,&tailPtr));
	}
	return 0;
}

void unqueue(ClientePtr *headPtr, ClientePtr *tailPtr,int value) {

	ClientePtr newPtr;

	if((newPtr = malloc(sizeof(Cliente)))) {
		newPtr->numero = value;
		newPtr->next = NULL;
		if(*headPtr == NULL)
			*headPtr = newPtr;
		else 
			(*tailPtr)->next = newPtr;

		*tailPtr = newPtr;
	}
}

int dequeue(ClientePtr *headPtr, ClientePtr *tailPtr) {

	int value;
	ClientePtr temp;

	if(*headPtr != NULL) {
		value = (*headPtr)->numero;
		temp = *headPtr;
		*headPtr = (*headPtr)->next;
		
	}
	else
		*tailPtr = NULL;

	free(temp);
	return value;
}

2 Risposte

  • Re: Logica algoritmo corretta?

    Nessuno può aiutarmi, non riesco a capire come bilanciare i valori.
  • Re: Logica algoritmo corretta?

    Richieste di questo tipo non hanno risposte perché sono troppo generiche. Non hai un problema specifico o un errore ma vuoi un "controllo di correttezza" di tutto quello che hai scritto. E chi ha il tempo per farlo?
Devi accedere o registrarti per scrivere nel forum
2 risposte