Änfängerin im Programmieren

Schnelle objektorientierte, kompilierende Programmiersprache.
nati
Beiträge: 24
Registriert: Sa Jun 06, 2009 1:35 pm
Wohnort: Österreich/Kärnten

Änfängerin im Programmieren

Beitrag von nati » Sa Jun 06, 2009 2:00 pm

hallo,

ich habe vor einigen Tagen mit dem Programmieren von C angefangen und jetzt hab ich ein paar kleine Probleme und Fragen. Vielleicht wäre jemand so nett mir die zu beantworten :) übrigens arbeite ich mit CodeBlocks

Ich habe mir ein Buch gekauft, aber es funktionieren nicht alle Beispiele zB wenn ich ein Programm mit Trigraph Zeichen schreibe, wird das nicht erkannt, und ich würde gerne wissen woran das liegt...??? Das Programm lässt sich nämlich überhaupt nicht ausführen.

Mit dem folgenden Beispielprogramm habe ich auch Schwierigkeiten, ich kann immer nur den Umrechnungsfaktor eingeben, den Betrag kann ich nicht! woran liegt das? Hab mir auch schon die Lösung heruntergeladen, aber das funktioniert auch nicht.

Code: Alles auswählen

// bsp0007.c

#include <stdio.h>

main()

{
float u_faktor;
float x;
        printf("\n\tW a e h r u n g s r e c h n e n\n");

        printf("\nBitte Umrechnungsfaktor eingeben: ");
        scanf("%f",&u_faktor);

        printf("Bitte DM-Betrag eingeben: ");
        scanf("%f",&x);
            printf("\n%.2f DM entsprechen ",x);
            printf("%.2f in der Fremdwaehrung.",x*u_faktor);
}
Wie gesagt ich kenn mich leider noch nicht gut genug aus und bräuchte ein bisschen Hilfe! Wäre echt voll nett, wenn sich das jemand ansieht!

mfg natalie

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

Re: Änfängerin im Programmieren

Beitrag von cloidnerux » Sa Jun 06, 2009 2:09 pm

Also, erstmal hallo im Forum, schön auhc mal eine Frau hier zu sehen.

Welches Buch hast du dir gekauft?
WOrin besteht das Problem?
Gibts du dienen Dm Betrag ein und das Programm beendet sich Augenblicklich?

Ich würde erstmal am Ende des Programms folgendes einbauen:

Code: Alles auswählen

...
printf("Enter zum beenden Drücken");
scanf("%f", &x);
return 0;
Also ganz am ende vor Deiner letzen geschweiften Klammer.
Redundanz macht wiederholen unnötig.
quod erat expectandum

nati
Beiträge: 24
Registriert: Sa Jun 06, 2009 1:35 pm
Wohnort: Österreich/Kärnten

Re: Änfängerin im Programmieren

Beitrag von nati » Sa Jun 06, 2009 6:29 pm

hi,
danke für die schnelle antwort!

ich hab mir das buch "C Programmieren von Anfang an" von Helmut Erlenkötter gekauft. War nicht so teuer und wirkte auch sehr sympatisch... Vorher hab ich "C, C++ Kompendium" zu lesen begonnen, aber das ist eher nicht so für Einsteiger geeignet, hab ich halt das Gefühl...

die Beispiele von meinem Buch gibt es auch im Inet zum downloaden http://www.erlenkoetter.de, falls das hilft! (meins ist bspl0007)

mein Problem besteht darin: wenn ich das Programm ausführe steht da:

Waehrungsrechnen

Bitte Umrechnungsfaktor eingeben: (den geb ich ein, drück auf Enter) zB 0,345
(und dann steht da)
Bitte DM-Betrag eingeben:
0.00 DM entsprechen 0.00 in der Fremdwaehrung. Enter zum beenden drücken
Process returned 0 <0x0>...
press any key to continue.

also es beendet sich nicht, nur ich bekomme halt kein Ergebnis, weil es mich den DM-Betrag nicht eingeben lässt. Es "überspring" die Zeile "Bitte DM-Betrag eingeben:"

hab die 3 Zeilen hinein kopiert, das hat bei meinem Problem leider auch nicht weiter geholfen...

mfg natalie

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

Re: Änfängerin im Programmieren

Beitrag von cloidnerux » Sa Jun 06, 2009 6:50 pm

Also, ich habe den Code bei mir Compiliert(Dev-Cpp/gcc) und bei mir Funktioniert alles.

Code: Alles auswählen

// bsp0007.c

#include <stdio.h>
#include <conio.h>              //ganz böse Headerdatei die ich aber wegen Zeitmangel nutze

int main()

{
   float u_faktor;
   float x;
   printf("\n\tW a e h r u n g s r e c h n e n\n");

   printf("\nBitte Umrechnungsfaktor eingeben: ");
   scanf("%f",&u_faktor);

   printf("Bitte DM-Betrag eingeben: ");
   scanf("%f",&x);
   printf("\n%.2f DM entsprechen ",x);
   printf("%.2f in der Fremdwaehrung.",x*u_faktor);
   getch();                   //ganz böse Funktion
   return 0;
}
Das ist der von mir Verwendete Code.
Wenn du NICHT unter Windows Arbeitest, funktioniert conio.h nicht, diese Headerdatei soll man auch egt. nicht nutzen.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: Änfängerin im Programmieren

Beitrag von Kerli » Sa Jun 06, 2009 7:05 pm

Hi, Willkommen bei uns im Forum.
nati hat geschrieben:ich hab mir das buch "C Programmieren von Anfang an" von Helmut Erlenkötter gekauft. War nicht so teuer und wirkte auch sehr sympatisch...
Ich hab das gleiche mit C++ und mir gefällt es eigentlich ganz gut...

Dein einziges Problem liegt hier:
nati hat geschrieben:Bitte Umrechnungsfaktor eingeben: (den geb ich ein, drück auf Enter) zB 0,345
Wenn du statt dem Komma einen Punkt als Dezimaltrennzeichen eingibst müsste es eigentlich funktionieren.

Das was bei dir passiert ist, ist das nach der Eingabe der Zahl scanf aus dem Eingabestrom die 0 als Zahl extrahiert. Anschließen ist der Eingabestrom durch das Komma in einem fehlerhaften Zustand und alle weiteren Abfragen der Eingabe schlagen fehl. Beheben kannst du das entweder durch eine gültige Eingabe ;) oder der natürlich bessere Weg diese Fehler behandeln bzw. den Eingabstream löschen. Dazu gibt es im Wiki auch einen Artikel (Den Teil mit C++ kannst du ignorieren, also cin, cout, std:: etc.): http://proggen.org/doku.php?id=c:faq:input-puffer
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

nati
Beiträge: 24
Registriert: Sa Jun 06, 2009 1:35 pm
Wohnort: Österreich/Kärnten

Re: Änfängerin im Programmieren

Beitrag von nati » So Jun 07, 2009 12:39 pm

Jippi es funktioniert! :D

und ich hab nur einen Punkt statt ein Komma machen müssen :)

super danke für die Hilfe!!!!!!!!!

ja das Kapitel werd ich mir gleich anschaun... schadet sicher nicht!

nochmals danke! und ich hoffe ich darf wieder was fragen, wenn ich mich nicht auskenne :?

falls jemand noch buchempfehlungen oder ähnliche tipps für mich hat, wäre ich dem auch sehr dankbar!

mfg natalie

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: Änfängerin im Programmieren

Beitrag von Kerli » So Jun 07, 2009 6:53 pm

nati hat geschrieben:nochmals danke! und ich hoffe ich darf wieder was fragen, wenn ich mich nicht auskenne :?
Bitte gerne, dafür ist das Forum ja da :D
nati hat geschrieben:falls jemand noch buchempfehlungen oder ähnliche tipps für mich hat, wäre ich dem auch sehr dankbar!
Bei uns in der Vorlesung haben sie das Buch "Softwareentwicklung in C" von Klaus Schmaranz gehabt, was ich zwar nicht gelesen habe aber ganz gut sein sollte. Übrigens bin ich gerade draufgekommen das die TU-Wien das als PDF zum Downloaden hat: http://www.asc.tuwien.ac.at/eprog/downl ... maranz.pdf

Ansonsten kann ich nur empfehlen: üben, üben, üben. Nur durch viel Übung lernt man gut programmieren. Und wenn etwas nicht geht solange nachforschen warum es nicht geht, bis alles wie gewünscht funktioniert. Dann gibt es natürlich noch unser Wiki und du kannst ja auch einfach wieder im Forum fragen...

edit: Weil ichs gerade seh. Da kommt ja noch jemand aus Österreich ;)
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Änfängerin im Programmieren

Beitrag von Dirty Oerti » So Jun 07, 2009 10:32 pm

*Auch noch seinen Senf dazu geb*
nati hat geschrieben:Jippi es funktioniert! :D

und ich hab nur einen Punkt statt ein Komma machen müssen :)
Lass dich davon aber nicht abschrecken, es besser zu machen ;)
scanf ist böse...
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

nati
Beiträge: 24
Registriert: Sa Jun 06, 2009 1:35 pm
Wohnort: Österreich/Kärnten

Re: Änfängerin im Programmieren

Beitrag von nati » Sa Aug 29, 2009 1:37 pm

hi,

ich hab wieder mal ein Problemchen. Ich mach jetz gerade ein Kapitel mit Textvergleichen durch und es gab ein Beispielprogramm abzuschreiben wo man das Passwort herausfinden sollte! Ich check aber überhaupt nicht wie das gehen soll bzw. wo ich ansetzen soll...

kann mir vielleicht jemand einen Tipp geben!?

Code: Alles auswählen

#include <stdio.h>
#include <string.h>

int main()
{
char geheim[10], passwort[80];
int versuch=3;

    geheim[3]='p';
    geheim[2]=109;
    geheim[7]=114;
    geheim[5]=116;
    geheim[0]=67;
    geheim[9]='x';
    geheim[1]=111;
    geheim[8]='\0';
    geheim[4]=geheim[1]+6;
    geheim[6]=101;
    printf("\nSie haben 3 Versuche.\n");
    do
    {
        printf("\nBitte Passwort eingeben.\n>");
        gets(passwort);
        if(strcmp(geheim,passwort) == 0)
        {
            printf("\nPasswort ok!\n");
            break;
        }
        else
        printf("\nFehlerhaftes Passwort! \n\a");
        versuch--;
    } while (versuch > 0);
}

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Änfängerin im Programmieren

Beitrag von nufan » Sa Aug 29, 2009 1:49 pm

Das Passwort wird im char-Array "geheim" gespeichert. Den Inhalt von "geheim" kannst du aus dem Programm lesen und musst ihn dann eingeben. Der eingegebene Text "passwort" wird mit "geheim" verglichen. Stimmen sie überein, wird "Passwort ok!" ausgegeben, ansonsten "Fehlerhaftes Passwort!".

Code: Alles auswählen

    geheim[3]='p';
    geheim[2]=109;
    geheim[7]=114;
    geheim[5]=116;
    geheim[0]=67;
    geheim[9]='x';
    geheim[1]=111;
    geheim[8]='\0';
    geheim[4]=geheim[1]+6;
    geheim[6]=101;
Hier wird das Passwort festgelegt. Jedem Element des Arrays (Index beginnend bei 0!) wird ein Zeichen zugewiesen. Dabei werden ASCII-Codes verwendet. Hier findest du eine ASCII-Tabelle.
Beispiel: Das erste Zeichen ist 67. Jetzt siehst du in der Tabelle nach. 67 entspricht einem 'C', d.h. das Passwort beginnt mit 'C'. Werden Zeichen zwischen ' gesetzt, werden sie automatisch in ASCII umgewandelt. Und bei der Zuweisung musst du einfach rechnen :)
Eine kleine Falle ist dann noch dabei, aber sonst solltest du das Beispiel lösen können ;)

Code: Alles auswählen

gets(passwort);
gets ist böse...
Außerdem fehlt dem Code ein return.


Das nächste Mal bitte einen neuen Thread mit passendem Titel aufmachen.

Antworten