[C] Sommare due numeri interi

Messaggioda Matte » 02/05/2017, 22:09

Ciao, ho fatto praticamente un programma in cui dovrei sommare due valori e visualizzare il risultato usando la funzione printf.
Ho utilizzato la funzione scanf, però mi è apparso subito un errore e leggendo ho modificato con scanf_s (anche se non ho capito il motivo per cui non andasse bene).
Il programma sembra che vada bene, però quando avvio il debug, non riesco a capire perchè nella schermata nera non mi appare scritto ciò:
Enter first integer
45
Enter second integer
72
Sum is 117

Invece di apparire quello scritto in precedenza, trovo scritto soltanto
Enter first integer
Questo è il mio programma:

Codice:
#include<stdio.h>

int main()
{
   int integer1 = 45;
   int integer2 = 72;
   int sum;
   
   printf("Enter first integer\n");
   scanf_s("%d", &integer1);

   printf("Enter second integer\n");
   scanf_s("%d", &integer2);

   sum = integer1 + integer2;

   printf("Sum is %d\n", sum);

   return 0;

}
Matte
Junior Member
Junior Member
 
Messaggio: 77 di 238
Iscritto il: 25/01/2017, 18:57

Re: [C] Sommare due numeri interi

Messaggioda kobeilprofeta » 03/05/2017, 08:54

Se lasci scanf che errore ti dà?
kobeilprofeta
Cannot live without
Cannot live without
 
Messaggio: 2355 di 5262
Iscritto il: 24/09/2012, 18:25

Re: [C] Sommare due numeri interi

Messaggioda kobeilprofeta » 03/05/2017, 08:55

E poi non devi mettere uno space dopo include?
kobeilprofeta
Cannot live without
Cannot live without
 
Messaggio: 2356 di 5262
Iscritto il: 24/09/2012, 18:25

Re: [C] Sommare due numeri interi

Messaggioda apatriarca » 03/05/2017, 10:24

La funzione scanf (o scanf_s) legge un valore in input, non lo scrive nella console in output. In base a quello che hai scritto il programma fa le seguenti cose:
1. Scrive "Enter first integer" nella console e va a capo.
2. Chiede un valore intero all'utente e lo scrive in integer1. Puoi ad esempio scrivere 45 e premere invio. Ma qualsiasi altro valore va bene.
3. Scrive "Enter second integer" nella console e va a capo.
4. Chiede un valore intero all'utente e lo scrive in integer2. Puoi ad esempio scrivere 72 e premere invio. Ma qualsiasi altro valore va bene.
5. Ti calcola la somma e la scrive nella console. Se avevi inserito 45 e 72 (o altri valori con la stessa somma), il risultato sarà 117 ma ovviamente dipende da cosa hai inserito.

Se volevi scrivere semplicemente i valori di integer1 e integer2 dovevi semplicemente usare printf ovunque..
apatriarca
Moderatore
Moderatore
 
Messaggio: 4614 di 10435
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: [C] Sommare due numeri interi

Messaggioda Matte » 03/05/2017, 11:55

@apatriarca
Grazie mille, ora ho capito perfettamente l'errore!!
Matte
Junior Member
Junior Member
 
Messaggio: 79 di 238
Iscritto il: 25/01/2017, 18:57

Re: [C] Sommare due numeri interi

Messaggioda insideworld » 03/05/2017, 11:58

ma 45 e 72 li vuoi prendere mentre scrivi il programma? se si perchè hai inizializzato le variabili a quei valori?
in pratica devi decidere se vuoi fare il primo o il secondo programma
Codice:
#include <stdio.h>

int main()
{
   int integer1 ;
   int integer2 ;
   int sum;
   
   printf("Enter first integer\n");
   scanf_s("%d", &integer1);

   printf("Enter second integer\n");
   scanf_s("%d", &integer2);

   sum = integer1 + integer2;

   printf("Sum is %d\n", sum);

   return 0;

}

questo primo prende i due numeri che scrivi durante l'esecuzione e ti da la somma
Codice:
#include<stdio.h>

int main()
{
   int integer1 = 45;
   int integer2 = 72;
   int sum;
   
   printf("first integer is %d\n",integer1);
   

   printf("second integer is %d\n",integer2);
   

   sum = integer1 + integer2;

   printf("Sum is %d\n", sum);

   return 0;

}


in questo caso tu stai dando i valori all'inizio e stai stampando i valori che hai scritto tu programmatore, senza dare la possibilità di inserirli manualmente(anche se penso che tu volessi fare la prima)
quello che hai scritto tu, ovvero inizializzare le variabili, si fa se tu vuoi dare un valore fisso, ad esempio voglio calcolare il doppio di un numero e posso scrivere:
int integer2 =2;
scrivo la scanf solo per integer1 e faccio il prodotto tra le due
prod = integer1 * integer2;
anche se potrei scrivere direttamente
prod = integer1 * 2;

oppure se hai un contatore che deve partire da zero ed essere incrementato, quindi devi essere sicuro di avere come valore di partenza zero, altrimenti potrebbe avere un valore casuale.
Se tu ci sovrascrivi il valore della scanf, qualsiasi valore ci fosse prima viene sovrascritto, quindi è inutile.(se io scrivo 1, quello sostituirà il valore di default da te assegnato, ovvero 45)
O meglio, se tu esegui il tuo programma e quando ti chiede il numero schiacci invio senza scrivere niente, allora sai che dentro la variabile rimarrà il valore che tu gli hai dato in partenza
Avatar utente
insideworld
Junior Member
Junior Member
 
Messaggio: 95 di 306
Iscritto il: 13/01/2017, 15:24

Re: [C] Sommare due numeri interi

Messaggioda Matte » 04/05/2017, 11:43

Grazie mille, adesso capisco perchè il valore viene sostituito di default!
Matte
Junior Member
Junior Member
 
Messaggio: 80 di 238
Iscritto il: 25/01/2017, 18:57


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite