Ich habe diesen Code, wo der Benutzer aufgefordert wird, eine Nummer einzugeben, um das Programm wissen, wie groß meine verknüpfte Liste sein wird, dann die nächsten Benutzereingaben werden die Daten in die Links geschoben werden. Ich habe keine Probleme mit Ganzzahlen, aber aus welchen Gründen auch immer, wenn ich Dezimalpunkte verwende, zum Beispiel 32.22, stoppt das Programm die normale Ausführung und behält die Zahlen auf der linken Seite der Zahl mit Dezimalpunkt und fügt diese Zahl dem Rest hinzu der Knoten. FYI, ich bin in Visual Studio Express Entwicklung 2012.verknüpfte Liste Eingabetyp Probleme
Für eine gute Ausführung, 3 wie die Anzahl des Bezugs Verwendung und Ziffern 1, 2 bzw. 3, erhalte ich die folgende Ausgabe:
How many numbers?
3
Please enter number
1
List is: 1
Please enter number
2
List is: 2 1
Please enter number
3
List is: 3 2 1
Press any key to continue . . . _
für einen schlechten Ausgang dieses erhalte ich:
How many numbers?
3
Please enter number
1
List is: 1
Please enter number
23.23
List is: 23 1
Please enter number
List is: 23 23 1
Press any key to continue . . . _
Hier ist mein Code:
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
using std::cout;
using std::cin;
using std::endl;
struct Node
{
double data;
Node* next;
};
struct Node* head; // global variable
void Insert(double x)
{
Node* temp = new Node;
temp->data = x;
temp->next = NULL;
if(head != NULL) temp->next = head;
head = temp;
}
void Print()
{
Node* temp = head;
printf("List is: ");
while(temp != NULL)
{
printf(" %d", temp->data);
temp = temp->next;
}
printf("\n");
}
int main()
{
head = NULL; // empty list
printf("How many numbers?\n");
int n, i;
double x;
scanf_s("%d", &n);
for(i = 0; i < n; i++)
{
printf("Please enter number \n");
scanf_s("%d", &x);
Insert(x);
Print();
}
system("PAUSE");
return 0;
}
Irgendwelche Tipps oder vorschlagen Ionen auf diesem? Was mich nervt ist, dass der Code für Ganzzahlen gut funktioniert, aber sobald ich anfange, Dezimalstellen einzuführen, wird es verrückt. Ich habe versucht, die Benutzereingaben sowie den Datentyp in meiner Node-Struktur sowohl als Typ int und Typ double zu werfen und ich erhalte die gleichen Ergebnisse mit beiden.
'scanf_s ("% d", &x);' 'sollte scanf_s ("% lf" sein, &x);' ' –
scanf'is ** nicht sicher Typ ** Dennoch, wenn Sie mit g ++ Sie„Warnung erhalten kompilieren.: format '% d' erwartet das Argument vom Typ 'int', aber Argument 2 hat den Typ 'double' ". Anstatt die Formatangabe zu fixieren, entfernen Sie alle C-Ebenen und verwenden' cin' und 'cout'. –