CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Le ToPiC Du C/C++ ²°°³

lag-it
lag-it
Niveau 10
25 juin 2004 à 00:37:55

Par la malpeste !

Certes le C++ n´es qu´orienté objet et fait un peu figure de language batard ( selon les termes du red book d´OpenGL alors :-d ) .
Mais pourquoi le hais tu ?

gollumkawder
gollumkawder
Niveau 10
25 juin 2004 à 02:56:56

j´aime pas l´object oriented, je trouve que c´est inutile d´apprendre ça, mais j´ai pas vu toute la " ""puissance""" du cpp c´est p´tet pour ça, et puis ça me répugne à en faire, le C au moins c´est clair, tu piges tout, le Cpp c´est moche...
Enfin j´en ai fait un peu et ça me donne pas envie d´en refaire !

lag-it
lag-it
Niveau 10
25 juin 2004 à 11:23:48

Le problème du C++, c´est que c´est un mode de conception et d´élaboration de programme très différente de la programmation procédurale du C.

Moi aussi a début je me disais " pourquoi s´encombrer d´objets quand les fonctions suffisent ? "
Cependant, une fois la vision orientée objets acquise, on se rend compte de sa vraie puissance.

Pour l´élaboration de bibliothèques et de librairies, le C++ est aje trouve un excellent langage.

sebcopin
sebcopin
Niveau 10
25 juin 2004 à 13:04:53

Euh bon c´est pas tout ça mais j´ai encore une question ( et oui on en fini pas...)

Voila j´ai crée un petit convertisseur euro/francs , francs/euros rapidement avec un menu avec une option pour choisir si on veut convertir des euros en francs et une autre option si on veut convertir des francs en euros. :p)

C´est du style " Votre choix : " et on tape 1 ou 2, si on ne tape ni 1 ni 2 mais autre chose, le programme génére une erreur et quitte.

Mais j´aimerai bien aussi que le programme génére une erreur lorsque qu´on rentre des caractères du clavier ( style " jefaisunbug") à la valeur à convertir.

" Valeur à convertir : " :d) Si on rentre des caractère le programme remplace les caractère par des chiffres et convertis n´importe quoi donc...

Le problème c´est que mon programme ne sais pas faire la différence entre une chaîne de caractères et des nombres. Comment inclure cette différence dans le programme ? :doute:

Merci.

sebcopin
sebcopin
Niveau 10
25 juin 2004 à 23:47:39

:up: help me :snif:

dnob700
dnob700
Niveau 10
26 juin 2004 à 01:42:58

si tu utlise quelque chose comme :
cin > > Prix;
et que prix est un long ou un int, il plante quand tu lui rentre quelque chose qui n´et pas un chiffre ( en tout cas avec mon compilo). alors je ne comprend pas ton problème.

sinon, tu peut récuperer un *char

et dans ce cas là tu peut faire quelque chose comme :
for ( int I=0;Nombre[I]!=0;++i)
if ( !((Nombre[I]>47)&&(Nombre[I]<58))) goto ERREUR;

et là il plante le programme si tu rentre autre chose qu´une suite de nombre.
Il y a certainement une fonction prédéfinie qui te fait ça, mais bon, comme ça tu comprend ce qui se passe ( attention, tu n´a pas pour autant le nombre en question).

Mais pour que l´on puisse répondre correctement à tes questions, il faut que tu donne plus de rpécision sur tes problèmes.

lag-it
lag-it
Niveau 10
26 juin 2004 à 11:06:29

PAS DE GOTO ! JAMAIS !

Bon pour répondre à la question :

La meilleure solution si tu veux être sûr que le nombre donné ne contient pas de lettres, c´est de procéder ainsi :

char buff[16];

16 est beaucoup trop grand : si tu veux stocker ton nombre dans un int par la suite, remplace ce nombre par le nombre maximal de chiffres stockable dans un int : exemple, si un int pèse 2 octets, tu peux aller de 32767 à -32768, soit 5 chiffres.

Ensuite tu fais :

cin > > buff;

Pour obtenir une chaine de caractère.
Il faut maintenant vérifier que cette chaine ne comporte pas de chiffres, pour cela crée un fonction :

bool checkIfValid( char *table )
{
for( ; *table ! = ´\0´ && *table > = ´0´ && *table < = ´9´ ; table++ ) ;
if( *table == ´\0´ )
return true;
else
return false;
}

Tu lui passe buff en paramètre et tu récupère la valeur renvoyé pour savoir si la chaine est valide ou non :

if( checkIfValid( buff ) )
; / / La chaine est valide
else
; / / La chaine est invalide

Enfine, il ne te reste plus qu´à convertir ta chaine en int à l´aide d´une fonction prévue à cet effet :

int convertStringToInt( char *table )
{
int value = 0;

for( ; *table ! = ´\0´ ; table++ )
{
value *= 10;
value += *table - ´0´;
}

return value;
}

Et voila. J´ai pas eu le temps de tester, mais ensuite il suffit de faire appel à cette fonction pour récupérer la valeur :

int somme = convertStringToInt( buff ) ;

Ca doit marcher normalement :ok:

sebcopin
sebcopin
Niveau 10
26 juin 2004 à 11:07:01

J´ai pas de trop compris les 2 lignes que tu as écrites au-dessus :doute:

Sinon pour aider un peu je vais poster mon programme ça ira plus vite :

  1. include < iostream>
  2. include < stdlib.h>

using std::cout;
using std::cin;
using std::endl;

float conv_eurotofrancs(float euros);
float conv_francstoeuros(float francs);

int main()
{
float euros;
float francs;
unsigned short int choix;

cout < < " ******MENU******";
cout < < " \n1) Euros => Francs";
cout < < " \n2) Francs => Euros";
cout < < " \n\nVotre choix : " ;
cin > > choix;

if ( choix == 1)
{
cout < < " \n\nValeur en euros a convertir en francs : " ;
cin > > euros;
cout < < endl;
francs = conv_eurotofrancs(euros);
cout < < euros < < " euros font " < < francs < < " francs.\n\n";
}

if ( choix == 2)
{
cout < < " \n\nValeur en francs a convertir en euros : " ;
cin > > francs;
cout < < endl;
euros = conv_francstoeuros(francs);
cout < < francs < < " francs font " < < euros < < " euros.\n\n";
}

if ( (choix ! = 1) && ( choix ! = 2 ) )
cout < < " \n\nErreur : veuillez recommencer en choisissant 1 ou 2 ! \n\n";

system("pause");
return 0;
}

float conv_eurotofrancs(float euros)
{
return ( euros*6.55957);
}

float conv_francstoeuros(float francs)
{
return ( francs/6.55957);
}

Voila si on rentre une autre valeur que des nombres, le programme continuera à faire les calcul avec un suite de caractère.

Exemple :

Je choisi de convertir des euros en francs.

" Entrer la valeur à convertir :" :d) La je tape " seb".

Et le programme me met en résultat : -1.07374e+008 euros font -7.04328e+008 francs.

Et voila cette erreur me gène un peu et je sais pas comment la detecter. :non2:

sebcopin
sebcopin
Niveau 10
26 juin 2004 à 11:10:36

Merci lag-it, rola c´est un peu complqiué pour mon niveau de c++, enfin je peux toujours essayer :ok:

Et pour les float ça marche aussi ?

lag-it
lag-it
Niveau 10
26 juin 2004 à 11:11:38

Pourtant mon code fonctionne pour détecter ce type d´erreur.
Mais le concept est peut être un peut trop avancé si tu débutes. Patience :)

lag-it
lag-it
Niveau 10
26 juin 2004 à 11:12:08

Désolé je croyais que le dernier message etait pour moi, jai rien dit.

lag-it
lag-it
Niveau 10
26 juin 2004 à 11:13:27

Pour les floats il faut modifier les fonctions de test de validité et de conversion afin de les supporter bien sûr ( pareil si tu veux des nombres négatifs ) .
Mon exemple ne marche qu´avec des unsigned int :)

sebcopin
sebcopin
Niveau 10
26 juin 2004 à 11:18:59

Il n´y pas une fonction en C++ deja toute faite qui detecte ces erreurs ?

Car franchement je pige pas ta fonction je suis désolé :snif2: :non2:

lag-it
lag-it
Niveau 10
26 juin 2004 à 11:26:22

Pas à ma connaissance.
Il faut que tu en apprenne plus sur les chaines de caractères, les pointeurs avant de comprendre ce que j´ai écrit.
Aussi anodin qu´il peut paraitre, le problème n´est pas si simple à résoudre :-)

sebcopin
sebcopin
Niveau 10
26 juin 2004 à 11:41:01

Justement je bloque un peu sur les pointeurs, mais avant il faut que je revois les classes et tous ça car j´ai un peu oublié. Je suis en train de continuer le C++ car j´avais arreter il y a quelques mois c´est pour ça. :-)))

Bon bin je reviendrais sur tous ces trucs la en temps voulu. :p)

Mordorik
Mordorik
Niveau 10
27 juin 2004 à 11:50:18

salut je suis tout nouveau ds le monde de la prog et j´essaye d´apprendre le C++ mais pr l´apprendre, est ce qu´il faut d´abord passer par le C ? est ce que vous auriez des liens pour des super tutorials à me filer ?
merci d´avance !

:recherhcer: :bye:

lag-it
lag-it
Niveau 10
27 juin 2004 à 11:52:03

http://www.developpez.com

Il n´est pas obligatoire d´apprendre le C avant car la plupart des tutos de C++ l´enseignent à leur commencement.

Mordorik
Mordorik
Niveau 10
27 juin 2004 à 11:54:01

ok merci du renseignement, sinon au bout de combien de tps on peut maitriser les bases ?
est ce qu´il faut avoir un super niveau en maths ( on m´a dit ca ) ?

dnob700
dnob700
Niveau 10
27 juin 2004 à 13:27:58

il faut être bon en math, mais pas besoin d´un super niveau ( sauf lorsque tu te mettra à faire de la 3D).

tu peut maitriser les bases en 3 jours si tu le veux, mais pour maitriser le langage, ça sera plutot 3 ans.

( c´est un peu satanique ( ou chrétiens, je sais pas) mon post avec cette trinité de chiffre 3...)

lag-it
lag-it
Niveau 10
27 juin 2004 à 13:39:34

Si tu ne compte pas faire de 3d ( ou d´applications 2d à caractères mathématiques ) un niveau de math de collège est suffisant.

Pour l´acquisition et la maitrise des bases, cela dépends de toi ( capacité d´assimilation, voir les choses en terme de programmation, . .. ) .
Si tu bosses bien, cet été devrait y suffire :)

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment