2016-04-23 11 views
-4

Ich habe ein Problem beim Einstellen einer vom Benutzer eingegebenen Variablen. Ich habe etwas eingegeben und es speichert einen anderen Wert. Ziemlich frustrierend. Also wäre jede Führung großartig.Warum speichert die Variable einen anderen Wert als die Benutzereingaben?

Beraten Sie sich, es gibt ziemlich viele printf(), als ich versuchte, das Problem zu lokalisieren. Ich bin auch immer noch einen Einfluß von C.

#include <stdio.h> 

int vehicletype, in, out; // User Entered Info 
int vehicleID[5000]; 
float vehicleCharge[5000]; 
int i; 

// Variables for Main Function 
int q; // Loop Control 
float z; 

int main(){ 

    for(q = 1; q != 1518944; q++) { 
     printf("Enter your position in the parking queue: "); 
     // Take the queue entered by the user and assign it to i 
     scanf("%d\n", &i); 

     // Take the user input(which is being held in the variable i) and place it into the 'i' 
     //position of the ID array 
     vehicleID[q] = i; 

     printf("Enter the time(past 0600) you wish to start parking: \n"); 
     //take the time and pass it to the time function to determine roundup 
     scanf("%d\n", &in); 
     printf("Enter the time(before 2200) you wish to leave: \n"); 
     scanf("%d\n", &out); 
     printf("Time in: %d\nTime out: %d\n", in, out); 

    } 

    return 0; 

} 

@MM zu bekommen versucht, ich soll 0617 in die „in“ Variable und 1547 für die „out“ (Ich benutze diese später eingeben kann, um herauszufinden, wie viel geparkt), aber die Ausgabe, die ich bekomme, wenn ich die Variablen überprüfe, indem ich "in" und "out" drucke, ist 1 und 399 beziehungsweise.

+2

Was sagt Ihr Compiler, wenn Sie versuchen, diesen Code zu kompilieren? – EOF

+3

Was ist bei einer bestimmten Eingabe die tatsächliche und erwartete Ausgabe? Welche Variable scheint den Wert zu verändern? Haben Sie versucht, den Code in einem Debugger zu durchlaufen? Und bitte versuchen Sie, uns ein [Minimal, ** Vollständig ** und verifizierbares Beispiel] (http://stackoverflow.com/help/mcve) zu erstellen. –

+5

für (z = 1; z == 5000; z ++) <- z == 5000? Ja wirklich? – Ccr

Antwort

0

Hier ist ein mehr oder weniger funktionierender Code. Ich verstehe das 1518944-Limit nicht, aber der Code ergreift Maßnahmen, um sicherzustellen, dass der Code unabhängig von der Anzahl der von Ihnen gemachten Eingaben nicht außerhalb der Grenzen des Arrays vehicleID schreibt. Es überprüft auch einige Zahlen auf Gültigkeit und echo seine Eingaben. Die führenden Zeilenumbrüche an einigen der Ausgaben lassen die Ausgabe halbwegs normal erscheinen, wenn die Daten über ein anderes Programm geschrieben werden (ein Zufallsgenerator erzeugte die Zahlen 1-5000 und zweimal 0600-2200).

#include <stdio.h> 

static int vehicleID[5000]; 

int main(void) 
{ 
    for (int q = 1; q != 1518944; q++) 
    { 
     int in, out; 
     int i; 
     printf("\nEnter your position in the parking queue: "); 
     if (scanf("%d", &i) != 1) 
      break; 

     vehicleID[q % 5000] = i; 

     printf("Enter the time (past 0600) you wish to start parking: "); 
     if (scanf("%d", &in) != 1) 
      break; 
     printf("Enter the time (before 2200) you wish to leave: "); 
     if (scanf("%d", &out) != 1) 
      break; 
     if (in < 600 || in > 2200 || out < 600 || out > 2200 || in >= out) 
      printf("Invalid times (in %.4d, out %.4d)\n", in, out); 
     else 
      printf("\nPosition: %d; Time in: %.4d; Time out: %.4d\n", i, in, out); 
    } 
    putchar('\n'); 

    return 0; 
} 

Beachten Sie, dass Eingaben überprüft und wiederholt werden. Das Überprüfen ist eine entscheidende Programmiertechnik; Drucken (Echo) ist eine grundlegende Debugging-Technik.