Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
REDMI Note 17 Pro porta in fascia media una batteria da 8.340 mAh con ricarica HyperCharge a 67W, un display AMOLED da 6,83 pollici capace di picchi di luminosità molto elevati e una struttura certificata TÜV SÜD contro cadute e infiltrazioni d'acqua, il tutto racchiuso in una scocca da 223 grammi. Lo abbiamo provato per diversi giorni tra fotocamera, prestazioni, autonomia e prezzo sul mercato italiano
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 17-12-2011, 13:51   #1
Giangiui
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
Giangiui è offline   Rispondi citando il messaggio o parte di esso
Old 17-12-2011, 17:08   #2
WarDuck
Senior Member
 
L'Avatar di WarDuck
 
Iscritto dal: May 2001
Messaggi: 13043
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");
}
1) scelta non è una stringa, è un carattere singolo. Una stringa è un array di caratteri.

2) il confronto tra stringhe non si fa con l'operatore ==, ma con la funzione strcmp.
WarDuck è offline   Rispondi citando il messaggio o parte di esso
Old 18-12-2011, 08:59   #3
Giangiui
Junior Member
 
Iscritto dal: Dec 2011
Messaggi: 24
1) hai ragione, me n'ero dimenticato
2) cavolo, strcmp ! e come si implementa in questo caso?

Ultima modifica di Giangiui : 18-12-2011 alle 09:03.
Giangiui è offline   Rispondi citando il messaggio o parte di esso
Old 18-12-2011, 09:24   #4
tecno789
Senior Member
 
L'Avatar di tecno789
 
Iscritto dal: Jan 2010
Città: (MB)
Messaggi: 11971
Quote:
Originariamente inviato da Giangiui Guarda i messaggi
1) hai ragione, me n'ero dimenticato
2) cavolo, strcmp ! e come si implementa in questo caso?
nel tuo caso, non puoi confrontare una stringa con un carattere.

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 09:36.
tecno789 è offline   Rispondi citando il messaggio o parte di esso
Old 18-12-2011, 10:27   #5
Giangiui
Junior Member
 
Iscritto dal: Dec 2011
Messaggi: 24
Quote:
Originariamente inviato da tecno789 Guarda i messaggi
nel tuo caso, non puoi confrontare una stringa con un carattere.

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>
grazie dell'aiuto, ora provo
Giangiui è offline   Rispondi citando il messaggio o parte di esso
Old 18-12-2011, 10:36   #6
tecno789
Senior Member
 
L'Avatar di tecno789
 
Iscritto dal: Jan 2010
Città: (MB)
Messaggi: 11971
Quote:
Originariamente inviato da Giangiui Guarda i messaggi
grazie dell'aiuto, ora provo
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");
}
ovviamente esistono modi migliori e molto meglio ottimizzati, a partire dallo switch-case che in questo caso ti avrebbe aiutato parecchio!
__________________
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
tecno789 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Home Assistant su uno schermo touch econ...
L'IA entra nei negozi Unieuro con Google...
"What Holds Us", la nuova most...
La Formula 1 divide sui motori, ma il su...
Un computer a DNA esegue moltiplicazioni...
Ibride cinesi, l'Europa fissa il tetto a...
iPhone Duo potrebbe dar vita a una gamma...
Denza Z9S: la berlina elettrica con il r...
Valve abilita i driver e il supporto all...
Terafab, il progetto di Musk finisce in ...
Il meglio di Amazon in 42 articoli: sono...
ECOVACS WINBOT W2 PRO OMNI a 349€: ecco ...
Samsung Gallery Cloud Sync introduce il ...
Dyson V8 Cyclone a 249€: scopa elettrica...
Rifiuti elettronici, l'altra faccia dell...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 13:25.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v