Petit probleme (apres compilation)

Petit probleme (apres compilation) - C - Programmation

Marsh Posté le 07-02-2004 à 09:04:42    

Voila une fois que je compile un programe ex :
 
 
#include <stdio.h>
 
main()
        {
 
int A, B, somme           ;
 
printf("Entrez le premier chiffre"  )  ;
scanf("%i",A)                           ;
 
printf("Entrez le deuxieme chiffre"  ) ;
scanf("%i",B)                           ;
 
 somme = A + B                           ;
 
 printf(" la somme du resultat est de  %i ",somme)   ;
 
 
 
         }
 
 
Au moment ou je tape la variable A et j'apuie sur "entree" pour valide j'ai un message d'erreur de winXP et il ferme l aplication  
:/
 
je voit pas quoi faire :/

Reply

Marsh Posté le 07-02-2004 à 09:04:42   

Reply

Marsh Posté le 07-02-2004 à 09:07:29    

scanf("%i",A)  
 
pour les entiers c'est %d et pas %i
 
PS : utilise les balise cpp pour la lisbilité

Reply

Marsh Posté le 07-02-2004 à 09:10:29    

black_lord a écrit :

scanf("%i",A)  
 
pour les entiers c'est %d et pas %i
 
PS : utilise les balise cpp pour la lisbilité

ouais c'est ça va te recoucher black_lord
 
bon le seul truc, c'est que :
- t'as pas oublié l'histoire du & pour le scanf ?
- quand tu fais un printf qui se termine pas par un '\n' suivi d'un scanf, entre les 2, rajoute un fflush(stdout); qui force l'affichage et prévient de petits problèmes
edit: - %i est tout aussi valide que %d mais %d est plus communément utilisé


Message édité par Taz le 07-02-2004 à 09:11:18
Reply

Marsh Posté le 07-02-2004 à 09:11:10    

ok merci

Reply

Marsh Posté le 07-02-2004 à 09:12:20    

%i c'est correct ?? jamais vu ça.
 
Désolé si j'ai dis une connerie.
 
edit : ok, edit croisés


Message édité par black_lord le 07-02-2004 à 09:12:53
Reply

Marsh Posté le 07-02-2004 à 09:13:57    

black_lord a écrit :

%i c'est correct ?? jamais vu ça.
 
Désolé si j'ai dis une connerie.

la connerie c'est pas tellement ça, c'est que c'est l'hopital qui se fout de la charité, ombre est un grand débutant (sans doute premier programme) et toi t'es pas capable de lui rappeler comme on se sert de scanf

Reply

Marsh Posté le 07-02-2004 à 09:15:58    

ombre > ça marche ?
 
et pour être correct et cohérent
 
main -> int main()
et en fin de main -> return 0;
 
et tout est bien

Reply

Marsh Posté le 07-02-2004 à 09:17:49    

il faut le mettre ou pas le return 0 a la fin?

Reply

Marsh Posté le 07-02-2004 à 09:18:45    

taz a écrit :

la connerie c'est pas tellement ça, c'est que c'est l'hopital qui se fout de la charité, ombre est un grand débutant (sans doute premier programme) et toi t'es pas capable de lui rappeler comme on se sert de scanf


 
c'est clair que j'ai pas fait assez attention, surtout parce que le %i m'a interpellé en fait en que j'ai pas cherché plus loin.

Reply

Marsh Posté le 07-02-2004 à 15:02:15    

skelter a écrit :

il faut le mettre ou pas le return 0 a la fin?  

en ANSI oui

Reply

Marsh Posté le 07-02-2004 à 15:02:15   

Reply

Marsh Posté le 07-02-2004 à 15:16:13    

J'ai encor un autre petit probleme ^^  
 
le probleme vien du fait que une fois que je tape les 2 variables  
 
le programme se ferme comme si la tache etait termine ( pas d erreurs ecrits nul part)
 
:/  
y a pas un moyen de laisser la fenetre en attente ou autre solution pour qu'elle se ferme pas tout de suite ?
 
#include <stdio.h>
 
main()
        {
/*declaration variable (entier) */
int A, B, somme                                   ;
 
 
printf("Entrez le premier chiffre : "  )             ;
scanf("%i",&A)                                     ;
 
printf("Entrez le deuxieme chiffre : "  )            ;
scanf("%i",&B)                                     ;
 
          somme = A + B                           ;
                         ;
 
printf(" la somme du resultat est de  %i et de %i : %i ",A,B,somme) ;
 
         }
 


Message édité par ombreee le 07-02-2004 à 15:17:40
Reply

Marsh Posté le 07-02-2004 à 15:25:52    

fait un getchar() ou exécute ton programme dans une invite de commande DOS

Reply

Marsh Posté le 07-02-2004 à 15:55:33    

bin c'est deja executer sous dos :/  
 
un autre exemple ou tout marche sauf // final
/*Test de nombres de Jrs function / */
 
// ------------------
 
#include <stdio.h>
 
int main()
 
    {
// declaration variable
  int nb_jours, nb_semaines ;
 
// entrez de variable
  printf("entrez un nombre de jours : " )     ;
  scanf("%d",&nb_jours)     ;
 
// instruction
 
nb_semaines = nb_jours / 7         ;
 
if (nb_jours < 7 )
   return main()            ;
// final
 
  printf("il y a %d semaines dans %d jours",nb_semaines,nb_jours) ;
 
     }

Reply

Marsh Posté le 07-02-2004 à 16:14:27    

mets ta ligne aveant le return
et mets "retun 0" plutot parce que la ça appelle ton prog en boucle :/
et utilises les balis [ cpp ] [ /cpp ]


Message édité par xav14 le 07-02-2004 à 16:14:52
Reply

Marsh Posté le 07-02-2004 à 16:32:20    

tu veux faire quoi exactement ?
 
int totaljours = 154 ;
int joursrestant = totaljours % 7 ;
int nbresemaines = totaljours / 7 ;
 

Reply

Marsh Posté le 07-02-2004 à 16:38:49    

tu veux faire quoi exactement ?
 
bin que //final : reste affiche parcque quand je rentre le nombre de jours le programe se ferme automatiquement !  
 
les balise cpp se mettents ou ??  

Reply

Marsh Posté le 07-02-2004 à 19:11:13    

les balises cpp se mettent autour de ton code

Reply

Marsh Posté le 07-02-2004 à 19:15:15    

rappeler main, c'est laid, très laid

Reply

Marsh Posté le 07-02-2004 à 19:43:17    

ombreee a écrit :

le probleme vien du fait que une fois que je tape les 2 variables  
 
le programme se ferme comme si la tache etait termine


 
mais c'est pourant le cas d'apres le source

Reply

Marsh Posté le 07-02-2004 à 19:55:29    

Oui mais moi j'aimerai pouvoir arreter ca si quelqun pouvait me donner un exemple de programme  
 
variable A (float ou int ect... )
avec une constente B = (un nombre quelquonque 1,2,3 ...)
resultat = a + b
et une phrase de fin du genre : a + b = resultat
et que l aplique ne se ferme pas sans meme que je puisse regarder le resultat ..?
??

Reply

Marsh Posté le 07-02-2004 à 20:00:11    

ben tu lance l'application dans une fenetre dos comme tu devrais déjà le faire

Reply

Marsh Posté le 07-02-2004 à 20:01:02    

un peu plus haut on a dit getchar(), a la fin du prog

Reply

Marsh Posté le 07-02-2004 à 20:02:51    

Justement ca ne change rien :/

Reply

Marsh Posté le 07-02-2004 à 20:03:32    

quel os?

Reply

Marsh Posté le 07-02-2004 à 20:03:41    

skelter a écrit :

un peu plus haut on a dit getchar(), a la fin du prog

normal, y a un '\n' qui traine

Reply

Marsh Posté le 07-02-2004 à 20:05:50    

fflush(stdout) avant, c'est ca qu'il faut faire?

Reply

Marsh Posté le 07-02-2004 à 20:06:07    

oui mais meme si j enleve le saut de ligne pareil :/

Reply

Marsh Posté le 07-02-2004 à 20:06:58    

skelter a écrit :

fflush(stdout) avant, c'est ca qu'il faut faire?

non

Reply

Marsh Posté le 07-02-2004 à 20:07:23    

ombreee a écrit :

oui mais meme si j enleve le saut de ligne pareil :/

tu m'a pas compris. écoute, lance ton programme à la main dans une console

Reply

Marsh Posté le 07-02-2004 à 20:08:39    

faut faire quoi?

Reply

Marsh Posté le 07-02-2004 à 20:13:36    

>ombree: les gens qui maitrisent oublie parfois qu ils ont aussi commence. Pour avoir une reponse claire et complete il est indispensable que tu exposes bien clairement ton concept ton probleme et l aide que tu attends de la part des gens du forum
 
sinon
pour que ton programme ne se ferme il faut qu il continue a s executer
met donc ton calcul dans un while
exemple
 

Code :
  1. #include <stdio.h>
  2. main()
  3.        {
  4. int A, B, somme           ;
  5. int fin=0;
  6. while (fin==0) 
  7. {
  8.   printf("Entrez le premier chiffre"  )  ;
  9.   scanf("%i",A)                           ;
  10.   printf("Entrez le deuxieme chiffre"  ) ;
  11.   scanf("%i",B)                           ;
  12.   somme = A + B                           ;
  13.   printf(" la somme du resultat est de  %i ",somme)   ;
  14.   printf("Voulez vous continuez?: Y or N" );
  15.   scanf(%i,&A); //le prog attend et tu peux lire
  16.   if (strcmp(A,'N')  //pas sur de la syntaxe
  17.      fin=1;
  18. }
  19. }


 
voila
tu vois l idee?
 


---------------
*<8OD
Reply

Marsh Posté le 07-02-2004 à 20:20:46    

non, spa bon. la bonne façon,c 'est de faire
 
un  
 
while(fgets(ligne, sizeof ligne, stdin) && strcmp(ligne, 'bye\n'))
 
 
et ensuite travailler avec sscanf

Reply

Marsh Posté le 07-02-2004 à 20:24:58    

bonzefou  
 
merci enfaite il faut finir le programe sur une insruction non effectuer OK  
 
mais y a un truc que je ne comprend pas trops ? quelle est la diferance entre while est if ???

Reply

Marsh Posté le 07-02-2004 à 20:26:49    

ueh la soltuion de bonze ne marchera jamais, enplus de faire partir le programme dans une boucle infinie, le fera planter

Reply

Marsh Posté le 07-02-2004 à 20:33:03    

pour terminer
soit tu fais comme TAZ et tu tappes bye et [entree}
soit tu reponds a une question precise
soit tu mets un temps d attente a la fin pour avoir le temps de lire et apres ca se ferme tout seul
 
je ne vois pas d autres solutions desole
 
if: c une condition (si en francais) teste une fois
while: ca veut dire faire ce qui est entre {} tant que la condition est vrai (ce qui est entre () )
la condition est testee a chaque passage  
 
voila
 
je te conseille la soluce de TAZ  :jap:


Message édité par bonzefou le 07-02-2004 à 20:34:24

---------------
*<8OD
Reply

Marsh Posté le 07-02-2004 à 20:33:54    

Oui le programe part dans une boucle mais avec if je peut la casser

Reply

Marsh Posté le 07-02-2004 à 20:36:23    

taz a écrit :

ueh la soltuion de bonze ne marchera jamais, enplus de faire partir le programme dans une boucle infinie, le fera planter


 
??
je suis pas doue mais la j aurais besoin de tes lumieres STP
je voulais simplement proposer une soluce simple pour qqun qui debute


---------------
*<8OD
Reply

Marsh Posté le 07-02-2004 à 20:40:36    

deja if (strcmp(A,'N') A est un int, et tu test si A est different de 'N' et non si a est egal a 'N'
et si A etait un caracter tu devrait faire if (!strcmp(&A,'N'))

Reply

Marsh Posté le 07-02-2004 à 20:44:10    

Code :
  1. #include <stdio.h> 
  2. #include <string.h>
  3. int main() 
  4.    
  5.   int A, B, somme; 
  6.   char buffer[128];
  7.    
  8.   while(fgets(buffer, sizeof buffer, stdin) && strcmp(buffer, "bye\n" ))
  9.     {
  10.       if(sscanf(buffer, "%d %d", &A, &B) == 2)
  11. {
  12.   somme = A + B;
  13.      
  14.   printf("la somme du resultat est de  %i\n", somme); 
  15. }
  16.     }
  17.   return 0;
  18. }

Reply

Marsh Posté le 07-02-2004 à 20:45:14    

skelter a écrit :

deja if (strcmp(A,'N') A est un int, et tu test si A est different de 'N' et non si a est egal a 'N'
et si A etait un caracter tu devrait faire if (!strcmp(&A,'N'))

vous deux là bonz et skelter, vous êtes de très mauvais conseil, alors passer votre chemin, ou contentez vous d'écouter

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed