| | # -- |
| netzwelt.de | |
| | # 5 |
| Registriert seit: 13.07.2009
Beiträge: 189
| Es ist auch bei mir ein wenig her, dass ich mich mit C/C++ auseinandergesetzt habe und ich hoffe, dass das, was noch hängengeblieben ist, Dir ein wenig weiter hilft. Eine Variable vom Typ "char" nimmt 1 Zeichen auf. Ich für meine Wenigkeit würde mich bei einer längeren Zeichenkette immer für die Typenbezeichnung "string" entscheiden. *was ja in Deinem Programm auch funktioniert* Die Angabe "%.2f" sagt dem Programm, dass das Ergebnis mit 2 Nachkommastellen ausgegeben werden soll. Diese Angabe kommt aber nicht in die Eingabe-Zeile, da reicht "%f". *probier mal aus, was passiert, wenn Du in die scanf-Zeile "%.2f" eingibst* Muss für "verbrauch" im auszugebenen Text ein Platzhalter stehen? Ja, denn -zumindest auf meinem Bildschirm- ohne Platzhalter, wird rein der Text ausgegeben, nicht aber der Inhalt der Variablen "verbrauch". Deine Frage zu den const-Variablen: Konstanten setzt man nur ein, wenn die Inhalte sich tatsächlich nicht verändern sollen. Bei Deiner Ober- und Untergrenze ist die Idee also nicht verkehrt. Dein Programm hat allerdings noch einen kleinen Schönheitsfehler: Gibst Du bei Kilometer den Wert 100 ein und bei Liter den Wert 3, wird als Text sowohl "...Smartwagenfahrer" als auch der Text mit "...Mittelklassewagen" ausgegeben. Kommst Du drauf, warum das so ist? Grüssli, Manaja Hier nochmal Dein Code mit "leichten" Veränderungen: Code: #include <stdio.h>
#include <stdlib.h>
#include <math.h>
float liter,km,verbrauch;
char name[10];
int main(void)
{printf("\t\t\t\tBenzinverbrauch\n\n");
printf("Wie heisst du: ");
scanf ("%s",&name);
printf("%s ist ein schoener Name ",name);
printf("\n\nWieviele Kilometer bist du heute gefahren: ");
scanf("%f",&km);
printf("\nDu bist also %.2f Kilometer gefahren",km);
printf("\n\nWieviele Liter hast du dabei benoetigt: ");
scanf("%f",&liter);
printf("\nDu hast also %.2f Liter benoetigt...\n\n\n", liter);
verbrauch = liter/km * 100;
if (verbrauch <=5)
printf("Ahh, Smartwagenfahrer %.2f Liter pro 100km",verbrauch);
if (verbrauch >=10)
printf("Hoffentlich haste nen kleinen Bohrrurm im Garten stehen %.2f Liter pro 100km...",verbrauch);
else
printf("Der typische Mittelklassewagenfahrer! %.2f Liter pro 100 km\n\n",verbrauch);
system("PAUSE");
return 0;
}
__________________ Es gibt immer jemanden, der besser ist, als man selbst. |
|
| | # 6 |
| Team SAT-Technik Registriert seit: 01.01.2006 Ort: mitten im Kohlenpott
Beiträge: 9.881
| Bin zwar nur ein lausiger Cobol-Programmierer mit wenig Ahnung von C, aber der Fehler ist leicht zu erkennen. Wenn die Ausgabe "Smartwagenfahrer" erscheint, ist der Verbrauch nicht >= 10. Das Programm läuft bei der 2. Abfrage in den else-Zweig und gibt "Mittelklassefahrer" aus. Lösung: Die 1. Abfrage muß um einen else-Zweig erweitert werden und dort hinein gehört die 2. Fallunterscheidung. Ist die erste IF-Abfrage "wahr", wird der else-Zweig und damit die 2. Abfrage nicht mehr durchlaufen, die falsche Ausgabe findet nicht mehr statt.
__________________ Es gibt keine großen Entdeckungen und Fortschritte, solange es noch ein unglückliches Kind auf Erden gibt. Albert Einstein Nokia? Nein danke! |
|
| | # 8 |
| Registriert seit: 17.07.2010
Beiträge: 8
| Zwar n bisschen spät der Post, aber vielleicht ist es noch von Interesse ![]() Zum einen will ich erwähnen dass es im ANSI C keinen String als Datentyp gibt, da ist die Verwendung eines Char Array vollkommen richtig. Was oft bei der Eingabe von Zahlen mit Nachkommastellen ein Problem ist, ist dass ein "," als Dezimaltrennzeichen verwendet wird statt ".". Um Mit einem Komma zu arbeiten sind ein paar kleine Umwege erforderlich. Bei den Aufeinanderfolgenden If Abfragen lohnt es sich ein wenig mit verschachtelten IF-Anweisungen ala IF bla ELSE IF blabla ELSE IF usw. So kannst du besser vermeiden ungewollt in den Else Zweig zu kommen. Die Abfragen lassen sich meiner meinung dann auch relativ leicht gestalten und notfalls wieder umbauen. Neben der Aneignung einer Programmiersprache ist es Hilfreich sich mit Strugkogrammen zu beschäftigen (Nassi-Shneiderman-Diagramm ist relativ einfach aber übersichtlich). Sie dienen der Abbildung prozeduraler Programmabläufe auf graphischer Ebene, und erleichtern oftmals die Entwicklung von Algorithmen. |
|
| | # 9 |
| Threadstarter Registriert seit: 13.12.2008 Ort: Rosenheim
Beiträge: 191
| Kommt zwar ein bisschen spät aber danke für die Infos Für alle Neueinsteiger in bestimmte Programmiersprachen gibts unten einen kleinen Anhang in dem ein recht gutes Beispiel für eine 3fache for-schleife geschrieben steht.. Bei diesem Programm können 3 Variablen eingelesen (x,y,z) werden, die jeweils einen Anfangswert und einen Endwert erhalten. Dazu wird dann noch für alle 3 Variablen eine globale Schrittweite angegeben mit der angegeben werden kann mit welchem Abstand die Variablen innerhalb des Anfang und Endwertes berechnet werden sollen. Nach der Eingabe werden in diesem Beispiel sämtliche Multiplikationen der 3 Variablen ausgegeben. Das Wichtige ist dass man anhand des Ausdrucks eben sehr gut erkennen in welcher Reihenfolge eine Schleife mit verschachtelten Schleifen abgearbeitet wird - ganz einfach eigentlich obwohls am Anfang verwirrend erscheint ^^ |
|
| | # -- |
| News Flash | Das könnte Dich auch noch interessieren:
Nicht fündig geworden? Dann ohne Anmeldung in unserem Gast-Forum nachfragen. |
| | # -- |
| netzwelt.de | |







