Calcule d'un adresse IP en C++

Fermé
gaylord - 3 juil. 2009 à 09:37
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 - 3 juil. 2009 à 10:37
Bonjour,

j'ai créer un petit programme avec DEVCPP vraiment banal pour les pros du langage C++, chose que je ne suis pas car mes connaissances en C++ sont très limités.
Le petit programme permet de calculer une adresse IP en fonction d'un matériel donnée et d'un numéro de série.
Mon premier problème est que lorsque je tape autre chose qu'un chiffre ex: je tape "a" mon programme arrive à mes calculer une adresse, donc ce que j'aimerai c'est que mes entrées tapées au clavier soit uniquement des chiffres entier positif.
Deuxième problème est que j'aimerai affiché le résultat sous la forme IP = 50.X.Y.Z ; 50 reste fixe, X correspond à une valeur à rentrer en fonction d'une liste de matériel, Y et Z sont des variables qui sont calculé en fonction de la variable ID correspondant au n° de série du matériel
Troisième problème est que lorsque j'exécute mon programme une fois le résultat affiché ,j'appuie sur n'importe quelle touche et la fenêtre ce ferme, je ne connais la commande qui me permet de retourner au début.
Merci pour les conseil que vous pourrez m'apporter

Voici l'architecture de mon programme:

//
// Calcule de L'adresse IP
// IP = 50.X.Y.Z
//
#include <cstdio>
#include <cstdlib>
#include <iostream>
using namespace std;

int main(int nNumberofArgs, char* pszArgs[])

{


// saisie du nombre X et ID
int X,ID;
cout << "Entrez la valeur de X en fonction du matèriel choisis : ";
cin >> X;

cout << "Entrez la valeur de l'ID : ";
cin >> ID;

// calcul de Y
int Y;
Y = ((ID-1) / 254) + 1;

// Calcul de Z
int Z;
Z = ID - ( 254 * (Y - 1));



// Affiche les valeurs de X,Y,Z
cout << " la valeur de X : ";
cout << X << endl;
cout << " la valeur de Y : ";
cout << Y << endl;
cout << " la valeur de Z : ";
cout << Z << endl;



// avant de terminer le programme, attend le signal de
// l'utilisateur pour lui permettre de voir le résultat
system("PAUSE");
return 0 ;


}

3 réponses

Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 193
3 juil. 2009 à 09:50
salut.

pour le 3: ce qui fait quitter le programme, c'est le return à la fin du code....

si tu mets tout ton code dans une boucle

char reponse[20];
do {

//code
//..

cout<<"voulez continuer ?"<<endl;
cin>>reponse
}while (reponse[0]='o' ||reponse[0]='O' )//c'est un exemple


pour afficher le resulmtait sous la forme 50.x.y.z


// Affiche les valeurs de 50.X,Y,Z
cout << "50."<< X <<"."<< Y <<"." <<Z<< endl;
0
Merci pour ce début de réponse c'est cool de ta part!

Gaylord
0
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 193
3 juil. 2009 à 10:37
pour verifier les nombres rentrés par l'utilisateur, je vois pas pourqoui il n'y a pas d'erreur quand tu mets des lettres... (peut etre qu'avec A il pense que c'est de l'hexa, mais ca me semble bisare...essayes avec z )

la solutio que je verrai,c 'est de stocker ca dans une chaine de charactères, et de verifier que chaque caractère entré soit bien un nombre, et si oui, convertir la chaine en entier
0