Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
programmino in C
Nuovo argomento   Rispondi    Indice del forum -> Programmazione
Precedente :: Successivo  
Autore Messaggio
CHicks
Eroe
Eroe


Registrato: 05/02/06 17:42
Messaggi: 47

MessaggioInviato: 08 Gen 2007 16:22    Oggetto: programmino in C Rispondi citando

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
Profilo Invia messaggio privato
longinous
Eroe in grazia degli dei
Eroe in grazia degli dei


Registrato: 29/06/06 12:32
Messaggi: 141
Residenza: la grande rete è la mia casa

MessaggioInviato: 08 Gen 2007 20:46    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato HomePage
CHicks
Eroe
Eroe


Registrato: 05/02/06 17:42
Messaggi: 47

MessaggioInviato: 09 Gen 2007 10:57    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
Crono
Semidio
Semidio


Registrato: 24/03/05 14:12
Messaggi: 224
Residenza: Trieste

MessaggioInviato: 09 Gen 2007 12:42    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
CHicks
Eroe
Eroe


Registrato: 05/02/06 17:42
Messaggi: 47

MessaggioInviato: 09 Gen 2007 13:15    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
Crono
Semidio
Semidio


Registrato: 24/03/05 14:12
Messaggi: 224
Residenza: Trieste

MessaggioInviato: 09 Gen 2007 13:38    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 11:16
Messaggi: 11568
Residenza: Tokelau

MessaggioInviato: 10 Gen 2007 16:08    Oggetto: Re: programmino in C Rispondi citando

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 Smile
Top
Profilo Invia messaggio privato HomePage
CHicks
Eroe
Eroe


Registrato: 05/02/06 17:42
Messaggi: 47

MessaggioInviato: 10 Gen 2007 19:58    Oggetto: Rispondi

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
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Programmazione Tutti i fusi orari sono GMT + 1 ora
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi