Demande d'aide pour mon (1er) programme c++

Fermé
ArCTiK twister [HardCorp.] - 29 août 2003 à 12:09
 ArCTiKTwisTeR - 2 sept. 2003 à 14:40
< 3 > - Demande d'aide pour mon prog C++
Ajouté par ArCTiKtwister [HardCorp.](29/08/2003 à 12:06 GMT+1)
Salut tout le monde voici mon premier prog en C++==


#include<iostream.h>

int main()
{

char var1[] = "arctik";
char var2[] = "twister";

cout<<"Tapez votre login:\n";
cin>>var1;
cout<<"Tapez votre pass:\n";
cin>>var2;

if ((var1=="arctik") && (var2=="twister"))
{
cout<<"Bienvenue\n";
}
else
{
cout<<"Au revoir\n";
}

char fin;
cin>>fin;
}

Voila c'est mon premier prog en c++ et si vous le tester, vous verrez qu'il ne fonctionne pas. Quelqu'un peut m'expliquer pourquoi pleaze.!!....
Merci d'avance tout le monde!!

9 réponses

teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
29 août 2003 à 12:11
Salut
Deja fait un void main et non un int, de plus "ne marche pas" est sans doute pas le message d'erreur que tu recuperes et pour finir ca ressemble nettement plus a du C qu'a du C++


.  .
\_/
        Sauvez Maily! Mangez Castor!
0
>Deja fait un void main et non un int,
surtout pas. void main() n est pas defini en C++
tu as
int main(void)
int main(int argc, char *argv[])
et c est tout.

--
pouet
0
ArCTiK twister [HardCorp.]
29 août 2003 à 12:22
T'as raison, au fait ça ne m'affiche aucun messages d'erreurs!!
J'arrive même à lancer le programme après l'avoir compiler, mais il ne répond pas à mes attentes. Je rentre le login et le pass que j'ai définis et ça me répond "au revoir" au lieu de "Binvenue".
Alors j'ai inverser le "au revoir" et le "bienvenue "dans le code source, et là ça m'as afficher "bienvenue" après avoir entrer les données (aussi bien correctes que incorrectes)!!!
0
Je suis pas très doué, mais le problème vient sans doute de la comparaison des char dans le "if". d'ou le prog qui renvoie toujours une entrée pas conforme. essaie avec seulement le login, en supprimant le &&, marchera peut-etre.

Les srtings en cpp, c'est tellement gore...
0
bonsoir,

essaie d activer les avertissements de ton compilateur, ca t aidera.

#include<iostream.h>
// deprecie, c est
// #include <iostream>

int main()
// ok
{

char var1[] = "arctik";
// je prefere utiliser les std::string en C++
char var2[] = "twister";

cout<<"Tapez votre login:\n";
// c est std::cout
// ou alors mets using std; au dessus de main
// c est cependant deconseille pour les debutants
cin>>var1;
// c est std::cin
cout<<"Tapez votre pass:\n";
// c est std::cout
cin>>var2;
// c est std::cin
if ((var1=="arctik") && (var2=="twister"))
/* tu ne peux pas faire ca, tu compares un pointeur a une chaine de caracteres. je ne comprends pas que ca passe la compilation.
si tu choisis d utiliser les std::string, alors faire une comparaison d egalite est alors possible */
{
cout<<"Bienvenue\n";
// cest std::cout
// evite le \n, remplace par std::endl
// ex: std::cout << "bienvenue" << std::endl;
}
else
{
cout<<"Au revoir\n";
}

char fin;
// essaie de regrouper les declarations en debut de fonction
// ca ameliore la lisibilite
cin>>fin;
// et le return??
return 0;
}

enfin tes noms de variables sont mal choisis, var1, var2, ca rend le code incomprehensible.
bref, la meme chose en C++:

#include <iostream>
#include <string>

#define LOGIN "titi"
#define PASSWD "toto"
int main()
{


const std::string login = *new std::string(LOGIN);
const std::string passwd = *new std::string(PASSWD);
std::string input_login;
std::string input_passwd;

std::cout <<"Tapez votre login:"
<< login
<< std::endl;
std::cin >> input_login;
std::cout << "Tapez votre pass:"
<< passwd
<< std::endl;
std::cin >> input_passwd;

if ((input_passwd == passwd) && (login == login))
{
std::cout << "Bienvenue"
<< std::endl;
}
else
{
std::cout << "Au revoir"
<< std::endl;
}

char fin;
std::cin >> fin;
}

voili voilou,

--
pouet
0
ArCTiK[HardCorp.]
30 août 2003 à 11:58
Je te remercie de ton aide.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Où est la POO dans tout ça?
0
heu const std::string login = *new std::string(LOGIN); ?
disons que le code est tellement simple que ca se voit pas trop.
mais tu as deja un joli constructeur.

--
pouet
0
lanocm Messages postés 62 Date d'inscription dimanche 17 août 2003 Statut Membre Dernière intervention 8 octobre 2013 3
1 sept. 2003 à 16:15
salut a toi.
moi c'est landry.je suis en train d'apprendre le C et le C++.vu que tu débutes aussi,je me suis dit que nous pourions collaborer. Tu en pense quoi?
merci
0
ArCTiKTwisTeR
2 sept. 2003 à 14:40
salut Landry ben jveux bien collaborer avec toi, connaissons nous dejà un peu, mon msn :: arctiktwister@hotmail.com
a+
0
les joies des pointeurs comme chaine de caractere ..... ;))
0
On ne compare pas des chaines de caractere avec "==" !!!!!!!!

Il faut utiliser la fonction strcmp :

if (strcmp(var1,"artick")==0)

Si tu es curieux strcmp est definie ainsi :

int strcmp(const char *a, const char *b){
while(*a != '\0' || *b !='\0')
if(*(a++) != *(b++))
return 1;
return 0;
}
0
Bonjour,

je ne suis pas d'accord avec le définition donnée par stcmp

elle ne rend pas
0 si chaines égales
1 si chaînes différentes

mais elle rend
0 si chaines égales
un nombre positif (ou négatif): son signe indique laquelle des chaine est la plus grande. Sa valeur absolue indique la position ou elles différent

Cordialement,

Mirza
0
Tu as raison Mirza,
Le retour de strcmp est plus complexe que 0 ou 1.
Mais c'etait pour simplifier par rapport à ca qui nous interesser (la comparaison).
0
Tu as aussi raison de faire simple Pascal pour expliquer à ceux qui démarrent

En fait le seul truc utile avec strcmp, stricmp et strncmp c'est de savoir si chaine1 <, = ou > à chaine 2
* = est utile pour les logins/passwords
* les < et > sont uiles pour les tris

bye,

mirza
0