|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Dec 2011
Messaggi: 24
|
[C] if con stringa char
Salve, io devo fare questo esercizio senza ricorrere a procedure :
"Scrivere un programma che simuli un salvadanaio. L'utente puo' inserire e prelevare soldi. Visualizzare salvadanaio vuoto se non ci sono soldi. Il numero di operazioni di inserimento e prelievo sono decise dall'utente." Io ho sviluppato questo codice, ma mi da vari errori, cos'è che non va ? #include <stdio.h> #include <stdlib.h> int main () { char scelta; int totale,i,prelievo,deposito,operazioni; printf ("quante operazioni vuoi fare"); scanf ("%d", &operazioni); printf ("quant'e' il totale?"); scanf ("%d",&totale); for (i=0;i<operazioni;i++) { printf ("%d",i); printf ("cosa vuoi fare?"); scanf ("%c",&scelta); fflush (stdin); if (scelta == "prelievo") { printf ("quanto vuoi prelevare"); scanf ("%d",&prelievo); totale = totale - prelievo; } if (scelta == "deposito") { printf ("quanto vuoi depositare"); scanf ("%d",&deposito); }} printf ("%d",totale); system ("Pause"); } Non ho messo l'if per il salvadanaio vuoto :S |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12962
|
Premesso che è meglio usare i tag CODE e indentare un po' il codice:
Codice:
#include <stdio.h>
#include <stdlib.h>
int main () {
char scelta;
int totale,i,prelievo,deposito,operazioni;
printf ("quante operazioni vuoi fare");
scanf ("%d", &operazioni);
printf ("quant'e' il totale?");
scanf ("%d",&totale);
for (i=0;i<operazioni;i++) {
printf ("%d",i);
printf ("cosa vuoi fare?");
scanf ("%c",&scelta);
fflush (stdin);
if (scelta == "prelievo") {
printf ("quanto vuoi prelevare");
scanf ("%d",&prelievo);
totale = totale - prelievo;
}
if (scelta == "deposito") {
printf ("quanto vuoi depositare");
scanf ("%d",&deposito);
}
}
printf ("%d",totale);
system ("Pause");
}
2) il confronto tra stringhe non si fa con l'operatore ==, ma con la funzione strcmp. |
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Dec 2011
Messaggi: 24
|
1) hai ragione, me n'ero dimenticato
2) cavolo, strcmp ! Ultima modifica di Giangiui : 18-12-2011 alle 10:03. |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Jan 2010
Città: (MB)
Messaggi: 11971
|
Quote:
Puoi al massimo inizializzare "scelta" come stringa e fare una sottospecie di menu, a quel punto fai: Codice:
if(strcmp(scelta,deposito)==0) ps: ricordati di inserire la libreria : Codice:
#include <string.h>
__________________
CPU: Ryzen 3700x DISSY: CM HYPER EVO 212 RAM: 16gb DDR4 3000Mhz MOBO: MSI b350 tomahawk VGA: MSI Ventus 2X 4060TI 16GB ALI: Cooler Master V550 SSD: Samsung 970 Evo Plus Trattive+:(a) topolino2808(x2), galfum, giap959, sm_morgan, Biduzzo, huangwei, maxmax80, bubbi, dinamite2, PaxNoctis;(v) rubrie, CubeDs, Slater91, Juvanni, FireFox152, gluvocio, giulio81, emahwupgrade, Velvet, semmy83, giocher03 Ultima modifica di tecno789 : 18-12-2011 alle 10:36. |
|
|
|
|
|
|
#5 | |
|
Junior Member
Iscritto dal: Dec 2011
Messaggi: 24
|
Quote:
|
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jan 2010
Città: (MB)
Messaggi: 11971
|
se ti posso dare una mano, io l'ho fatto così :
Codice:
#include <stdio.h>
#include <stdlib.h>
#define N 8
void menu();
int main () {
char scelta[N];
char prelievo[N]="prelievo";
char deposito[N]="deposito";
int totale,i,operazioni,pre,dep;
printf ("quante operazioni vuoi fare");
scanf ("%d", &operazioni);
printf ("quant'e' il totale?");
scanf ("%d",&totale);
for (i=0;i<operazioni;i++) {
printf ("%d",i);
printf ("cosa vuoi fare?");
menu();
scanf ("%s",scelta);
fflush (stdin);
if (strcmp(scelta,prelievo)==0)
{
if(totale==0){
printf("Non c'e' niente da prelevare \n");
break;
}
printf ("quanto vuoi prelevare");
scanf ("%d",&pre);
totale = totale - pre;
}
if (strcmp(scelta,deposito)==0) {
printf ("quanto vuoi depositare");
scanf ("%d",&dep);
totale = totale + dep;
}
}
printf ("%d \n",totale);
system ("Pause");
return 0;
}
void menu()
{
printf("\nScrivere prelievo(per prelevare) o deposito(per depositare) \n");
}
__________________
CPU: Ryzen 3700x DISSY: CM HYPER EVO 212 RAM: 16gb DDR4 3000Mhz MOBO: MSI b350 tomahawk VGA: MSI Ventus 2X 4060TI 16GB ALI: Cooler Master V550 SSD: Samsung 970 Evo Plus Trattive+:(a) topolino2808(x2), galfum, giap959, sm_morgan, Biduzzo, huangwei, maxmax80, bubbi, dinamite2, PaxNoctis;(v) rubrie, CubeDs, Slater91, Juvanni, FireFox152, gluvocio, giulio81, emahwupgrade, Velvet, semmy83, giocher03 |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:53.




















