Programmation

Discutez d'informatique ici !
selma123
Membre Relatif
Messages: 189
Enregistré le: 18 Sep 2008, 11:00

programmation

par selma123 » 18 Déc 2008, 23:21

Bonjour,
Voila j'ai un souci. J'ai fait un programme, il fonctionne bien sauf à la fin.
Quand on met "n", le programme quitte bien, sauf que il me met cette erreur:
Run-Time Check Failure #2 - Stack around the variable 'rep' was corrupted.
Je suis débutant et je n'ai pas réussit a trouver la solution.
Si vous avez la gentillesse de m'aider
Merci

Code:
//Muliplication avec addition
#include "stdio.h"
#include "stdlib.h"
int main(int argc, char *argv[])
{
int a = 0,b = 0,p = 0,c = 0;
char rep = 'o';
//Debut du programme
printf("Programme de multiplication\n");
while (rep == 'o')
{
printf("Veuillez entrer deux nombres positifs :\n");
scanf("%ld%ld",&a,&b);


//Boucle si nombre pas positifs
while ((a<0)||(b<0))
{
printf("Veuillez entrer deux nombres positifs :\n");
scanf("%ld%ld",&a,&b);
}
p = 0;

//Calcul du produit
for(c = 0 ; c<b ;c++)
{p = p+a;}

//Affichage du resultat
printf("Le resultat de %ldx%ld est %ld\n",a,b,p);

//Demande et saisie réponse repeat
printf("Voulez-vous recommencer?(o/n)\n");
scanf("%s",&rep);

} printf("Aurevoir et merci.\n");
system("PAUSE");
return 0;
}



XENSECP
Habitué(e)
Messages: 6387
Enregistré le: 27 Fév 2008, 20:13

par XENSECP » 18 Déc 2008, 23:22

Tu aurais pu préciser que c'est du JAVA non ?^^

Edit : quoique c'est moche, ça doit être un autre langage :D

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

par fatal_error » 19 Déc 2008, 00:27

salut,

tout d'abord c'est du C...
Ensuite, pe que c'est pas %s, car c'est pour string. Pour les caracteres, ca doit surement etre %c, mais je suis pas sur. Je pense que le prob vient de là ;)
la vie est une fête :)

selma123
Membre Relatif
Messages: 189
Enregistré le: 18 Sep 2008, 11:00

par selma123 » 19 Déc 2008, 13:13

fatal_error a écrit:salut,

tout d'abord c'est du C...
Ensuite, pe que c'est pas %s, car c'est pour string. Pour les caracteres, ca doit surement etre %c, mais je suis pas sur. Je pense que le prob vient de là ;)

salut
je m'excuse :mur: oui c'est du C j'ai oublié d'ecrire pragrammation C je m'excuse encore une fois

miikou
Membre Rationnel
Messages: 642
Enregistré le: 07 Juil 2008, 19:38

par miikou » 19 Déc 2008, 14:52

salut , lis une variable ou met un readkey :)

selma123
Membre Relatif
Messages: 189
Enregistré le: 18 Sep 2008, 11:00

par selma123 » 22 Déc 2008, 00:42

??????????????

anima
Membre Transcendant
Messages: 3762
Enregistré le: 15 Sep 2006, 12:00

par anima » 22 Déc 2008, 10:36

fatal_error a raison; le probleme est du au masque de lecture de scanf(). %s dénote un tableau de caracteres (char []), alors que ta variable rep (char) est juste un caractere.

Remplace %s (string) par %c (character) et ca marchera sans probleme. L'autre solution est de définir rep comme:
Code: Tout sélectionner
char rep[2];

Cependant, ceci te posera de petits problemes si l'utilisateur envoie plus de caracteres. %c est donc "mieux"

PrépaQuébec
Membre Relatif
Messages: 253
Enregistré le: 26 Juin 2007, 14:57

par PrépaQuébec » 24 Déc 2008, 05:02

salut tous,

à l'évidence rep ne nécessite pas de tableau, elle se voit assigner soit "o" soit "n", donc un seul char à la fois; donc définitivement oui, %c. ceci dit tu aurais pû prévoir le coup où un gentil utilisateur (G.U.) n'entre ni o ni n, genre "je n'ai pas compris votre réponse".

Quel est ton compilateur? Chez moi en compilant ton code direct je n'ai pas de problème avec la stack... je suis sous code::blocks. En fait tout marche!

Si c'est un exercice pour un cours, je te suggère fortement de mieux indenter et de commenter ton code un peu plus! Aussi, évite de tout faire dans la main, fais toi des fonctions, ici tu aurais pu faire une fonction genre:

int multi_entier(int entier_1, int entier_2)

@ ++

Stef

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 6 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite