Je comprends pas d'où vient mon erreur - C - Programmation
Marsh Posté le 19-12-2006 à 18:48:18
heu, tu calcule add avant d'avoir mis les valeurs dans xa,xb,ya,yb.... Si c'est pas une étourderie, t'as bcp de bases à revoir
(et une division avec des int c'est probablement pas ce que tu veut au passage, la division entière spa le bon plan du tout pour une distance)
Marsh Posté le 19-12-2006 à 18:49:33
0x90 a écrit : heu, tu calcule add avant d'avoir mis les valeurs dans xa,xb,ya,yb.... Si c'est pas une étourderie, t'as bcp de bases à revoir |
C'est pas une étourderie mais je vois pas pourquoi on doit le mettre avant
Marsh Posté le 19-12-2006 à 18:51:14
Ah si j'ai capté parce que les coordonnées ne valent rien au départ
Marsh Posté le 19-12-2006 à 18:52:09
héhé spa de la programmation fonctionnelle hein
Marsh Posté le 19-12-2006 à 18:53:07
0x90 a écrit : Si c'est pas une étourderie, t'as bcp de bases à revoir |
j'ajouterai qu'il n'y a normalement pas besoin de division pour calculer une distance et que mettre le résultat d'une division dans une variable nommée 'add' n'est pas forcément une bonne idée pour celui qui te relira
Marsh Posté le 19-12-2006 à 18:56:17
franceso a écrit : j'ajouterai qu'il n'y a normalement pas besoin de division pour calculer une distance et que mettre le résultat d'une division dans une variable nommée 'add' n'est pas forcément une bonne idée pour celui qui te relira |
Arf j'ai même pas fait gaffe que le calcul était faux en plus ...
Marsh Posté le 19-12-2006 à 20:19:36
Jp3rF a écrit : J'ai un soucis en langage c : en fait je fais un prog qui permet de calculer la distance AB : Quand j'entre les 2 valeurs pour a, 2 pour b, ça m'affiche La distance AB est egale a 910 à chaque fois |
Ce code n'a aucun sens. Tu effectues des calculs sur des valeurs qui n'ont pas encore été initialisées. Je rappelle que, sauf avis contraire (décision, itérations), le programme s'exécute de haut en bas.
Il est donc illogique de faire des calculs sur des valeurs qui seront définies plus tard...
Tu veux sans doute ceci :
Code :
|
A noter que l'usage de scanf() est difficile à maitriser et qu'ici, il est incorrect en se sens que les erreurs de saisies ne sont pas traitées et entrainent une instabilité. Les alternatives à base de fgetc() ou de fgets() sont connues...
Nota : à supposer que la formule soit correcte (je ne suis pas mathématicien, mais j'ai des notions d'arithmétique), il faudrait vérifier que le dénominateur de la fonction ne soit pas nul, sous peine de comportement indéfini.
Marsh Posté le 19-12-2006 à 20:38:22
Emmanuel Delahaye a écrit : il faudrait vérifier que le dénominateur de la fonction ne soit pas nul, sous peine de comportement indéfini. |
C'est réellement indéfini ? Il n'y a pas une histoire de "NaN" quand on divise par 0 ???
Marsh Posté le 19-12-2006 à 20:39:26
tu va avoir du mal à le rentrer ton NaN dans un int et une division entière
Marsh Posté le 19-12-2006 à 20:40:50
Merci pour ton post
Là j'essaye de faire un exo avec tableau :
Ecrire un programme qui lit la dimension N d'un tableau T du type int (dimension maximale: 50 composantes), remplit le tableau par des valeurs entrées au clavier et affiche le tableau.
Calculer et afficher ensuite la somme des éléments du tableau.
#include <stdio.h>
#include <conio.h>
main()
{
int N,T[N],i;
printf("Entrez les valeurs dans le tableau \n" );
scanf("%d",&T[N]);
for(i=0;i<=N;i++);
{
int somme=0;
somme=i+N;
printf("Voici le tableau %d \n",T[N]);
printf("Voici la somme des valeurs du tableau %d \n",somme,T[N]);
}
getch();
return 0;
}
Je dois pas être loin mais c'est pas ça
Marsh Posté le 19-12-2006 à 21:20:50
Et aussi j'ai un exo sur les chaines de caractères c'est :
Exercice 8.8
Ecrire un programme qui lit un verbe régulier en "er" au clavier et qui en affiche la conjugaison au présent de l'indicatif de ce verbe. Contrôlez s'il s'agit bien d'un verbe en "er" avant de conjuguer. Utiliser les fonctions gets, puts, strcat et strlen.
Exemple:
Verbe : fêter
je fête
tu fêtes
il fête
nous fêtons
vous fêtez
ils fêtent
Je vois pas comment le résoudre
Marsh Posté le 19-12-2006 à 21:27:48
Relis les règles du forum
Marsh Posté le 19-12-2006 à 21:30:51
ReplyMarsh Posté le 19-12-2006 à 22:11:09
Jp3rF a écrit : Hum hum hum |
Ben oui, elles disent entre autre, qu'on ne fournit pas de code. C'est toi de poster le code avec lequel tu as des problèmes.
Marsh Posté le 19-12-2006 à 22:16:17
Jp3rF a écrit : |
Ben non. Encore une fois, tu ne fais la les choses dans l'ordre. Tu définis une tableau d'une taille indéterminée (N n'est pas initialisé). Le comportement est indéfini. Il est pourtant précisé que la taille maximale est définie (50). Ce qui peut changer c'est le nombre d'éléments du tableau (qui ne doit évidemment pas être > à 50, mais peut bien sûr être inférieur). Relis bien l'énoncé avant de sauter sur le clavier.
Et utilise les balises code...
Marsh Posté le 19-12-2006 à 22:16:33
Emmanuel Delahaye a écrit : Ben oui, elles disent entre autre, qu'on ne fournit pas de code. C'est toi de poster le code avec lequel tu as des problèmes. |
Arf, en fait j'ai révisé toute l'après midi là je suis un peu HS
Marsh Posté le 19-12-2006 à 22:16:53
Sve@r a écrit : C'est réellement indéfini ? Il n'y a pas une histoire de "NaN" quand on divise par 0 ??? |
Oui, non.
Marsh Posté le 19-12-2006 à 22:17:49
Jp3rF a écrit : Arf, en fait j'ai révisé toute l'après midi là je suis un peu HS |
Et ? Tu veux qu'on bosse à ta place, c'est ça ?
Marsh Posté le 19-12-2006 à 22:18:04
Emmanuel Delahaye a écrit : Ben non. Encore une fois, tu ne fais la les choses dans l'ordre. Tu définis une tableau d'une taille indéterminée (N n'est pas initialisé). Le comportement est indéfini. Il est pourtant précisé que la taille maximale est définie (50). Ce qui peut changer c'est le nombre d'éléments du tableau (qui ne doit évidemment pas être > à 50, mais peut bien sûr être inférieur). Relis bien l'énoncé avant de sauter sur le clavier. |
Il faut initialiser N ??
Marsh Posté le 19-12-2006 à 22:20:32
Jp3rF a écrit : Il faut initialiser N ?? |
Ben oui ! Si ça doit définir la taille d'un tableau, il faut que ce soit une expression constante. D'après ton énoncé, elle vaut ici 50.
Par exemple :
Code :
|
ou
Code :
|
(il y a plus simple, évidemment...)
Marsh Posté le 19-12-2006 à 22:21:37
Emmanuel Delahaye a écrit : Il faut que ce soit uine expression constante qui vaille 50.
|
Code :
|
Marsh Posté le 19-12-2006 à 22:31:58
MossieurPropre a écrit :
|
Ben non. Si on veut faire le malin, il faut avoir le niveau...
Code :
|
Marsh Posté le 19-12-2006 à 22:34:03
encore plus vicelard
Code :
|
patapeï
Marsh Posté le 19-12-2006 à 22:37:08
Emmanuel Delahaye a écrit : Ben non. Si on veut faire le malin, il faut avoir le niveau...
|
certes. Je connais l'existence de ce type d'amusements, mais à vrai dire, je ne m'en sers pas tout les jours.
-ThX- a écrit : encore plus vicelard
|
Marsh Posté le 19-12-2006 à 22:53:58
Jp3rF a écrit : Et aussi j'ai un exo sur les chaines de caractères c'est : |
Et personne ne réagit au gets, z'êtes fatigués les gars
A mon avis, change d'école ou de prof !
Ton exo, il ne viendrait pas d'ici par hasard ? http://www.ltam.lu/Tutoriel_Ansi_C/prg-c81.htm
Marsh Posté le 19-12-2006 à 23:56:45
Jp3rF a écrit : Là j'essaye de faire un exo avec tableau : |
Tiens ? personne n'a remarqué ça ???
Si ton tableau fait "N" éléments, il faut boucler de "0" à "N - 1" donc "for (i=0; i < N; i++)"
Jp3rF a écrit : Je dois pas être loin |
De justesse... mais même de justesse, quand c'est raté ce n'est pas réussi
Jp3rF a écrit : |
Tu comptes combien de lettres (strlen) - Si les 2 dernières lettres ne sont pas "er" (strcmp) alors fin du prog.
Sinon tu tronques ton verbe aux "N - 2" premiers caractères (il suffit de mettre un '\0' au bon endroit) et tu affiches ensuite successivement le verbe tonqué suivi des terminaisons "e", "es", "e", "ons", "ez", "ent" (printf) - A vue de nez, ça doit prendre à peine 20 lignes.
PS: Utiliser un tableau contenant "e", "es", "e", "ons", "ez" et "ent" et faire une boucle de traitement répétitif sur chaque élément de ce tableau sera évidemment beaucoup mieux perçu par ton prof que faire bêtement les 6 conjugaisons instruction par instruction...
Trap D a écrit : Ton exo, il ne viendrait pas d'ici par hasard ? http://www.ltam.lu/Tutoriel_Ansi_C/prg-c81.htm |
Si ça se trouve, il y a même la soluce qqpart dans le site...
Marsh Posté le 22-12-2006 à 09:52:37
Spoiler : tg toi |
Marsh Posté le 22-12-2006 à 10:30:28
Rassure moi, il vous a au moins prévenu des dangers de gets ?
Marsh Posté le 19-12-2006 à 18:46:22
Salut
J'ai un soucis en langage c :
en fait je fais un prog qui permet de calculer la distance AB :
#include <stdio.h>
#include <conio.h>
main()
{
int xa,ya,xb,yb;
int add=(yb-ya)/(xb-xa);
printf("Quelles sont les coordonnees de a \n" );
scanf("%d %d",&xa,&ya);
printf("Quelles sont les coordonnees de b \n" );
scanf("%d %d",&xb,&yb);
printf("La distance AB est egale a %d \n",add);
getch();
return 0;
}
Quand j'entre les 2 valeurs pour a, 2 pour b, ça m'affiche La distance AB est egale a 910 à chaque fois