Precedente :: Successivo |
Autore |
Messaggio |
CHicks Eroe
Registrato: 05/02/06 17:42 Messaggi: 47
|
Inviato: 08 Gen 2007 16:22 Oggetto: programmino in C |
|
|
Devo scrivere un programmino in C che calcoli la somma di una serie di n numeri naturali, ma non so come fare perchè il programma capisca che è stato inserito l'ultimo numero della serie. L'unica cosa che mi è venuta in mente è una cosa del tipo:
int a=0;
int b=0;
printf("inserisci una serie di numeri naturali e poi inserisci uno zero per terminare\n");
scanf("%d", &a);
while (a>0)
{
b=b+a;
scanf("%d", &a);
}
ma quello che a me interesserebbe è sapere se e come è possibile evitare che sia necessario un comando di fine del tipo "inserisci uno zero"
Mi serve per un esame che ho mercoledì 10, quindi vi sarei grato se rispondeste in modo tempestivo.
Grazie e scusate la banalità della richiesta.
Ciao,
Enrico |
|
Top |
|
|
longinous Eroe in grazia degli dei
Registrato: 29/06/06 12:32 Messaggi: 141 Residenza: la grande rete è la mia casa
|
Inviato: 08 Gen 2007 20:46 Oggetto: |
|
|
Non è possibile (almeno secondo me) in quanto il sistema si aspetta un numero indefinito di n, quindi dev'essere per forza inserito un comando di terminazione di inserimento, lo 0 in questo caso, ma se gli dicessi di controllare che a non sia null ("a!=null" mi pare), basta dire "Invio per terminare"
in pratica finchè hai numeri inserisci, una volta finiti schiacci invio e basta e via che vai, ma senza dirgli qualcosa nisba! |
|
Top |
|
|
CHicks Eroe
Registrato: 05/02/06 17:42 Messaggi: 47
|
Inviato: 09 Gen 2007 10:57 Oggetto: |
|
|
avevo già provato a usare null, anche se non so bene a cosa serva, comunque ho fatto come dici tu ma il compilatore mi da errore
#include <stdio.h>
int main()
{
int a=0;
int b=0;
printf("inserisci una serie di numeri naturali e poi premi invio\n");
scanf("%d", &a);
while(a!=null)
{
b=b+a;
scanf("%d", &a);
}
return 0;
}
il messaggio di errore dice:
"error...undeclared identifier 'null' "
e poi:
"warning...possible usage of null before definition"
quindi siamo al punto di prima...
help! |
|
Top |
|
|
Crono Semidio
Registrato: 24/03/05 14:12 Messaggi: 224 Residenza: Trieste
|
Inviato: 09 Gen 2007 12:42 Oggetto: |
|
|
Non ho familiarità con le funzioni printf e scanf del C perciò ho scritto il codice in c++ ma ho inserito dei commenti per spiegare le parti che potresti non capire per cui ti basta sostituire gli stream cin e cout con le funzioni printf e scanf e cambiare la libreria iostream con stdio e il programma dovrebbe funzionare correttamente
#include<iostream.h>
#include<conio.h>
void main() {
//dichiara due variabili, a deve essere inizializzata a 1 altrimenti il ciclo while non inizia mai
int a=1, b=0;
while(a!=0) {
clrscr(); //pulisci lo schermo
cout<<"Risultato: "<<b<<endl; //visualizza la stringa Risultato: e il contenuto di b poi sposta il cursore allinizio della riga successiva dello schermo
cout<<"Numero: "; //visualizza la stringa Numero:
cin>>a; //inserisci il valore digitato da tastiera nella variabile a
b+=a; //istruzione equivalente a b=b+a
}
}
A differenza del programma che avevi scritto tu con questo codice non devi prima inserire tutta la sequenza di numeri e poi visualizzare il risultato ma la somma viene aggiornata automaticamente ogni volta che aggiungi un numero |
|
Top |
|
|
CHicks Eroe
Registrato: 05/02/06 17:42 Messaggi: 47
|
Inviato: 09 Gen 2007 13:15 Oggetto: |
|
|
giusto, praticamente gli fai visualizzare la somma a ogni ciclo. proverò dopo pranzo a tradurre in C, anche se non so se sono in grado, in particolare non ho mai usato la funzione clrscr() e non so come funziona endl, però mi sembra fattibile.
comunque devo dire che il C++ mi sembra più facile del C, intendo di livello più alto, anche se forse questa osservazione è scontata.
una domanda: ma con C o C++ è possibile avere un programma che presenti un'interfaccia grafica? |
|
Top |
|
|
Crono Semidio
Registrato: 24/03/05 14:12 Messaggi: 224 Residenza: Trieste
|
Inviato: 09 Gen 2007 13:38 Oggetto: |
|
|
clrscr() cancella tutto quello che è visualizzato sullo schermo e endl è quasi l'equivalente di \n, creare interfacce grafiche in stile windows è possibile ma per non complicarti la vita ti serve un ambiente di sviluppo adatto, finora io ho usato (poco) Visual Studio e Borland Builder |
|
Top |
|
|
SverX Supervisor Macchinisti
Registrato: 25/03/02 11:16 Messaggi: 11568 Residenza: Tokelau
|
Inviato: 10 Gen 2007 16:08 Oggetto: Re: programmino in C |
|
|
CHicks ha scritto: | Devo scrivere un programmino in C che calcoli la somma di una serie di n numeri naturali, ma non so come fare perchè il programma capisca che è stato inserito l'ultimo numero della serie. |
Direi che invece di leggere dei numeri leggi una stringa e poi fai questo ragionamento: la stringa è vuota? No, allora contiene un numero, la converti e sommi e ricominci. La stringa è vuota? Sì, allora finito |
|
Top |
|
|
CHicks Eroe
Registrato: 05/02/06 17:42 Messaggi: 47
|
Inviato: 10 Gen 2007 19:58 Oggetto: |
|
|
il programma fatto come diceva crono funziona bene, a parte il fatto che ho eliminato la funzione clrscr perchè mi dava degli errori, comunque stamattina ho fatto l'esame di informatica e ho preso 27, quindi direi che è andata tutto sommato bene.
grazie per l'aiuto |
|
Top |
|
|
|