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
3 Réponses :
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
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
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
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.
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