1
votes

Comment résoudre ce problème avec la boucle While et For?

J'écris un programme dans QBasic qui demande des noms et âges des personnes une infinité de fois jusqu'à ce que j'appuie sur xxx et le programme s'imprime tous ces noms et âges saisis:

Je reçois toujours des Zéros au lieu des noms et des âges , peu importe mes efforts, je suis totalement bloqué, voici mon code:

DIM i AS INTEGER
CLS
i = 1
WHILE nam$ <> "xxx"
   Input "Enter name: ", nam$
   Input "Enter age: ", age$
   Sum$ = nam$ + age$ (i)
   i = i + 1
WEND
FOR x = 1 to i
    PRINT Sum(i)
NEXT x


0 commentaires

3 Réponses :


0
votes

Le code est assez simple:

REM how to enter data and add to array
DIM i AS INTEGER
CLS
DIM Sum(16384) AS STRING
PRINT "enter xxx to quit."
DO
    INPUT "Enter name: ", nam$
    INPUT "Enter age: ", age$
    IF nam$ = "xxx" THEN EXIT DO
    i = i + 1
    Sum(i) = nam$ + " " + age$
LOOP
FOR x = 1 TO i
    PRINT Sum(x)
NEXT x


1 commentaires

Ok, ce sont les résultats que je voulais mais comment puis-je accomplir la même tâche avec WHILE et FOR LOOP uniquement



0
votes

Même code en utilisant uniquement while:

REM how to enter data and add to array using only while
DIM i AS INTEGER
CLS
DIM Sum(16384) AS STRING
PRINT "enter xxx to quit."
WHILE z = 0
    INPUT "Enter name: ", nam$
    INPUT "Enter age: ", age$
    IF nam$ = "xxx" THEN
        z = -1
    ELSE
        i = i + 1
        Sum(i) = nam$ + " " + age$
    END IF
WEND
FOR x = 1 TO i
    PRINT Sum(x)
NEXT x


4 commentaires

Cela fonctionne, pouvez-vous expliquer la somme (16384)? Je ne comprends pas et j'ai vu que sans lui, il y aurait Conversion illégale de numéro Sring à la ligne 13


C'est un nombre assez grand pour déclarer le tableau avec lequel vous n'obtiendrez probablement pas.


Si vous ne dimensionnez pas le tableau, la valeur par défaut est de 10 éléments uniquement.


Bien compris.



0
votes

Exemple de code pour deux tableaux:

REM how to enter data and add to two arrays using only while
DIM Sum1(8192) AS STRING, Sum2(8192) AS INTEGER ' adjusted for qb45
CLS
PRINT "Press Enter to quit."
WHILE z = 0
    INPUT "Enter name?", nam$
    IF nam$ = "" THEN
        z = -1
    ELSE
        INPUT "Enter age?", age%
        i = i + 1
        Sum1(i) = nam$
        Sum2(i) = age%
    END IF
WEND
FOR x = 1 TO i
    PRINT "Name: "; Sum1(x); " Age:"; Sum2(x)
NEXT x


0 commentaires