ZAhlen einlesen in C?

3 Antworten

int zahlen[10];
for (int i = 0; i < 10; i++)
{
   scanf(" %d", &zahlen[i]);
}

So kann man das z.B. machen.

Woher ich das weiß:eigene Erfahrung

Kann man was anderes als scanf nehmen wir dürfen es nicht verwenden

0
@WhiteSnoww

int zahl = 0;

 cout << "Zahl eingeben: ";

 cin >> zahl;

 cout << "Die Zahl ist: " << zahl << endl;

0
@WhiteSnoww

Soll es denn überhaupt vom Benutzer eingegeben werden? Oder was heißt "einlesen" bei dir?

0

Wir sollen int Werte von der Konsole einlesen und in binären baum einfügen,wenn Ende eingegeben wird sollen wir den Baum ausgeben. Wie mach ich das wenn ich Ende eingibt das das Programm zum Beispiel abbricht

0
@WhiteSnoww

Was genau meinst du mit Ende, soll "Ende" als Zeichenkette, soll Zeilenende oder Nullbyte, etc.? :)

mit gets() (oder besser fgets()) kannst du auch von der Konsole einlesen, wenn ihr scanf nicht nehmen sollt.

allerdings liefert das einen string zurück, d.h. du musst den String dann in int umwandeln (entweder du machst das selbst oder du nutzt atoi() in stdlib dafür)

mit ner while-loop kannst du prüfen, ob die Abbruchbedingung eingetroffen ist, dann kommst du raus aus der schleife und du kannst weiter machen. [Alternative: break; aber das ist nicht so schön]

0
@WhiteSnoww

Mit strcmp bzw. besser strncmp kannst du strings vergleichen, allerdings solltest du darauf achten, dass deine Eingabe natürlich kürzer als "Ende" sein kann und du unter Umständen dann über die Grenze liest und das wäre potenzielle eine Sicherheitslücke (will dir nur die awareness geben, dass sowas nicht cool ist :) )

Denkst du du kriegst das hin mit den Tips von hier? [Alternativ zu den hier genannten Bibliotheksfunktionen kannst du diese natürlich selbst implementieren zur Übung ;) ]

0
@SirNik

Kann mir vielleicht doch jemand den Code schicken

0
@WhiteSnoww
while (strlen(number) != endeSize && strncmp(number, endeString, endeSize) != 0)
{
    printf("Eine Zahl bitte:");
    fgets(number, digitCountOfInt, stdin);
    numbers[i++] = atoi(number);
}

So in etwa kann das aussehen.

1
@SirNik

Und wie kann ich dann abbrechen bei Eingabe von ende

0
@WhiteSnoww

Das ist in dem Code schon drin (endeString ist "Ende"; in number liest du ein und dann wird verglichen, ob das eingelesene gleich "Ende" ist. Dadurch ist die Schleifenbedingung nicht mehr wahr und die Schleife wird verlassen

1
@SirNik

bzw. schau dir mal die Zeile

char endeString = "ende"

an und überlege dir, ob da nicht was fehlt.

0
@WhiteSnoww

Vergiss nicht, dass Strings in C char-arrays sind. Also markiers als array und probier es dann nochmal

1
@SirNik

Was macht oder was bedeutet überhaupt strncmp

0
@WhiteSnoww

string compare. Das vergleicht, ob zwei Strings gleich sind (=0; andere Ergebnisse: <0 und >0, hierzu kannst du gerne googeln)

Der Unterschied zwischen strcmp und strncmp ist, dass bei strncmp zusätzlich eine Anzahl n mitgegeben werden muss, wieviele Zeichen verglichen werden sollen. Das ist sicherer, da du als Programmierer die Länge angeben kannst und somit vermeiden kannst, dass über die Stringgrenzen hinweg verglichen wird, falls ein String z.b. nicht mit dem Nullbyte abgeschlossen ist.

0

Zahlen liest man mit scanf() - das Array baut man aussen drum herum und die for liefert den Index.

int zahl = 0;
cout << "Zahl eingeben: ";
cin >> zahl;
cout << "Die Zahl ist: " << zahl << endl;
Woher ich das weiß:Studium / Ausbildung – Informatikstudent

Das wäre valides C++, aber kein C.

2

Hmm ja danke für den Tipp, wenn ich Hilfe brauche melde ich mich

0

Was möchtest Du wissen?