Ecreire programme en vb [Fermé]

Signaler
Messages postés
98
Date d'inscription
dimanche 22 janvier 2006
Statut
Membre
Dernière intervention
18 novembre 2015
-
 big_ouf -
bsr a tous
j'ai un programme à ecrire en vb dans le cadre d'un projet d'ecole.l'enoncé est le suivant:
Dans l'enclypedie des jeux 2007, il a fallu utiliser 2007 fois "1" pour numeroter toutes les pages.
Ecrire un programme VB6 qui puisse nous permettre de determiner le nombre de pages de cette encyclopedie.
Nb: Quand on numerote par exemple de 1 à 20, on utilise 12 fois 1!



je sais pas trop par où commencer.Merci pour votre aide

3 réponses

Salut providence alors je n'ai pas trop réchléchit mais voilà un petit début :

Option explicit //toujours préférable....

dim i as integer
dim chaine as string
dim nb_page as integer

nb_page =0
i=0 //initialisations

While (i<>2007)

chaine=str(i) //j'ai des doutes quant à la syntaxe de conversion d'un entier en chaine de caractères

//ici tu lis ta chaine de caractères en mettant un if du style

if (chaine="1") then
nb_page=nb_page+1
end if

i=i+1 //indispensable pour ne pas avoir de boucle infini!

Wend


voila j'espère que ca pourra t'aider
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 706
Salut

Ton code ne marche pas. Dès que le nombre dépasse les dizaines, ça ne pourra pas être égale à "1".
Voici une petite correction


Option explicit //toujours préférable....

dim i as integer
dim chaine as string
dim nb_page as integer

nb_page =0
i=0 //initialisations

While (i<>2007)

     chaine=str(i) 'j'ai des doutes quant à la syntaxe de conversion d'un entier en chaine de caractères

    'ici tu lis ta chaine de caractères en mettant un if du style

    ' On vérifie si "1" appartient au chiffre
    if (substring(chaine,"1")>0) then
         nb_page=nb_page+1
    end if

    i=i+1 'indispensable pour ne pas avoir de boucle infini!

Wend 

Messages postés
90
Date d'inscription
jeudi 7 juin 2007
Statut
Membre
Dernière intervention
3 juillet 2007
17
Ca ne contrôle pas si il y a plusieurs "1" dans la page ;-)
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 706
Lol.
Tu as parfaitement raison. Je me suis un peu emporté. ^^
Voici une version corrigée. again. lol

Option explicit //toujours préférable....

dim i as integer
dim chaine as string
dim nb_page as integer

nb_page =0
i=0 //initialisations

While (i<>2007)

     chaine=str(i) 'j'ai des doutes quant à la syntaxe de conversion d'un entier en chaine de caractères

    'ici tu lis ta chaine de caractères en mettant un if du style

    ' On parcourt tant qu'il reste des "1" dans la chaine.
    j=0
    while(substring(j,chaine,"1")>0) 
        nb_page=nb_page+1
       j=substring(j,chaine,"1")
    wend
    i=i+1 'indispensable pour ne pas avoir de boucle infini!

Wend 


Messages postés
98
Date d'inscription
dimanche 22 janvier 2006
Statut
Membre
Dernière intervention
18 novembre 2015
7 >
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016

Merci a tous pour votre promptitude mais une petite inquietude p/r à la fonction substring:je souhaiterais savoir si c'est bien l'equivalent de la fonction Mid dans vb6.merci
Pour faire une similitude à la fonction mid, tu peux utiliser tout d'abord la fonction len pour savoir le nombre de chiffres que comporte ton nombre.
Dans une boucle, tu fais un




position =1         ' Position du pointeur dans le mot, mais je ne sais plus s'il commence à 0 ou à 1
for i = 1 to len(nombre)
      if mid(nombre,position,1) = "1" then
             j = j+1               'j etant le nombre de "1"
      endif
      position = position +1
next i