Programma in C

opil
Ciao a tutti!

Ho una domanda riguardante il linguaggio di programmazione C.

Questo è il testo del mio problema:

Si sviluppi un programma in linguaggio C che, come nel caso di una macchina distributrice di caffè, riceve in ingresso un numero intero positivo N (corrispondente ad un importo da pagare in centesimi) e, successivamente, una sequenza di numeri interi corrispondenti alle monete inserite, che possono essere da 1, 5, 10, 20 e 50 centesimi. E’ richiesto che il programma ripeta l’acquisizione di ciascun numero se non corrisponde ad una moneta tra quelle indicate. Appena l’importo richiesto N viene raggiunto o superato, il programma interrompe l’acquisizione della sequenza e restituisce una serie di numeri interi corrispondenti al resto in monete da 1 e 5 centesimi.
Ad esempio, se il programma riceve N=101 e la sequenza 50, 20, 20, 20, produce in uscita 5, 1, 1, 1, 1.


E' da questo pomeriggio che ci sbatto la testa ma non ne esco fuori..

Cosa devo utilizzare per fare in modo che il programma continui a chiedere delle nuove monete (cifre) fino a quando non è stata superata la somma da pagare (N)?

Ho pensato ad un while.. ma nulla da fare.. con il for non viene!

Suggerimenti?

Grazie
Ciaoo :)

Risposte
Camillo
Sposto in Informatica.

apatriarca
Inizia a mostrarci il codice che sei riuscito a scrivere. Il codice può essere scritto con qualsiasi ciclo (offrono molta più libertà di quanto forse non ti abbiano fatto capire), ma probabilmente utilizzerei un while o un do..while.

opil
Ciao!

Questo è il codice che ho utilizzato! Io ora sono arrivato a metà esercizio... l'utente inserisce l'importo da pagare.. inserisce le monete.. se inserisce una moneta da 2 cent ad esempio viene la scritta che non è accettata ecc

Adesso però manca il resto.. non riesco a fare in modo che il programma mi calcoli il resto e lo divida in monete da 5 e da 1!

Suggerimenti :D

Grazie

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

int main ()
{
	int totale, moneta, somma, count, resto;
	int resto_rimasto = resto;
	printf("\nDigita l'importo che devi pagare:\n");
	scanf("%d", &totale);
	
	printf("\nIn totale devi pagare: %d cent.\n", totale);
	
	count=0;
	somma=0;
	do
	{
		printf("Inserisci le monete fino al raggiungimento dell'importo.\n");
		scanf("%d", &moneta);
		
		if (moneta !=1 && moneta != 5 && moneta != 10 && moneta != 20 && moneta !=50)
		{
			printf("Attenzione! Non accetta le monete da: %d cent.\n", moneta);
			printf("Accetta solo monete da 1, 5, 10, 20, 50.\n\n");
		}	
		else
		{	
			somma+=moneta;
			count=count+moneta;
		}
	}
	while(count<totale);
	
	printf("\nIn totale hai inserito: %d cent.\n", count);
	
	resto = count - totale;
	
	if (resto == 0)
		printf("Hai pagato la bevanda! A presto!\n);
	else
	printf("Il resto è di : %d cent.\n", resto);
		
	printf("\n");
	return 0;
}

vict85
Prova a pensare a come faresti tu... Se tu dovessi pagare 17 centesimi in monetine di 5 e 1 cent come li divideresti?

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.