|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
[C] Programmino semplice, risultati errati
Ciao a tutti. Vi posto il codice del programmino che ho fatto che serve per calcolare la somma dei primi n numeri dispari e dei primi n numeri pari (con n definito da me a runtime):
#include <stdio.h> int main(){ int n,cnt,i=1,j=2,odd_sum=0,even_sum=0; scanf("%d",&n); cnt=0; while(cnt<n){ odd_sum+=i; even_sum+=j; ++cnt; i+=2; j+=2; } printf("Odd_sum: %d\n",odd_sum); printf("Even_sum: %d\n",even_sum); } A me come sintassi e logica sembra tutto corretto. Però se lo vado ad eseguire e provo a fare la somma dei primi 10 numeri, mi viene fuori per i dispari 100 e per i pari 110. Ma come è possibile? Compilo sotto Fedora Core 3. Un altro problema a proposito di questa distribuzione, praticamente ogni volta che includo la libreria math.h e chiamo qualche funzione, ad esempio come sqrt(), mi dice che praticamente non è definita da nessuna parte. Eppure il file math.h è presente tra le librerie C. Forse è definita in un altro modo? Grazie. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
|
è giusto almeno non ho guardato il codice ma la somma dei primi 10 numeri dispari è 100
~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
Hai perfettamente ragione sono rinco... io che ci vuoi fare
E per quanto riguarda quel fatto su Linux ne sai qualcosa? |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
|
Codice:
#include <stdio.h>
int main (void){
int i=0, rispari=0, risdispari=0, j, val;
scanf ("%d",&val);
for (j=0,i=0;j<val;i=i+2,j++){
risdispari = risdispari + i + 1;
rispari = rispari + i;
}
printf ("\npari %d\t", rispari);
printf ("\ndiapari %d\t", risdispari);
}
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
|
presumo che usi gcc ma dovrebbe funzionare tranquillamente.
Codice:
#include <stdio.h>
#include <math.h>
int main (void){
int i = sqrt (16);
printf ("%d", i);
}
~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
No no funziona sono io che ho fatto male i calcoli!
Per quanto riguarda quel fatto le librerie matematiche ne sai qualcosa? |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
|
mmm strano prova a reinstallare gcc
~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
Grazie mille. Potresti darmi una mano solamente per quest'altro programmino per favore?
Devo praticamente controllare l'impiego appropriato delle parentesi graffe in uno scritto C. Devo controllare se il numero delle parentesi destre è maggiore di quelle sinistre allora devo porre in quel punto del file di output due punti interrogativi. Alla fine del while devo controllare se le parentesi sinistre sono minori di quelle destre. Se così fosse devo stampare un messaggio d'errore con il numero delle parentesi mancanti, però non devo stampare il numero vero e proprio ma una serie di }}}} tante quante ne mancano. Ed è qui che ho il maggior problema. Ti posto come l'ho fatto io, ma mi da un'output strano. #include <stdio.h> #include <stdlib.h> int main(){ int left_cnt=0,right_cnt=0; char c; while((c=getchar())!=EOF){ if(c=='{') left_cnt++; else right_cnt++; if(right_cnt>left_cnt) putchar('?'); putchar('?'); } if(right_cnt==left_cnt) printf("Tutto OK!"); else printf("ERRORE: Parentesi chiuse mancanti: /*che ci metto qui????*/ Grazie ancora. |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Jun 2003
Città: Genova
Messaggi: 5676
|
per le librerie matematiche devi dirgli di prendere le librerie
gcc mio_file.c -lm dove -l è l'opzione, m sta per math ciao |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
Ah ecco!!! Ora mi ricordo. Grazie. Avevo letto infatti da qualche parte una cosa del genere. Grazie. Senti sai come posso risolvere il mio ultimo problema?
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Apr 2003
Città: Padova
Messaggi: 2929
|
Ci metti un ciclo che va dal numero di parentesi chiuse (che è più piccolo) a quello di parentesi aperte (più grande), e stampi un "}"
|
|
|
|
|
|
#12 | |
|
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16211
|
Quote:
Quindi, quando compili col classico "gcc program.c", ti dà errore. Devi essere tu a dire a gcc di linkare la libreria con l'opzione "-lm" (meno, elle, emme: scusa, ma in alcuni charset la lettera "l" minuscola, la lettera "I" maiuscola e la cifra "1" sono presso ché uguali...)
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu |
|
|
|
|
|
|
#13 | |
|
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16211
|
Quote:
Tanto, in ogni caso i cicli sono diversi a seconda che ci siano più graffe aperte o più graffe chiuse. E riguardo a questi cicli: usa putchar, non printf.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu |
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
Grazie mille a tutti
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:37.



















