Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les forums > Programmation > Langage C > Problème de if ..... > Lecture du sujet

Problème de if .....

Mon petit programme tout cassé ?

Vous devez être inscrit pour pouvoir poster des messages

Page : 1 
Auteur Message
1 visiteur sur ce sujet (1 anonyme)
Page : 1 
Hors ligne minishlink # Posté le 03/12/2005 à 10:24:37
Quand on veut, on peut !
Avatar
Groupe : Membres
Voila mon programme marchait et puis j'ai rajouté un truc et cela ne marchait plus .... :( :'(
Voilà le code :
Code : C
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  long nb; //c'est une déclaration des variables
  nb = 5;
  printf ("Compte jusqu'à %d , s'il te plait console .", nb);
  printf ("\n\n");
  nb = 1;
  printf ("%d", nb);
  printf("\n\n");
  nb = 2;
  printf ("%d", nb);
  printf ("\n\n");
  nb = 3;
  printf ("%d", nb);
  printf ("\n\n");
  nb = 4;
  printf ("%d", nb);
  printf ("\n\n");
  nb = 5;
  printf ("%d", nb);
  printf ("\n\n\n\n");
  printf ("Bravo ! Tu as reussi à compter jusqu'à %d !" ,nb);
  printf ("\nC'est bien ma petite console adoree ... \n\n\n\n");
  printf ("Maintenant, toi utilisateur ecris l'age que tu as s'il te plait .\n");
  long oui = 0;
  scanf("%d" , &oui);
 
  if (oui==12)
  {
  printf("\nTu as 12 ans !!! Réponds à l'autre question...\n\n");
  printf("Tu t'appelles comment ? \n");
 long nom = 0;
 scanf("%d", nom);
  if(nom=="louis", "Louis");
  {
  printf("\nTu t'appelles comme moi ! \nTu as le droit de quitter !\n\n");
  system("PAUSE");
  return 0;
else
    {
        printf("C'est pas bien tu t'appelles pas Louis .... !!!!!");
        system"PAUSE";
        return 0;
        }
}
   
}
  else {
  printf("\nC'est pas bien tu n'as pas 12 ans ...\n");
  printf("Reessaye ...\n\n");
  oui = 0;
  scanf ("%d", &oui);
      if (oui==12)
  {
  printf("\n\nTu as 12 ans !!! Réponds à l'au tre question...\n\n");
  printf("Tu t'appelles comment ?");
 long nom = "je n'ai pas de nom";
  }
      else
  {
  printf ("\nTu n'as toujours pas l'age valide ...\n\n");
  system("PAUSE");     
  return 0;
  }

}
 
}
 




Pouvez vous m'aidez ? Il me dit qu'il y a une erreur à la ligne où il y a Citation : Mon code
if (nom=="louis" , "Louis")
 
Hors ligne drexil # Posté le 03/12/2005 à 10:47:43
Acolyte du pourfendeur
Groupe : Membres
essaye pas d'aller trop vite.

long c'est un entier, pas une chaîne de caractères.

en plus ton if est incompréhensible, il fait quoi le ', "Louis"' ici?

puis on déclare les variables au début de la fonction, avant toutes instructions

bref ton code est nawak, attend la suite du cours plutôt.
Connecté rotoclap # Posté le 03/12/2005 à 16:51:07
Secrétaire intérim du SdZ
Avatar
Admins
Déjà, on compare pas une chaine comme ça, on utilise strcmp.
Ensuite, les multiples tests de condition ça se fait pas comme ça. Si par exemple, tu veux qu'un if teste si une variable soit à 3 ou 5 tu dois faire comme ça :

Code : C

if((variable == 3) || (variable ==5))

Code : Bash
1
2
3
4
5
6
7
ROFL:ROFL:ROFL:ROFL
         _^___
 L    __/   []\
LOL===_        \
 L     \________]
         I   I
        -------/
 
Hors ligne mleg # Posté le 04/12/2005 à 17:48:58
None
Groupe : Membres
[EDIT] : Niet.
Édité le 01/01/2006 à 17:27:05 par mleg
 
Hors ligne toto # Posté le 04/12/2005 à 18:42:00
la vie n'est qu'une fête
Avatar
Groupe : Membres
Euh, je pense qu'il y a plusieurs raisons, déjà pour entrer des lettres c'est pas %d mais %s (enfin, je crois corrigé moi si c'est pas ça) ensuite, je viens de lire sur le topic "convention et aide" : Citation : drexil
une chaîne de caractères:

* ne se déclare pas avec long ou double.
* ne s'obtient pas avec un scanf("%d", &ma_variable);
* ne se teste pas avec l'opérateur ==



J'espère que c'est clair. Vous ne savez pas encore vous servir de chaînes de caractères, donc n'essayez pas, ou alors allez voir comment faire sur internet.

donc voilà je pense que tu devrais attendre fais comme moi, je m'étais lancé aussi dans quelque chose avec les lettres, mais ça devient plus compliqué, alors patiente encore un peu ;)
 
Hors ligne SuperMat # Posté le 04/12/2005 à 19:02:18
Avatar
Groupe : Membres
Pour les chaînes de caractères, c'est bien %s et pour un caractère, c'est %c.

A noter qu'un caractère peut être vu comme un entier (le contraire n'est pas vrai), contrairement aux chaînes.

De même, la lecture d'une chaîne ne nécessite pas de &, mais les autres types si (vous verrez pourquoi avec l'arrivée des pointeurs).

Donc : pour un entier
Code : C

int monEntier;
scanf("%d", &monEntier);


mais pour une chaîne :
Code : C

char maChaine[50]// 50 caractères maxi
scanf("%s", maChaine);



 
Hors ligne mleg # Posté le 04/12/2005 à 19:13:45
None
Groupe : Membres
... heu ben en fait rien. Long, c'est pour les nombres.
Édité le 01/01/2006 à 17:25:47 par mleg
 
Hors ligne drexil # Posté le 04/12/2005 à 19:20:02
Acolyte du pourfendeur
Groupe : Membres
Citation : SuperMat
Pour les chaînes de caractères, c'est bien %s et pour un caractère, c'est %c.

A noter qu'un caractère peut être vu comme un entier (le contraire n'est pas vrai), contrairement aux chaînes.

De même, la lecture d'une chaîne ne nécessite pas de &, mais les autres types si (vous verrez pourquoi avec l'arrivée des pointeurs).

Donc : pour un entier
Code : C

int monEntier;
scanf("%d", &monEntier);


mais pour une chaîne :
Code : C

char maChaine[50]// 50 caractères maxi
scanf("%s", maChaine);



scanf pour un entier à la limite, mais pas pour une chaîne :/
fgets est bcp mieux pour ça:

Code : C
char chaine[51];
fgets(chaine, 50, stdin);

Retour au forum "Langage C" ou à la liste des forums

Vous devez être inscrit pour pouvoir poster des messages

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 468 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.0346s (0.0109s)