| 
 | |||||||
| 
 | 
|  | 
|  | 
|  | Strumenti | 
|  20-04-2005, 19:24 | #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. | 
|   |   | 
|  20-04-2005, 19:39 | #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 | 
|   |   | 
|  20-04-2005, 19:45 | #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? | 
|   |   | 
|  20-04-2005, 19:47 | #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 | 
|   |   | 
|  20-04-2005, 19:50 | #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 | 
|   |   | 
|  20-04-2005, 19:55 | #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? | 
|   |   | 
|  20-04-2005, 19:59 | #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 | 
|   |   | 
|  20-04-2005, 20:41 | #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. | 
|   |   | 
|  20-04-2005, 22:26 | #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 | 
|   |   | 
|  20-04-2005, 22:58 | #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?
		 | 
|   |   | 
|  20-04-2005, 23:20 | #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 "}"    | 
|   |   | 
|  21-04-2005, 12:03 | #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"  Chi scherza col fuoco si brucia. Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu | |
|   |   | 
|  21-04-2005, 12:07 | #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"  Chi scherza col fuoco si brucia. Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu | |
|   |   | 
|  21-04-2005, 14:11 | #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: 00:10.









 
		 
		 
		 
		










 
  
 



 
                        
                        










