Problème avec les types de variables en C [C] - C - Programmation
Marsh Posté le 28-03-2005 à 11:05:56
annadivx a écrit : En effet,
|
Merci de cette réponse rapide
Apperement le programme marche chez toi car la densité est censée tendre vers 0.74 et quelque (normalement avec des très gros nombres la valeur est à peu près stable).
Pour l'histoire du long double, que devrais je mettre à la place ?
Marsh Posté le 28-03-2005 à 11:35:34
Super, en double ca marche pas mal du tout
Merci beaucoup.
En fait, le long double ne peut fonctionner que sur des machines 64 bits ? Et les stations sun sont donc en 64 bits ?
J'aurais appris un truc sympa en tout cas grace à ce problème
Marsh Posté le 28-03-2005 à 11:38:39
Et une autre petite question, j'en profite
Peut-on afficher des caractères accentués dans printf ?
Marsh Posté le 28-03-2005 à 12:34:03
J'ai trouvé pour les caractères accentués, il faut utiliser la fonction chartooem afin de convertir le texte en un format utilisable dans printf
Mon programme ressemble enfin à quelque chose, merci beaucoup annadivx
Marsh Posté le 28-03-2005 à 13:27:28
bottedumal a écrit : |
Et il t'a dit de faire ça:
|
Change d'école... "%d" attend l'adresse d'un int, pas d'un long. Pour un long, il faut mettre "%ld". Pour un unsigned long, c'est "%lu".
"déclaration des variables |
C'est pas comme ça qu'on défini un commentaire en C... Et il vaut mieux éviter les accents...
/* declaration des variables */ |
D'autre part, c'est pas déclaration mais definition, et en plus, une définition de variable, c'est évident et ça peut se faire au début de n'importe quel bloc. Ce commentaire est donc inutile...
Marsh Posté le 28-03-2005 à 13:42:01
Ah ouaih .. je dois avoir un pb de vocabulaire moi ...
Pour moi la déclaration c'est ça : int nToto;
c'est à dire que quand il y a déclaration il y a allocation.
alors que lorsqu'on definit un truc, il n'y a pas allocation.
genre : typedef toto int
ou bien :
class CToto
{
...
};
Marsh Posté le 28-03-2005 à 13:50:59
cricri_ a écrit : Ah ouaih .. je dois avoir un pb de vocabulaire moi ... |
Pas du C...
Définition d'un objet
int x; |
Déclaration d'un objet
extern int x; |
Définition d'une fonction
int f(void) |
Déclaration d'une fonction
int f(); |
Déclaration d'une fonction (prototype)
int f(void); |
Marsh Posté le 28-03-2005 à 13:54:23
cricri_ a écrit : Ah ouaih .. je dois avoir un pb de vocabulaire moi ... |
La déclaration, c'est indiquer au compilo tout ce que tu utilises, même si la mémoire associée est définie ailleurs.
|
Ca ce sont des déclarations, pas des définitions
La définition, c'est créer la variable ou le code de tes fonctions ou de tes objets (c++)
class CToto |
Edited: Désolé Emmanuel, on a répondu en même temps...
Marsh Posté le 28-03-2005 à 14:00:11
Emmanuel Delahaye a écrit :
|
voire %lu
Marsh Posté le 28-03-2005 à 14:04:41
Taz a écrit : voire %lu |
Marsh Posté le 28-03-2005 à 14:04:53
ReplyMarsh Posté le 28-03-2005 à 14:11:58
Emmanuel Delahaye a écrit : [Merci d'apprendre à utiliser les balises pour le code. Séléctionner, puis boutons [Fixe] ou [C/C++]. C'est expliqué dans les regles du forum que tu n'as pas lues...]
|
Désolé pour la balise, j'ai corrigé !
Au niveau du %d dans le scanf, je vais essayer avec le %ld, enfin ceci dit ca fonctionne avec le %d, même si c'est quelque part incorrect. Changer d'école ... C'est un peu radical Y'a pas beaucoup de MPSI qui propose d'apprendre le C, donc même si le prof est mauvais, je m'en contente largement
Pour le commentaire, je les avaient mis sur le forum pour la compréhension du programme, mais je me suis en effet rendu compte quand j'ai voulu compiler que la syntaxe était mauvaise Quand tu dit qu'il faut éviter les accents, c'est dans le programme, mais dans les commentaires il y a des risques à en mettre ?
Marsh Posté le 28-03-2005 à 14:18:09
Taz a écrit : voire %lu |
Exact, je complète.
Marsh Posté le 28-03-2005 à 14:28:12
bottedumal a écrit : Désolé pour la balise, j'ai corrigé ! |
mais pas dans ton post original...
Citation : |
Non. Comportement indéfini.
Citation : |
What ? Tu postes du code que tu n'as pas compilé ? Tu te prends pour un génie ou quoi ? On fait tous des erreurs!
Citation : |
Oui. Les caractères portables du C sont décrits ici :
http://mapage.noos.fr/emdel/codage.htm
Marsh Posté le 28-03-2005 à 15:18:49
Emmanuel Delahaye a écrit : mais pas dans ton post original...
|
Heuresement que annadivx nous à laissé quelque post, sinon on pourrait se demander si l'aimabilité est interdite dans cette sous cat
- J'ai pourtant l'impression que la balise à été corrigée dans le post original, je voie pas quoi faire d'autre, désolé
- Si je viens sur un forum de programmation, poser une question qui n'a à priori rien d'excessivement difficile, même si je n'arrive pas à y trouver la réponse, c'est que je dois pas me prendre pour un génie... D'autre part, se tromper de syntaxe pour les commentaires, quelle erreur de programmation ... J'aurais du compiler avant pour vérifier en effet, je suis désolé si tu as mis beaucoup de temps avant de comprendre que les " précédaient des commentaires ...
-Merci pour le lien.
Bon, ceci dit j'ai résolu mon erreur, donc merci pour votre aide
Marsh Posté le 28-03-2005 à 15:39:24
Emmanuel Delahaye a écrit :
|
c'est marrant, moi j'aurais dit "bug grave"
Marsh Posté le 28-03-2005 à 15:40:19
bottedumal a écrit : Heuresement que annadivx nous à laissé quelque post, sinon on pourrait se demander si l'aimabilité est interdite dans cette sous cat |
Tu as le droit, quand tu es auteur d'un post, de le reprendre pour le corriger (petit bouton "Editer le message" juste à droite de la phrase "posté le ..." ).
Donc Emmanuel t'a juste demandé de corriger ton premier post et mettre des commentaires type "C"
En ce qui concerne l'amabilité... ben t'as de la chance d'être tombé sur Emmanuel et, même si t'en n'a pas l'impression, ben ses posts étaient peut-être humoristiques mais quand-même gentils. Tu serais tombé sur le "Taz des mauvais jours" (je crois que la Lune y est pour qq chose) là t'aurais vraiment compris ta douleur...
Marsh Posté le 28-03-2005 à 15:49:35
Sve@r a écrit : Tu as le droit, quand tu es auteur d'un post, de le reprendre pour le corriger (petit bouton "Editer le message" juste à droite de la phrase "posté le ..." ). |
Bah écoutes je maintiens que j'ai édité mon message dès qu'il m'a fait la remarque, si vous voyez toujours l'ancien titre, bah je comprends pas pourquoi
Marsh Posté le 28-03-2005 à 15:54:59
bottedumal a écrit : Bah écoutes je maintiens que j'ai édité mon message dès qu'il m'a fait la remarque, si vous voyez toujours l'ancien titre, bah je comprends pas pourquoi |
C'est pas un problème de titre. C'est un problème de présentation. Dans ton message, tu as mis du code 'en vrac'. Sur un forum de programmation, ça se fait pas (indentations non respectées etc.)
On te demande donc gentiment, aimablement et calmement de bien vouloir encadrer le code avec les balises 'fixed' ou 'cpp', comme indiqué dans les regles du forum que tu aurais du lire.
Pas de balise :
#include <stdio.h>
int main (void)
{
puts ("hello world" );
return 0;
}
Balises 'fixed'
|
Balises 'cpp' (j'aime pas)
Code :
|
Marsh Posté le 28-03-2005 à 15:57:08
Taz a écrit : c'est marrant, moi j'aurais dit "bug grave" |
Un comportement indéfini est un bug grave. D'autant plus grave que son effet n'est pas toujours visible.
Marsh Posté le 28-03-2005 à 16:06:19
je voulais juste souligner le fait que c'est un bug grave justement. Parce que pour beaucoup "comportement indéfini" ça veut dire "par chance ça marche sur mon système, donc c'est OK"
Marsh Posté le 28-03-2005 à 16:17:57
Emmanuel Delahaye a écrit : C'est pas un problème de titre. C'est un problème de présentation. Dans ton message, tu as mis du code 'en vrac'. Sur un forum de programmation, ça se fait pas (indentations non respectées etc.)
|
Ok, je pensais que tu parlais de la balise du titre "[C]" que j'avais oublié.
Je corrige ca tout de suite.
Désolé
Marsh Posté le 28-03-2005 à 16:52:15
bottedumal a écrit : Ok, je pensais que tu parlais de la balise du titre "[C]" que j'avais oublié. |
Si, en plus, tu pouvais gentiment remplacer les commentaires
" Ceci est un commentaire |
par des lignes de ce style
/* Ceci est un commentaire */ |
ou même
// Ceci est un commentaire |
ce serait vraiment extra...
Marsh Posté le 28-03-2005 à 17:05:23
Sve@r a écrit : Si, en plus, tu pouvais gentiment remplacer les commentaires
par des lignes de ce style
ou même
ce serait vraiment extra... |
et refaire l'indentation...
http://www.gnu.org/software/indent/indent.html
Marsh Posté le 28-03-2005 à 10:45:27
Hello !
Voilà je suis vraiment débutant en c mais j'ai un petit problème que je n'arrives pas à résoudre
Donc j'ai fait un programme qui est censé appliquer une formule mathématique pour un nombre n donné, le problème étant qu'il doivent fonctionner pour un nombre n très grand.
Donc j'avais d'abord fait le programme avec des int et float, et il saturait quand n dépassait les 36000 environ.
Ensuite, j'ai demandé conseil à un prof de c, et on a obtenu le programme suivant, qui marche impecc sur des stations sun : (quasiment le même que le mien, mais avec des long int, des long double etc...)
On en arrive à mon problème : ce programme marche impecc quand je le compile sur station sun (avec gcc), et il foire (le résultat que le programme donne est débile) quand je le compile sous windows avec dev c++ (qui utilise pourtant gcc aussi ).
Après avoir cherché un peu, je pense que le problème vient de la déclaration des variable (peut être ne faut il pas mettre de long double?) ou de l'affichage des variables (les %.10Lf sont peut être pas reconnus avec dev c++? Pourtant la compilation se passe nickel)
Voilà, en vous remerciant d'avance
Message édité par bottedumal le 28-03-2005 à 19:03:39