Commande substring

Signaler
Messages postés
1
Date d'inscription
jeudi 30 novembre 2000
Statut
Membre
Dernière intervention
25 octobre 2005
-
Messages postés
1
Date d'inscription
mardi 14 novembre 2006
Statut
Membre
Dernière intervention
20 août 2009
-
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.

7 réponses

Messages postés
145
Date d'inscription
lundi 13 janvier 2003
Statut
Membre
Dernière intervention
27 décembre 2005
2
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)
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
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
Messages postés
145
Date d'inscription
lundi 13 janvier 2003
Statut
Membre
Dernière intervention
27 décembre 2005
2
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)
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
41
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
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
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
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
Messages postés
1
Date d'inscription
mardi 14 novembre 2006
Statut
Membre
Dernière intervention
20 août 2009

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