Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - problema con un esercizio
Forum - C/C++ - problema con un esercizio

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
gighen991 (Normal User)
Newbie


Messaggi: 20
Iscritto: 27/04/2009

Segnala al moderatore
Postato alle 23:49
Domenica, 07/06/2009
ciao ragazzi!! ho un problema con questo esercizio... il testo è questo.. Scrivete un programma che sommi una sequenza di interi. Supponete che il primo intero letto con la scanf specifichi il numero dei valori che dovranno essere immessi. il vostro programma dovrà leggere solo un valore per ogni volta che la scanf sarà eseguita. Una tipica sequenza potrebbe essere:
5 100 200 300 400 500
dove 5 indica che dovranno essere sommati i 5 valori successivi...

grazie in anticipo!! :heehee:

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 0:42
Lunedì, 08/06/2009
Grazie ... in che senso?

Pensi che qualcuno ti faccia i compiti e basta?

Prova un po' tu a sbatterci la testa, proponi del codice e, se è il caso, si corregge tutti insieme ...

PM Quote
Avatar
gighen991 (Normal User)
Newbie


Messaggi: 20
Iscritto: 27/04/2009

Segnala al moderatore
Postato alle 11:55
Lunedì, 08/06/2009
scusate ma ieri sera mi hanno cacciato a letto e mi sono dimenticato di linkare il codice perchè lo stavo sistemando... eccolo cmq..

#include <iostream>
#include <stdio.h>

int numero,I,somma;

int main()
{
    printf("inserisci il numero dei valori immessi: ");
    printf("\nnumero uguale a quello dei valori x terminare: ");
    scanf("%d", &numero);
    
while (I != numero){
   printf("inserisci il valore");
   scanf("%d", &I);
}
   somma=I
   printf("la somma e: %d\n", somma);

system("pause");
return 0;
}

il problema è che se metto somma = I mi legge solo l'ultimo valore immesso senza sommarmi tutti i valori immessi....

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 12:07
Lunedì, 08/06/2009
ciao!

il problema come hai ben detto tu è che somma prende solo l'ultimo valore :)
se guardi bene ciò che hai scritto puoi capire il perchè^^
Tu assegni nel while a I ogni valore ma solo alla fine del programma metti I in somma^^
Prova invece a mettere somma nel while (ovviamente non semplicemente "somma = I" ^^)

Quello che devi fare in pratica e ad ogni ciclo aggiungere il numero a somma^^

ps. a cosa serve far inserire quanti numeri vuole immettere l'utente se poi potresti anche ciclare all'infinito? :)

PM Quote
Avatar
gigisoft (Member)
Guru


Messaggi: 696
Iscritto: 11/10/2008

Segnala al moderatore
Postato alle 12:08
Lunedì, 08/06/2009
Testo quotato

Postato originariamente da gighen991:

scusate ma ieri sera mi hanno cacciato a letto e mi sono dimenticato di linkare il codice perchè lo stavo sistemando... eccolo cmq..

[...]

il problema è che se metto somma = I mi legge solo l'ultimo valore immesso senza sommarmi tutti i valori immessi....



Salve,
innanzi tutto per il futoro ti consiglio di mettere il codice nei tag Code, risultera' piu' chiaro; poi e' ovvio che in somma andra' solo l'ultimo valore, poche' nel ciclo ogni valore sovrascrive quello precedente.
Anziche' mettere:
Codice sorgente - presumibilmente Plain Text

  1. somma = I; // col ;


alla fine del ciclo, dovresti mettere:

Codice sorgente - presumibilmente C/C++

  1. somma = 0;
  2.  
  3. while (I != numero){
  4.    printf("inserisci il valore");
  5.    scanf("%d", &I);
  6.    somma += I;  // In modo da sommare I ai valori precedenti.
  7. }


PM Quote
Avatar
gighen991 (Normal User)
Newbie


Messaggi: 20
Iscritto: 27/04/2009

Segnala al moderatore
Postato alle 12:31
Lunedì, 08/06/2009
Testo quotato

Postato originariamente da gigisoft:

Testo quotato

Postato originariamente da gighen991:

scusate ma ieri sera mi hanno cacciato a letto e mi sono dimenticato di linkare il codice perchè lo stavo sistemando... eccolo cmq..

[...]

il problema è che se metto somma = I mi legge solo l'ultimo valore immesso senza sommarmi tutti i valori immessi....



Salve,
innanzi tutto per il futoro ti consiglio di mettere il codice nei tag Code, risultera' piu' chiaro; poi e' ovvio che in somma andra' solo l'ultimo valore, poche' nel ciclo ogni valore sovrascrive quello precedente.
Anziche' mettere:
Codice sorgente - presumibilmente Plain Text

  1. somma = I; // col ;


alla fine del ciclo, dovresti mettere:

Codice sorgente - presumibilmente C/C++

  1. somma = 0;
  2.  
  3. while (I != numero){
  4.    printf("inserisci il valore");
  5.    scanf("%d", &I);
  6.    somma += I;  // In modo da sommare I ai valori precedenti.
  7. }




facendo come dici tu però la somma me la fa ogni volta che immetto un valore...e mi aggiunge alla somma anche il valore sentinella e poi termina il programma... invece io dovrei sommare tutto alla fine... fuori dal ciclo

PM Quote
Avatar
gigisoft (Member)
Guru


Messaggi: 696
Iscritto: 11/10/2008

Segnala al moderatore
Postato alle 12:35
Lunedì, 08/06/2009
Testo quotato

Postato originariamente da gighen991:

[...]

facendo come dici tu però la somma me la fa ogni volta che immetto un valore...e mi aggiunge alla somma anche il valore sentinella e poi termina il programma... invece io dovrei sommare tutto alla fine... fuori dal ciclo



allora devi per forza memorizzare tutto in un array, e dopo fare la somma.

Ciao. :k:

Luigi

PM Quote
Avatar
gighen991 (Normal User)
Newbie


Messaggi: 20
Iscritto: 27/04/2009

Segnala al moderatore
Postato alle 13:12
Lunedì, 08/06/2009
nnt ragazzi!!! ce l'ho fatta... ecco il codice completo!!


#include <iostream>
#include <stdio.h>

int numero,I,sum;

int main()
{
    printf("inserisci il numero dei valori immessi: ");
    printf("\nnumero uguale a quello dei valori x terminare: ");
    scanf("%d", &numero);
    
for(I>1; I!=numero; I++)
{
    printf("immetti numero intero o numero per terminare: ");
    scanf("%d",&I);
    if (I==numero)break;
    sum +=I;
}
printf("la somma e: %d\n", sum);

system("pause");
return 0;
}

grazie a tutti x l'aiuto!! :D

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 15:27
Lunedì, 08/06/2009
ti prego non farlo!:nono:
togli quel break :P
non sta bene usare i break :)

ps. nel tuo esempio la somma la fai comunque nel ciclo^^
ps2. inoltre non serve per come hai impostato il for^^
ps3. il primo valore che inserisci nel for dovrebbe avere un = non un > o < ^^
ricorda che se una cosa funziona non vuol dire che vada bene :)
non prenderla male ma come un consiglio, esistono miliardi di modi per fare la stessa cosa^^
dovresti cercare di usare sempre il migliore, senza fermarti al "funziona!" :)

Ultima modifica effettuata da il 08/06/2009 alle 15:31
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo