Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Einsteiger braucht kleine Hilfe beim 2ten Programm :D

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
06.12.2005, 19:57 Uhr
~dude
Gast


Hi, ich versuche derzeit c++ zu erlernen. Da ich schon ein wenig gelernt habe, habe ich versuch das erste mal ein Programm nicht nur abzutippen. Dafür habe ich mir überlegt, dass ich ein Programm schreiben möchte, welches die Nullstelle einer linearen Funktion errechnet.

Der grundgedanke dahinter ist, dass ich die Gleichung y=mx+c gleich Null setzte, und sie dann nach x auflöse. Dabei entsteht x=-c/m. Ich frage also zuerst den User nach seinen Werten für c und m. Diese dividiere ich dann, und gebe das Ergebniss x aus. Soweit zumindest in der Theorie. Mein Programmcode geht so:


C++:
#include <stdio.h>

short m;  //deklariert die Variable für die Steigung der Funktion
short c;  //deklariert die Variable für die höhe der Schnittstelle zur y-Achse
short x;  //deklariert die Variable für den x-Wert in dem die Funktion die x-Achse schneidet

void main (void)
{  
    printf("Dieses Programm gibt Nullstellen von linearen Funktionen an.\n");
    
    //beschreibt dem User was das Prog macht      
          
    printf("Bitte geben sie nun die Steigung m ihrer Funktion an:\n"); //m wird festgelegt
    scanf("%d", &m);

    printf("Bitte geben sie c ihrer Funktion an:\n"); //c wird festgelegt
    scanf("%d", &c);

    printf("die Funktion lautet:\n");  //die Angegebene Funktion wird angezeigt
    printf("%dx+%d\n",m,c);            //die Angegebene Funktion wird angezeigt
    


x=-(c/m);                              //x wird berechnet
printf("x=%d",x);                      //Ergebniss wird ausgegeben


printf("\nFertig!\n\n\n");             //User wird über die Beendigung des Programms informiert

}




Aus irgendeinem Grund gibt mein Programm für m aber immer 0 an, und aus diesem Grund ein logischerweise falsches Ergebniss an.

hat einer eine Ahnung warum dem so ist?

Dieser Post wurde am 07.12.2005 um 11:08 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
06.12.2005, 20:13 Uhr
Pler
Einer von Vielen
(Operator)


Ohne jetzt weiter durchgeschaut zu haben, aber short?
Mal davon ausgehen, dass die Ergebnisse nicht immer ganze Zahlen sind, musst du zum Beispiel double nehmen.


C++:
double x;
.
.
.
printf("x=%lg",x)

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
06.12.2005, 20:19 Uhr
~dude
Gast


Okay, funktioniert jetzt... danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
06.12.2005, 20:35 Uhr
predator



Übrigens, das ist kein C++, sondern C!
--
Gruß
predator
Zitat von Edsger W. Dijkstra:
Es ist praktisch unmöglich, einem Studenten gutes Programmieren beizubringen, wenn er vorher in BASIC programmiert hat. Als potenzielle Programmierer sind sie geistig verstümmelt ohne Hoffnung auf Erholung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
06.12.2005, 21:47 Uhr
Pler
Einer von Vielen
(Operator)


wenn man das als cpp tagt (tagen gibts das Verb?) ist das mit syntax-highlighting!!!

Ausserdem könnte man jetzt auch diskutieren, dass C zu C++ gehört.
Auch lässt sich der Quellcode mit dem g++ sehr gut übersetzen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
07.12.2005, 17:48 Uhr
predator



Die .h - Headerdateien gehören nicht zum C++-Standard.
--
Gruß
predator
Zitat von Edsger W. Dijkstra:
Es ist praktisch unmöglich, einem Studenten gutes Programmieren beizubringen, wenn er vorher in BASIC programmiert hat. Als potenzielle Programmierer sind sie geistig verstümmelt ohne Hoffnung auf Erholung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
08.12.2005, 00:07 Uhr
Pler
Einer von Vielen
(Operator)



Code:
void main( void )



ist auch kein C-Standard, demzufolge ist es auch kein C !?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
08.12.2005, 01:28 Uhr
Hans
Library Walker
(Operator)


Hi,

nur mal so nebenbei gefragt: was tust Du, wenn die Funktion keine Nullstelle hat, d.h. der Graf eine Gerade parallel zur x-Achse ist? (Hinweis: dann ist die Steigung Null.)

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
08.12.2005, 07:56 Uhr
ao

(Operator)



Zitat von Hans:
nur mal so nebenbei gefragt: was tust Du, wenn die Funktion keine Nullstelle hat

Abstürzen ...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
08.12.2005, 16:05 Uhr
Hans
Library Walker
(Operator)


@ao: Normalerweise sollte die RTL das Programm mit einer "Division by Zero"-Fehlermeldung abbrechen...
Oder unter Windows sollte ein Fenster mit einer entsprechenden Fehlermeldung anzeigen, wo das Programm nach einem click auf OK beendet (d.h. abgebrochen) wird.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: