Probleme/ Buch Einstieg in C

Schnelle objektorientierte, kompilierende Programmiersprache.
SueNa
Beiträge: 11
Registriert: Fr Mär 29, 2019 11:28 am

Probleme/ Buch Einstieg in C

Beitrag von SueNa » Fr Mär 29, 2019 11:50 am

Hallo,
ich habe vor ein paar Tagen damit begonnen C zu lernen. Dazu habe ich mir u.a. das Buch Einstieg in C gekauft, nach welchem ich auch vorgehe . . . schon beim zweiten Programmbeispiel bzw. Übungsprogramm gibt es Probleme . . . erst hatte ich eine eigene Übungslösung geschrieben, die falsch lief . . . also dachte ich, es liegt an meinem Unwissen ;-) und habe die Musterlösung aus dem Buch in Codeblocks 1:1 abgetippt und laufen lassen . . . allerdings läuft das auch falsch . . . da ich neu bin, finde ich das komisch . . . das kann doch nicht sein, dass im Buch was falsches steht?? Wer kann mir helfen? Vielen Dank

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3084
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Probleme/ Buch Einstieg in C

Beitrag von cloidnerux » Fr Mär 29, 2019 1:32 pm

Hallo und Willkommen im Forum,

ich habe leider das Buch nicht und kann daher auch nicht prüfen, ob es falsch ist.
Poste doch mal die Aufgabe, deine Lösung und was du erwartest, bzw was nicht deiner Erwartung entspricht.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8489
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Probleme/ Buch Einstieg in C

Beitrag von Xin » Fr Mär 29, 2019 1:53 pm

SueNa hat geschrieben:
Fr Mär 29, 2019 11:50 am
das kann doch nicht sein, dass im Buch was falsches steht??
Auszuschließen ist sowas nicht.

Allerdings sage ich Dir aus eigener Erfahrung, dass ich nach 2 Tagen den C-Compiler gerade erst davon überzeugt hatte, überhaupt irgendetwas zu kompilieren und trotzdem heute davon lebe.
Programmieren lernen ist ein Marathon. Oder besser Rudern gegen den Strom. Es ist anstrengend und wenn man sich davon frustrieren lässt und zurücklehnt, dann wirft es einen wieder zurück, weil man sich im Frust gehen lässt. Der Frust ist normal und sollte Dich nicht mehr frustrieren. Das gehört zum Weg dazu.

'Vermutlich hast Du es nicht 1:1 abgetippt. Vielleicht ist eine 1 in Wirklichkeit ein i. Wenn ich Texte lese, die ich gerade geschrieben habe, lese ich nicht, was da steht, sondern was ich denke, dass ich geschrieben habe. Ich kann solche Dinge dann nicht sehen. Ich erkenne sowas dann daran, dass ich mir vorstelle, was ich geschrieben haben muss, damit das Programm diesen Fehler macht und dann sehe ich den Fehler erst, weil ich weiß, wo ich drauf gucken muss.
Vielleicht ist das ganze auch so eingestellt, dass es vor dem Programmstart gar nicht das Programm kompiliert, das Du kompilieren möchtest. Das hatten wir auch schon: Das Projekt enthalt das fehlerhafte Programm, aber es ist im Editor - vollkommen unabhängig vom Projekt - eine Textdatei geöffnet, die nichts mit dem Projekt zu tun hat. Du hast alles brav abgetippt und kompilierst und testest einfach immer wieder das Projekt mit dem fehlerhaften Programm.

All das gehört zum Programmieren lernen dazu und es ist nicht das Zeichen, dass man zu blöd dafür ist. Dass andere Entwickler mehr auf solche Fehler achten und sie ihnen sofort auffallen, liegt vorrangig daran, dass sie genauso frustrierende Tage damit verbrachten, den C-Compiler überhaupt ans Laufen zu bekommen und das eben nicht vergessen haben. Sie haben was gelernt.

Folgendes bitte auch lernen: Wie formuliere ich eine Frage?
Danke :-)
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

SueNa
Beiträge: 11
Registriert: Fr Mär 29, 2019 11:28 am

Re: Probleme/ Buch Einstieg in C

Beitrag von SueNa » Fr Mär 29, 2019 4:06 pm

also gut, das Thema ist "Einkauf" . . . das Programm läuft, der Debugger gibt 3 Warnungen an, . . . allerdings kommen beim Programmdurchlauf nach der zweiten Eingabe sofort große (bestimmt 30Stellige Zahlen) und der Computer fragt mich auch nicht mehr nach der zweiten Eingabe??

also so ist meine Eingabe:

Code: Alles auswählen

#include<stdio.h>
int main ()
{
/*Deklaration mit Initialisierung*/
int anzahlEA,anzahlZA;
double preisEA,preisZA;
double SoR=anzahlEA*preisEA+anzahlZA*preisZA,rabatt=0.2,SmR=SoR*(1-rabatt);

/*Erste Eingabe*/
printf("Anzahl erster Artikel:");
scanf("%d",&anzahlEA);
printf("Preis erster Artikel:");
scanf("%1f",&preisEA);

/*Zweite Eingabe*/
printf("Anzahl zweiter Artikel:");
scanf("%d",&anzahlZA);
printf("Preis zweiter Artikel:");
scanf("%1f",&preisZA);

/*Dritte Eingabe*/
printf("Summe ohne Rabatt:%.2fEuro\n",SoR);
printf("Summe mit Rabatt:%.2fEuro\n",SmR);
return 0;
}
Edit by Xin: Code-Tags eingefügt

SueNa
Beiträge: 11
Registriert: Fr Mär 29, 2019 11:28 am

Re: Probleme/ Buch Einstieg in C

Beitrag von SueNa » Fr Mär 29, 2019 4:24 pm

bei der Preiseingabe im Programm passieren unterschiedliche Dinge. Wenn ich eine ganze Zahl eingebe (wenn er mich nach dem Preis des ersten Artikels fragt), läuft das Programm durch und fragt mich auch nach der Anzahl des zweiten Artikels und dessen Preis .. die Rechnung ist dennoch falsch und heraus kommt etwas abenteuerliches . . . wenn ich als Preis des ersten Artikels 2.00 eingebe, fragt mich das Programm nicht einmal nach der Anzahl des zweiten Artikels und auch nicht nach dem Preis . . . der Debugger gibt mir verschiedene "Meldungen" . . . einmal beschwert er sich, dass anzahlEA nicht initialisiert ist . . . und außerdem meint er, dass bei %1f eine Datei Typ float erwartet wird . . . im Lehrbuch habe ich erst mit double angefangen, bei float muss man ja anders eingeben . . . ???

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8489
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Probleme/ Buch Einstieg in C

Beitrag von Xin » Fr Mär 29, 2019 4:58 pm

oookay... mal ganz blöd, kannst Du mir mal ein Foto von dem Quelltext schicken, steht der tatsächlich genau so im Buch?

Der Quelltext ist falsch, das kann so nicht funktionieren, da das Ergebnis berechnet wird, bevor die Daten da sind, mit denen man rechnen will.

Falls der Text so im Buch steht: Wirf das Buch weg.
Kurze Recherche... der Quelltext steht so nicht im Buch.

Wenn Du eine Zuweisung machst (double SoR=....), dann wird das sofort ausgeführt.
Bei preisxA und anzahlxA hast Du aber noch nichts zugewiesen. Da sind also zufällige Werte drin mit denen Du da rechnest.

Bitte ändere Deinen Schreibstil...es ist recht anstregend wenn ohne punkt und komma und ohne satz struktur einem ein Textblock um die Ohren fliegt.
Danke :-)
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

SueNa
Beiträge: 11
Registriert: Fr Mär 29, 2019 11:28 am

Re: Probleme/ Buch Einstieg in C

Beitrag von SueNa » Fr Mär 29, 2019 5:40 pm

okay, was ich zuvor kopiert habe, ist meine eigene Überlegung.

So wie ich dich verstanden habe, darf ich zu Beginn nur deklarieren oder feste Werte zuweisen.

also wäre es richtig, wenn ich einfach nur:

Code: Alles auswählen

int anzahlEA,anzahlZA;
double preisEA,preisZA;
double SoR, rabatt=0.2, SmR;
schreibe?


Im Lehrbuch steht es so:
(ich kann es leider nur abschreiben, weil ich Probleme habe die Fotos, die ich gemacht habe anzuhängen, was mich jedoch nicht davon abhalten wird weiter zu machen mit dem C Lernen, außerdem macht Übung ja den Meister . . . )

Code: Alles auswählen

#include<stdio.h>
int main ()
{

/*Deklaration*/
int anzahlEins, anzahlZwei;
double preisEins, preisZwei;
double summeOhneRabatt, summeMitRabatt, rabatt=0.2;

/*Erster Artikel*/
printf("Erster Artikel, Anzahl:");
scanf("%d", &anzahlEins);
printf("Erster Artikel, Preis in Euro:");
scanf("%1f", &preisEins);

/*Zweiter Artikel*/
printf("Zweiter Artikel, Anzahl:");
scanf("%d", &anzahlZwei);
printf("Zweiter Artikel, Preis in Euro:");
scanf("%1f", &preisZwei);

/*Berechnung*/
summeOhneRabatt=anzahlEins*preisEins+anzahlZwei*preisZwei;
summeMitRabatt=summeOhneRabatt*(1-rabatt);

/*Ausgabe*/
printf("Summe ohne Rabatt:%.2f Euro\n", summeOhneRabatt);
printf("Summe mit Rabatt:%.2f Euro\n", summeMitRabatt);

return 0;
}

wenn ich das Programm laufen lasse, funktioniert es aber genauso blöd. Es fragt mich nur nach der Anzahl des ersten Artikels, nach dem Preis des ersten Artikels, und wenn ich dann beispielsweiße 2.35 eingebe, läuft irgendwas komisches . . .

ich hoffe mein Schreibstiel ist jetzt besser zu "ertragen" :-) Danke für die Hilfe

EDIT nufan: Code-Tags

SueNa
Beiträge: 11
Registriert: Fr Mär 29, 2019 11:28 am

Re: Probleme/ Buch Einstieg in C

Beitrag von SueNa » Fr Mär 29, 2019 5:59 pm

noch genauer:

ich habe den Lehrbuchtext noch einmal durchlaufen lassen.

Der Debugger gibt für die Zeilen, in denen die scanf(…) Funktion steht, folgendes an:

warning: format ' %f' expects Argument of type 'float *' but Argument 2 has type 'double *'

deshalb gibt der Debugger 2 Warnungen an, jedoch keinen Fehler . . .

mfro
Beiträge: 305
Registriert: Mi Jan 16, 2013 4:58 pm

Re: Probleme/ Buch Einstieg in C

Beitrag von mfro » Sa Mär 30, 2019 10:04 am

Du hast wahrscheinlich eine deutsche Tastatur und ein deutsches Betriebssystem.

Und deine C-Library (in der scanf() drinsteckt) weiß das.

Deshalb ist für sie "2.00" keine Textdarstellung einer Fliesskommazahl.

Versuch's mal mit "2,00" 8-)
It's as simple as that. And remember, Beethoven wrote his first symphony in C.

SueNa
Beiträge: 11
Registriert: Fr Mär 29, 2019 11:28 am

Re: Probleme/ Buch Einstieg in C

Beitrag von SueNa » Sa Mär 30, 2019 10:25 am

leider nein . . .

ich hab nun ausprobiert, dass es besser läuft, wenn ich statt "double" "float" nehme in der Deklaration . . . bei meiner nächsten Übungsaufgabe kommt jetzt wenigstens keine riesige Zahl mehr raus, aber er rechnet dennoch falsch.

Ich muss das wohl selbst heraus finden . . . dann weiß ich es wenigstens. . .

Weiß jemand ein gutes Buch mit Übungsaufgaben und Lösungen, die richtig sind ;-)?

Antworten