Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Dreame Aqua10 Ultra Roller, la pulizia di casa con un rullo
Dreame Aqua10 Ultra Roller, la pulizia di casa con un rullo
Il più recente robot per la pulizia domestica di Dreame, modello Aqua10 Ultra Roller, abbina un potente motore di aspirazione della polvere a un sofisticato sistema di lavaggio con rullo integrato. Il tutto governato dalla logica di intelligenza artificiale, per i migliori risultati
Recensione Realme 15 Pro Game Of Thrones: un vero cimelio tech per pochi eletti
Recensione Realme 15 Pro Game Of Thrones: un vero cimelio tech per pochi eletti
Siamo volati fino a Belfast, capitale dell'Irlanda Del Nord, per scoprire il nuovo Realme 15 Pro 5G Game Of Thrones Limited Edition. Una partnership coi fiocchi, quella tra Realme e HBO, un esercizio di stile davvero ben riuscito. Ma vi raccontiamo tutto nel nostro articolo
GIGABYTE GAMING A16, Raptor Lake e RTX 5060 Laptop insieme per giocare al giusto prezzo
GIGABYTE GAMING A16, Raptor Lake e RTX 5060 Laptop insieme per giocare al giusto prezzo
Il Gigabyte Gaming A16 offre un buon equilibrio tra prestazioni e prezzo: con Core i7-13620H e RTX 5060 Laptop garantisce gaming fluido in Full HD/1440p e supporto DLSS 4. Display 165 Hz reattivo, buona autonomia e raffreddamento efficace; peccano però le USB e la qualità cromatica del pannello. Prezzo: circa 1200€.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 08-12-2005, 13:54   #1
kheper
Junior Member
 
Iscritto dal: Dec 2005
Messaggi: 6
[Incomprensibilie C]--primi passi

Ciao a tutti...
Ho da poco iniziato con il C, scaricando alcuni corsi per principianti presenti online... fortunatamente ho anche un amico un po' più esperto che mi sta aiutando in questo avvio... ma sono sorti alcuni problemi che non sappiamo come risolvere.
Per farla breve, ho notato che alcuni programmi didattici presenti in quei corsi, mi danno dei risultati strambi, o addirittura non funzionano, così ho chiesto al mio amico di trovare gli eventuali errori e sorpresa, a lui funzionano correttamente! In pratica lo stesso codice, su 2 pc diversi produce 2 risultati diversi. Addirittura lo stesso programma compilato da lui (quindi un .exe) da lui produce un risultato e da me un altro.
Ovviamente parliamo di programmini semplicissimi, calcola media, stampa valori ecc ecc.
Il mio amico mi ha detto che potrebbe essere un problema relativo ai sistemi operativi, poichè lui usa linux e io xp.
Il compilatore è lo stesso per entrambi, e si tratta di DevC++.
Mi ha anche detto qualcosa tipo "il problema è che questi programmi cercano di accedere direttamente alla memoria, ma il Windows ci mette lo zampino e glielo impedisce, facendogli sballare tutti i valori".
Se volete posso anche postare il codice incrimato poichè si tratta di poche righe... ma ora mi chiedo, da programmatore che muove i primi passi, e non volendo abbandonare windows per linux solo per far girare correttamente un programma che calcola una media matematica, come devo procedere per essere sicuro che un codice scritto correttamente, funzioni in maniera corretta anche sul mio pc?
Grazie a tutti...
kheper è offline   Rispondi citando il messaggio o parte di esso
Old 08-12-2005, 13:59   #2
Gica78R
Senior Member
 
L'Avatar di Gica78R
 
Iscritto dal: Mar 2005
Messaggi: 1653
Quote:
Originariamente inviato da kheper
Addirittura lo stesso programma compilato da lui (quindi un .exe) da lui produce un risultato e da me un altro.


Ma se lui lo compila sotto Linux, come puoi tu eseguire il binario sotto Win?

Cmq posta il sorgente, che sono curioso...
__________________
gica78r@ncc-1701:~$ tar -c
tar: Codardamente mi rifiuto di creare un archivio vuoto
Gica78R è offline   Rispondi citando il messaggio o parte di esso
Old 08-12-2005, 21:12   #3
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da kheper
Il mio amico mi ha detto che potrebbe essere un problema relativo ai sistemi operativi, poichè lui usa linux e io xp.
Il compilatore è lo stesso per entrambi, e si tratta di DevC++.
Il Dev-C++, che io sappia (pur non avendolo mai usato), esiste solo per Windows. Quindi o il tuo amico non usa linux oppure non usa il Dev-C++.

Quote:
Originariamente inviato da kheper
Se volete posso anche postare il codice incrimato poichè si tratta di poche righe...
Sarebbe meglio, potremmo capirci di più.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 08-12-2005, 21:31   #4
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da andbin
Il Dev-C++, che io sappia (pur non avendolo mai usato), esiste solo per Windows. Quindi o il tuo amico non usa linux oppure non usa il Dev-C++.
probabilmente intendeva dire che il compilatore è il gcc (Dev-C++ usa MinGW).
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 08-12-2005, 23:03   #5
kheper
Junior Member
 
Iscritto dal: Dec 2005
Messaggi: 6
Quote:
Originariamente inviato da 71104
probabilmente intendeva dire che il compilatore è il gcc (Dev-C++ usa MinGW).


Grazie a tutti per le risposte...
Aggiungo alcuni dettagli.
La mia versione di DevC++ è: 4.9.8.0,
mentre la sua è 4.9.9.2, oppure, quando usa il pc con linux, mi ha detto che "va direttamente di gcc".
Il codice incriminato è il seguente:

#include <stdio.h>

int main(void)
{
int numerucci[10];
int cont;
float media;

for (cont=0; cont<10; cont++)
{
printf("\nDammi il numero %d: ",cont);
scanf("%d",&numerucci[cont]); /* Scrivo nell'array */
}
for (cont=0; cont<10; cont++) media=media+numerucci[cont];

media /= 10;
printf("\nLa media tra i numeri introdotti e' %f.\n",media);
return(0);
}


copiato e incollato direttamente dal corso di C scaricato. l'unica variazione che ho effettuato è stata quella di sostituire il tipo della variabile "media" che in origine era "int", ma in entrambi i casi i risultati sono sballati, mentre a lui questo codice funziona perfettamente.
Come questo, anche altri miniprogrammi hanno dato risultati discordanti...
kheper è offline   Rispondi citando il messaggio o parte di esso
Old 09-12-2005, 09:23   #6
shinya
Senior Member
 
L'Avatar di shinya
 
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
Quote:
Originariamente inviato da kheper
#include <stdio.h>

int main(void)
{
int numerucci[10];
int cont;
float media;
Sappi che se scrivi "float media" senza dare un valore, è molto probabile che il valore assegnato a quella variabile sia assolutamente casuale. Quindi quando dopo vai ad usarla con quel media = media + numerucci[cont] o quello che è, è probabile che usi un valore iniziale di 'media' che non avevi previsto. Penso, se la memoria non mi inganna, che questa questione lo standard la lasci alle singole implementazioni.
Cmq prova a dirgli

flot media = 0.0;
shinya è offline   Rispondi citando il messaggio o parte di esso
Old 09-12-2005, 10:57   #7
Louder Than Hell
Senior Member
 
L'Avatar di Louder Than Hell
 
Iscritto dal: Nov 2002
Città: Cagliari
Messaggi: 844
Quoto shynia, il problema è quello

Il devc++ eiste per:
Quote:
Free Software (GPL)
For Windows 95, 98, NT, 2000, XP
Per cui magari il tuo amico usa ANCHE windows..anche perchè se no il suo eseguibile non funzionerebbe sul tuo windows
__________________
Non ho paura dei computer, ma della loro eventuale mancanza. (Asimov)
Una delle principali cause della caduta dell'Impero Romano fu che, privi dello zero, non avevano un modo per indicare la corretta terminazione dei loro programmi C. (Firth)
Louder Than Hell è offline   Rispondi citando il messaggio o parte di esso
Old 09-12-2005, 11:22   #8
kheper
Junior Member
 
Iscritto dal: Dec 2005
Messaggi: 6
Quote:
Originariamente inviato da Louder Than Hell
Quoto shynia, il problema è quello

Il devc++ eiste per:


Per cui magari il tuo amico usa ANCHE windows..anche perchè se no il suo eseguibile non funzionerebbe sul tuo windows

Esatto.. nel primo post non avevo le idee molto chiare, ma nel secondo ho chiarito la doppia possibilità di cui lui dispone.
kheper è offline   Rispondi citando il messaggio o parte di esso
Old 09-12-2005, 11:27   #9
kheper
Junior Member
 
Iscritto dal: Dec 2005
Messaggi: 6
Quote:
Originariamente inviato da shinya
Sappi che se scrivi "float media" senza dare un valore, è molto probabile che il valore assegnato a quella variabile sia assolutamente casuale. Quindi quando dopo vai ad usarla con quel media = media + numerucci[cont] o quello che è, è probabile che usi un valore iniziale di 'media' che non avevi previsto. Penso, se la memoria non mi inganna, che questa questione lo standard la lasci alle singole implementazioni.
Cmq prova a dirgli

flot media = 0.0;

Non è un problema di inizializzazione in quanto sia inizializzata che no da esattamente lo stesso risultato.
Inoltre, il problema sussiste sia se sono io a compilare il codice, sia se utilizzo direttamente l'eseguibile passatomi dal mio amico (che, ripeto, a lui funziona perfettamente). In tutti i casi a me vien fuori sempre lo stesso risultato , e precisamente, un numero di 9 cifre se utilizzo una variabile int, un numero di più o meno 15 cifre con 4 decimali se utilizzo la variabile float...
kheper è offline   Rispondi citando il messaggio o parte di esso
Old 09-12-2005, 11:33   #10
Louder Than Hell
Senior Member
 
L'Avatar di Louder Than Hell
 
Iscritto dal: Nov 2002
Città: Cagliari
Messaggi: 844
Quote:
Originariamente inviato da kheper
Non è un problema di inizializzazione in quanto sia inizializzata che no da esattamente lo stesso risultato.
Inoltre, il problema sussiste sia se sono io a compilare il codice, sia se utilizzo direttamente l'eseguibile passatomi dal mio amico (che, ripeto, a lui funziona perfettamente). In tutti i casi a me vien fuori sempre lo stesso risultato , e precisamente, un numero di 9 cifre se utilizzo una variabile int, un numero di più o meno 15 cifre con 4 decimali se utilizzo la variabile float...
Ma hai provato ad assegnare a media il valore 0 prima di fare la media?
__________________
Non ho paura dei computer, ma della loro eventuale mancanza. (Asimov)
Una delle principali cause della caduta dell'Impero Romano fu che, privi dello zero, non avevano un modo per indicare la corretta terminazione dei loro programmi C. (Firth)
Louder Than Hell è offline   Rispondi citando il messaggio o parte di esso
Old 09-12-2005, 11:38   #11
kheper
Junior Member
 
Iscritto dal: Dec 2005
Messaggi: 6
Quote:
Originariamente inviato da Louder Than Hell
Ma hai provato ad assegnare a media il valore 0 prima di fare la media?

Si, l'ho fatto.
Inoltre, il fatto che l'eseguibile compilato da lui, a lui funziona e a me da un risultato diverso, dovrebbe farti abbandonare definitivamente questa ipotesi.
kheper è offline   Rispondi citando il messaggio o parte di esso
Old 09-12-2005, 12:16   #12
Louder Than Hell
Senior Member
 
L'Avatar di Louder Than Hell
 
Iscritto dal: Nov 2002
Città: Cagliari
Messaggi: 844
Quote:
Originariamente inviato da kheper
Si, l'ho fatto.
Inoltre, il fatto che l'eseguibile compilato da lui, a lui funziona e a me da un risultato diverso, dovrebbe farti abbandonare definitivamente questa ipotesi.
Be...se non fai media=0 è ovvio che a lui da un risultato diverso perchè dovrebbe essere psudocasuale cosi

Se fai anche media=0 allora non so
__________________
Non ho paura dei computer, ma della loro eventuale mancanza. (Asimov)
Una delle principali cause della caduta dell'Impero Romano fu che, privi dello zero, non avevano un modo per indicare la corretta terminazione dei loro programmi C. (Firth)
Louder Than Hell è offline   Rispondi citando il messaggio o parte di esso
Old 10-12-2005, 10:07   #13
Gica78R
Senior Member
 
L'Avatar di Gica78R
 
Iscritto dal: Mar 2005
Messaggi: 1653
Quote:
Originariamente inviato da kheper
Non è un problema di inizializzazione in quanto sia inizializzata che no da esattamente lo stesso risultato.
Inoltre, il problema sussiste sia se sono io a compilare il codice, sia se utilizzo direttamente l'eseguibile passatomi dal mio amico (che, ripeto, a lui funziona perfettamente). In tutti i casi a me vien fuori sempre lo stesso risultato , e precisamente, un numero di 9 cifre se utilizzo una variabile int, un numero di più o meno 15 cifre con 4 decimali se utilizzo la variabile float...
Scusa, non ho capito del tutto quel che accade
In pratica, il risultato che ottieni, a prescindere dal tipo di dato che utilizzi, e' corretto? Cioe', se fai la media inserendo dieci volte il valore 10, ottieni come risultato 10 (indipendentemente dalla precisione, nel caso dei float), oppure hai proprio risultati non corretti?

ciao
__________________
gica78r@ncc-1701:~$ tar -c
tar: Codardamente mi rifiuto di creare un archivio vuoto
Gica78R è offline   Rispondi citando il messaggio o parte di esso
Old 10-12-2005, 12:11   #14
pietro84
Member
 
L'Avatar di pietro84
 
Iscritto dal: Nov 2005
Messaggi: 154
Quote:
Originariamente inviato da Gica78R
Scusa, non ho capito del tutto quel che accade
In pratica, il risultato che ottieni, a prescindere dal tipo di dato che utilizzi, e' corretto? Cioe', se fai la media inserendo dieci volte il valore 10, ottieni come risultato 10 (indipendentemente dalla precisione, nel caso dei float), oppure hai proprio risultati non corretti?

ciao
io ho capito che esce un numero completamente scorretto.
scusa ma dopo aver modificato il testo inizializzando la variabile media a 0 hai ricompilato? a volte capitano queste sviste
l'unica causa di errore è attribuibile alla mancata inizializzazione di quella variabile. al max puoi sostituire "media/=10" con "media=media/10" che è più pulito...se non riesci e ho tempo provo a compilarlo anch'io.
pietro84 è offline   Rispondi citando il messaggio o parte di esso
Old 10-12-2005, 12:19   #15
pietro84
Member
 
L'Avatar di pietro84
 
Iscritto dal: Nov 2005
Messaggi: 154
l'ho compilato su dev-c++ : se media non è inizializzato da logicamente problemi,inizializzando media a 0 e ricompilando funziona.
pietro84 è offline   Rispondi citando il messaggio o parte di esso
Old 10-12-2005, 14:38   #16
Gica78R
Senior Member
 
L'Avatar di Gica78R
 
Iscritto dal: Mar 2005
Messaggi: 1653
Quote:
Originariamente inviato da pietro84
l'ho compilato su dev-c++ : se media non è inizializzato da logicamente problemi,inizializzando media a 0 e ricompilando funziona.
Io l'ho compilato su Mac con gcc 4.0 e ovviamente funziona (inizializzando media a zero).
__________________
gica78r@ncc-1701:~$ tar -c
tar: Codardamente mi rifiuto di creare un archivio vuoto
Gica78R è offline   Rispondi citando il messaggio o parte di esso
Old 10-12-2005, 15:00   #17
redcloud
Bannato
 
L'Avatar di redcloud
 
Iscritto dal: Feb 2003
Città: Anche Chuck Norris usa Debian e Gnome
Messaggi: 1270
Se inizializzo media a 0 e do in input 10 volte 1, il risultato è 1.000000.
Se non inizializzo media e do in input 10 volte 1, il risultato è 0.999997.

gcc version 4.0.3 20051201 (prerelease) (Debian 4.0.2-5)
redcloud è offline   Rispondi citando il messaggio o parte di esso
Old 10-12-2005, 15:25   #18
Louder Than Hell
Senior Member
 
L'Avatar di Louder Than Hell
 
Iscritto dal: Nov 2002
Città: Cagliari
Messaggi: 844
A me su linux funziona sia che faccia media = 0 sia che non lo faccia, non so se è merito di linux (ma non credo)
__________________
Non ho paura dei computer, ma della loro eventuale mancanza. (Asimov)
Una delle principali cause della caduta dell'Impero Romano fu che, privi dello zero, non avevano un modo per indicare la corretta terminazione dei loro programmi C. (Firth)
Louder Than Hell è offline   Rispondi citando il messaggio o parte di esso
Old 10-12-2005, 18:14   #19
pietro84
Member
 
L'Avatar di pietro84
 
Iscritto dal: Nov 2005
Messaggi: 154
in ogni caso è scorretto non inizializzare la variabile media. la causa non può essere che questa.può darsi che gcc(non ricordo però se lo fa)inizializza automaticamente la variabile a 0,vedendo che non è inizializzata in nessuna riga di codice.
pietro84 è offline   Rispondi citando il messaggio o parte di esso
Old 11-12-2005, 00:06   #20
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da shinya
Penso, se la memoria non mi inganna, che questa questione lo standard la lasci alle singole implementazioni.
su Windows le variabili non inizializzate vengono sempre inizializzate automaticamente a 0 a meno che, come accade nel caso di kheper, non vengano scritte in locazioni "sporche" appena deallocate dallo stack: le variabili locali della main non inizializzate di conseguenza sono quasi sempre diverse da zero.
71104 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Dreame Aqua10 Ultra Roller, la pulizia di casa con un rullo Dreame Aqua10 Ultra Roller, la pulizia di casa c...
Recensione Realme 15 Pro Game Of Thrones: un vero cimelio tech per pochi eletti Recensione Realme 15 Pro Game Of Thrones: un ver...
GIGABYTE GAMING A16, Raptor Lake e RTX 5060 Laptop insieme per giocare al giusto prezzo GIGABYTE GAMING A16, Raptor Lake e RTX 5060 Lapt...
iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile iPhone 17 Pro: più di uno smartphone. &Eg...
Intel Panther Lake: i processori per i notebook del 2026 Intel Panther Lake: i processori per i notebook ...
Nuovi prezzi, più bassi: scendono...
PC Desktop HP Victus con RTX 4060 e Ryze...
Giù di altri 10€: solo 939€ per M...
Offerte Amazon da non credere: sconti fo...
Windows 11 scivola sugli aggiornamenti d...
Razer Kiyo V2: la nuova webcam 4K con AI...
ASUS ROG NUC 9: i mini PC (ex) Intel, ad...
Streaming illegale, il ministro dello Sp...
Microsoft avrebbe affidato a Intel la pr...
'Un momento storico': Jensen Huang annun...
Panasonic Lumix S9: disponibile in quatt...
Nikon presenta due obiettivi: NIKKOR Z D...
Horizon vs Light of Motiram, si entra ne...
Atari rilancia Intellivision Sprint e fa...
Leapmotor lancia in Italia il SUV elettr...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 10:33.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v