Soyez le premier à donner votre avis sur cette source.
Snippet vu 3 433 fois - Téléchargée 33 fois
#include <iostream.h> #include <string.h> #include <stdio.h> int main() { char ip[16],temp; int longueur,n,ip1=0,ip2=0,ip3=0,ip4=0,i=0; cout <<"entrez une ip au format a.b.c.d\n"; cin >> ip; cout <<"cette ip est une chaine de caracteres de longeur " ; longueur = strlen (ip);//fonction permettant de retourner la longeur de la chaine de caractere! cout << longueur<<endl;//ensuite on l'affiche! for (n=0;n<longueur;n++)/*on teste les différents caracteres de l'ip pour connaitre leurs valeurs entieres*/ {temp=ip[n]; cout<<"lecture caractere" <<n<<":"<<temp<<endl; if (temp == (char)48) {cout <<"le programme reconnait la valeur 0 dans temp\n"; switch (i) {case 0:ip1=(ip1*10)+0; break; case 1:ip2=(ip2*10)+0; break; case 2:ip3=(ip3*10)+0; break; case 3:ip4=(ip4*10)+0; break; } } else if (temp == (char)49) {cout <<"le programme reconait la valeur 1 dans temp \n"; switch (i) {case 0:ip1=(ip1*10)+1; break; case 1:ip2=(ip2*10)+1; break; case 2:ip3=(ip3*10)+1; break; case 3:ip4=(ip4*10)+1; break; } } else if (temp == (char)50) {cout <<"le programme reconait la valeur 2 dans temp \n"; switch (i) {case 0:ip1=(ip1*10)+2; break; case 1:ip2=(ip2*10)+2; break; case 2:ip3=(ip3*10)+2; break; case 3:ip4=(ip4*10)+2; break; } } else if (temp == (char)51) {cout <<"le programme reconait la valeur 3 dans temp \n"; switch (i) {case 0:ip1=(ip1*10)+3; break; case 1:ip2=(ip2*10)+3; break; case 2:ip3=(ip3*10)+3; break; case 3:ip4=(ip4*10)+3; break; } } else if (temp == (char)52) {cout <<"le programme reconait la valeur 4 dans temp \n"; switch (i) {case 0:ip1=(ip1*10)+4; break; case 1:ip2=(ip2*10)+4; break; case 2:ip3=(ip3*10)+4; break; case 3:ip4=(ip4*10)+4; break; } } else if (temp == (char)53) {cout <<"le programme reconait la valeur 5 dans temp \n"; switch (i) {case 0:ip1=(ip1*10)+5; break; case 1:ip2=(ip2*10)+5; break; case 2:ip3=(ip3*10)+5; break; case 3:ip4=(ip4*10)+5; break; } } else if (temp == (char)54) {cout <<"le programme reconait la valeur 6 dans temp \n"; switch (i) {case 0:ip1=(ip1*10)+6; break; case 1:ip2=(ip2*10)+6; break; case 2:ip3=(ip3*10)+6; break; case 3:ip4=(ip4*10)+6; break; } } else if (temp == (char)55) {cout <<"le programme reconait la valeur 7 dans temp \n"; switch (i) {case 0:ip1=(ip1*10)+7; break; case 1:ip2=(ip2*10)+7; break; case 2:ip3=(ip3*10)+7; break; case 3:ip4=(ip4*10)+7; break; } } else if (temp == (char)56) {cout <<"le programme reconait la valeur 8 dans temp \n"; switch (i) {case 0:ip1=(ip1*10)+8; break; case 1:ip2=(ip2*10)+8; break; case 2:ip3=(ip3*10)+8; break; case 3:ip4=(ip4*10)+8; break; } } else if (temp == (char)57) {cout <<"le programme reconait la valeur 9 dans temp \n"; switch (i) {case 0:ip1=(ip1*10)+9; break; case 1:ip2=(ip2*10)+9; break; case 2:ip3=(ip3*10)+9; break; case 3:ip4=(ip4*10)+9; break; } } else if (temp == (char)46) {cout <<"le programme reconait la valeur . dans temp \n"; i++; } else if (temp == (char)42) cout <<"le programme reconait la valeur * dans temp \n"; //test des caracteres,est-ce que c un . ou n'importe quel chiffre? //si oui (=un chiffre)on fait des operations avec } //ensuite on affiche les valeurs cout <<"voici les 4 chiffres de l'ip:\n"<< ip1<<"\t"<<ip2<<"\t"<<ip3<<"\t"<<ip4<<"\t"; /*puis on teste,normalement on devrais d'abord tester et ensuite afficher les valeurs,mais bon,c juste un début,pour voir si le prog fonctionne*/ if (ip1>255 || ip2>255 ||ip3>255|| ip4>255) cout <<"l'ip n'est pas valide car :\n"; if (ip1>255) cout<<"ip1 est superieur a la valeur normale\n"; if (ip2>255) cout <<"ip2 est superieur a la valeur normale\n"; if (ip3>255) cout <<"ip3 est superieur a la valeur normale\n"; if (ip4>255) cout <<"ip4 est superieur a la valeur normale \n"; cout<<"fin du progz ;)\n"; getchar(); return 0; }
seulement comme je suis débutant,je ne suis pas encore vraiment familier avec les tableaux,c'est en partie pour cela que je ne les ai que rarement utilisés(voire pas du tout)
en fait,g juste quelques rares notions du comment faire un tableau,donc g préféré une méthode + longue et barbante,mais en etant sur que ça marche!
merci de m'avoir conseillé,tes conseils sont toujours très utiles ;)
ip[i]=(ip[i+1]*10)+0;
Comme ca au lieu de tes switch :
**************************switch (i)
{case 0:ip1=(ip1*10)+0;
break;
case 1:ip2=(ip2*10)+0;
break;
case 2:ip3=(ip3*10)+0;
break;
case 3:ip4=(ip4*10)+0;
break;
}
****************************
tu fais :
****************************
ip[i-1]=(ip[i]*10)+0;
**************************
tout d'abord l'utilisateur entre son ip,
celle-ci est d'office en char!
ensuite avec une boucle for,on lis chacun des caracteres de la chaine,
et on fait des calculs avec
i est une variable qui détermine à quel entier on doit rentrer la valeur(0 pour ip1,1pour ip2,2pour ip3,3 pour ip4)
ip1,ip2,ip3,ip4 étant les entiers que l'on obtient à la fin!
donc on calcule de la manière suivante=>on lis le caractere,
suivant la valeur de i,on multiplie un des entiers finaux(ip1...4)par 10 et on ajoute la valeur lue actuellement!
temp étant une variable ou le caractere lu est mis dedans TEMPorairement car à chaque tour de boucle,temp contient le caractere suivant de l'ip!
à la fin du prog,on affiche les différents entiers lus dans l'ip,
et puis on les teste pour savoir si l'ip est valide ou non!
j'espère que c un peu + clair comme ça!
dsl de n'avoir pas expliqué un peu + !(je pensais que le prog parle de lui meme,mais apparemment c pas le cas)
donc,s'il y a d'autres commentaires,n'hésitez pas,faites m'en part! ;)
Meme cette version non-optimisee, je n'y comprend RIEN
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.