Commande substring

cerberus2 Messages postés 1 Date d'inscription jeudi 30 novembre 2000 Statut Membre Dernière intervention 25 octobre 2005 - 25 oct. 2005 à 11:25
cpotiron Messages postés 1 Date d'inscription mardi 14 novembre 2006 Statut Membre Dernière intervention 20 août 2009 - 20 août 2009 à 11:07
Bonjour,

Je viens de débuter une formation de DI il y a deux semaines et je galère énormément. En fait, cette formation dure un an pour l'équivalent d'un bac+2 et il s'agit d'auto-formation, ceci signifiant que pour obtenir l'aide d'un formateur il faut se lever de bonne heure. Cette formation était sensée s'adresser aux débutants, du moins c'est ce que l'on m'avait dit. Je constate néanmoins que je suis le seul novice de la section, mes collègues ayant tous des expériences antérieures solides en programmation (DUT, BTS, etc...). Ceci étant dit, je n'ai aucun livre pour m'aider à l'heure actuelle. La seule ressource dont je dispose est un pavé de 300 pages sur C# qui ne s'adresse pas au débutant que je suis et auquel je ne comprends strictement rien. Chaque jour, les TP que nous réalisons (sans cours, car il s'agit je le répète d'autoformation) deviennent de plus en plus difficiles (Fibonacci, Erasthothène, tri par bulle, etc etc...) et moi, je m'enfonce de plus en plus.
J'en suis arrivé au point ou je n'avance plus du tout. J'ai de grosses difficultés à écrire les algorithmes et à passer outre l'abstraction qui en découle. Je n'arrive tout simplement pas à "visualiser" les choses, les boucles, les opérations effectuées par l'ordinateur.
Actuellement, je suis bloqué depuis d'innonbrables heures en face de ma feuille blanche face, incapable d'écrire l'algorithme pour cet exercice: "Ecrire un programme qui transcrit un nombre binaire en son équivalent décimal".
La seule chose que j'ai compris, c'est qu'il me faut entrer ce nombre binaire, ou plutôt chaque chiffre de ce nombre binaire dans un tableau de valeur, et qu'ensuite il me faudra multiplier chacune de ses valeurs 0 ou 1 par 2^0, 2^1, 2^2, etc...
Ensuite ajouter les valeurs obtenues pour avoir le nombre décimal.

Les problèmes que j'ai sont multiples:
- Je n'arrive pas à écrire l'algorithme détaillé
- Je ne sais pas vraiment manier les tableaux sous C#
- On m'a parlé d'une commande "substring" pour décomposer le binaire, mais je ne sais pas de quoi il s'agit.

Je ne vais pas demander aux développeurs que vous êtes la solution de cet exercice.
Plutôt, je souhaiterais savoir ces choses:
1. Quel bouquin DE BASE me conseillez-vous pour apprendre et assimiler les bases en C#?
2. Quel bouquin me conseillez-vous pour m'exercer avec les algorithmes?
3. Si vous pouviez me donnez un petit exemple sur ce substring, ce serait sympa.

Voilà, merci de m'avoir lu et un grand merci d'avance pour vos réponses. Je suis vraiment paumé et au bord de la noyade.
Cerberus2.
A voir également:

7 réponses

cs_poullos Messages postés 145 Date d'inscription lundi 13 janvier 2003 Statut Membre Dernière intervention 27 décembre 2005 2
25 oct. 2005 à 11:54
1. et 2.) Aucune idée pour les bouquins, mais il y a plein de tutoriels
sur internet pour debuter en C#, (pour le langage en lui même tu
trouveras beaucoup de tuto C++, c'est pareil) [%20http://c.developpez.com/cours/ ici] .



3.) Substring est une methode de la classe String (voir sur le site
http://msdn.microsoft.com/, il y a tout ) et s'utilise comme cela :

string toto = "plop";

toto.substring(1, 2) va te renvoyer la chaine "lo".



Mais si tu ne maitrises pas les notions de l'objet oriente toi plutot vers le langage C

La brigade meurt mais ne se rend pas (Hisoka)
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
25 oct. 2005 à 12:38
Bonjour,

Déja, je comprends ta douleur... Mais tu es tombé sur le bon forum ;)



Pour ce qui est de l'algorithme et de la facon de procéder

-> Tu dois entrer ta valeur en binaire.

La valeur rentrée sera une chaine (string). Ce qui tombe bien, c'est qu'un string est en fait un tableau de char :)

Donc tu as deja ton tableau tout pret.




Ensuite, tu a bien compris l'histoire de la conversion en binaire, il
faudra prendre le rang d'un bit, et le mettre a la puissance 2.

Donc comment proceder ?

Tu vas utiliser 2 variables en plus de celle contenant la chaine en binaire:

-une variable de type double qui contiendra ton resultat en decimal

-un simple int qui contiendra le rang de ton bit -1. Ce sera la valeur a mettre puissance 2.



Il te faut une boucle for, qui va jouer avec chaque caractere de ta chaine binaire


<hr size="2" width="100%"> int temp = 0; // Tu mettras la valeur decimale dedans;

int rang =
bin.Length -1 // bin etant ta chaine binaire, on prend sa taille
-1

for(int i = 0; i < bin.Length; i++)

{

}


<hr size="2" width="100%">

Je ne te met pas le contenu de la boucle, puisque tu nous demande de pas te resoudre ton exercice ;).


Je vais juste te donner l'analyse de ce qu'il faut y faire. Si tu t'en
sors pas, je te donnerais le corps de la boucle, pour que tu puisses
apprendre et comprendre par l'exemple.

Dans ta boucle for tu dois :

- Prendre la valeur i de ta chaine binaire et la multiplier par (rang ^ 2). en C#, tu as la méthode Math.Pow() pour cela

- Ajouter le resultat de la ligne si dessus a ta variable temp

- Décrementer le rang.



Cela se fait donc en 2 lignes de code



J'espere que j'ai été assez clair.

Bon courage



Au fait : pas besoin de Substring avec cette méthode





Mx

Mx
0
cs_poullos Messages postés 145 Date d'inscription lundi 13 janvier 2003 Statut Membre Dernière intervention 27 décembre 2005 2
25 oct. 2005 à 12:39
Tu lui as un peu trop maché le travail la Morpion ca va pas l'aider à avancer ....

La brigade meurt mais ne se rend pas (Hisoka)
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
25 oct. 2005 à 12:47
0

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

Posez votre question
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
25 oct. 2005 à 12:51
Non, je pense au contraire que je lui donne une piste, et que comme il
n'a pas de cours, pas d'autre choix que d'apprendre par l'exemple quand
tu es bloqué.

Vaut mieux lui donner une bonne solution a son probleme, plutot qu'il
en trouve une mauvaise. (moins optimisée, plus compliquée).

Quand tu t'autoformes, tu passes souvent a coté de choses qui repondent
plus simplement a ton probleme. Et je sais de quoi je parle.

Et puis, s'il connaissait la méthode, il ne serait pas venu nous rendre visite ;).


Mx
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
25 oct. 2005 à 12:53
Il y a la réponse dans le lien qu'a donnée Lutinore, mais avec un
Substring cette fois (donc sans utiliser la chaine comme un
tableau de char)

Mx
0
cpotiron Messages postés 1 Date d'inscription mardi 14 novembre 2006 Statut Membre Dernière intervention 20 août 2009
20 août 2009 à 11:07
Puis je savoir de quelle autoformation il s'agit?
ca a l'air bien.
Je fais deja beaucoup d e programmtion mais j'aimerai progresser encore plus.



Christounette
0
Rejoignez-nous