Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de :: C (C89, C99 und C11) ::  Schnittpunktberechnung  
Gehen Sie zu Seite Zurück  1, 2
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
DirkB
Unregistrierter




Beitrag DirkB Unregistrierter 16:06:02 24.04.2012   Titel:              Zitieren

Teilst du irgendwo durch 0 ?
SeppJ
Moderator

Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 17932
Beitrag SeppJ Moderator 17:07:30 24.04.2012   Titel:              Zitieren

fola schrieb:
also hab es den doch nochmal anders gemacht... aber jetzt schließt er mir die anwendung und sagt code 0 was will der von mir


C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <stdio.h>
#include <math.h>
int main (void)
 
       /* Hier werden als erstes die Angaben gemacht */
{
double x1, y1, x2, y2, x3, y3, x4, y4, m1, m2, n1, n2, Ergebnisx, Ergebnisy;
 
 
 
     printf ("Geben Sie fuer Strecke 1 x1 ein: \n");
     scanf ("%lf", &x1);
     printf ("Geben Sie fuer Strecke 1 y1 ein: \n");
     scanf ("%lf", &y1);
     printf ("Geben Sie fuer Strecke 1 x2 ein: \n");
     scanf ("%lf", &x2);
     printf ("Geben Sie fuer Strecke 1 y2 ein: \n");
     scanf ("%lf", &y2);
     printf ("Geben Sie fuer Strecke 2 x3 ein: \n");
     scanf ("%lf", &x3);
     printf ("Geben Sie fuer Strecke 2 y3 ein: \n");
     scanf ("%lf", &y3);
     printf ("Geben Sie fuer Strecke 2 x4 ein: \n");
     scanf ("%lf", &x4);
     printf ("Geben Sie fuer Strecke 2 y4 ein: \n");
     scanf ("%lf", &y4);
printf ("a=%f nb=%f nc=%f n",x1, y1, x2, y2, x3, y3, x4, y4);
 
 
 
{
    m1= (y2-y1)/(x2-x1);   /* berechnung der Steigung der Geraden */
    m2= (y4-y3)/(x4-x3);
 
    if (m1 == m2)
        printf("Strecken sind Parallel");
    else
    if (n1 < n2)
        printf("%lf schneiden sich nicht %lf \");
 
    n1= y1-(y2-y1)/(x2-x1)*x1;          /* Abstände zur x-Achse */
    n2= y3-(y4-y3)/(x4-x3)*x3;
 
    Ergebnisx = (n2-n1)/(m1-m2);        /* berechnung der Scnittpunkte für x und y Koordinaten */
    Ergebnisy = m1*(n2-n1)/(m1-m2)+n1;
 
    printf("
Schnittkoardinate fuer x betraegt: %lf/n", Ergebnisx);
    printf("
Schnittkoardinate fuer y betraegt: %lf/n", Ergebnisy);
}
   
        getchar ();
}
Wie du alleine schon am Syntaxhighlighting hier im Forum siehst, ist der Code voller Schreibfehler. Das kann gar nicht übersetzen. Und selbst wenn man die Schreibfehler (Zeilen 27 und 39) wegmacht, bleiben sehr viele Compilerwarnungen:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
test.c: In function ‘main’:
test.c:27:3: warning: too many arguments for format [-Wformat-extra-args]
   printf ("a=%f nb=%f nc=%f \n",x1, y1, x2, y2, x3, y3, x4, y4);
   ^
test.c:39:9: warning: format ‘%lf’ expects a matching ‘double’ argument [-Wformat]
         printf("%lf schneiden sich nicht %lf \n");
         ^
test.c:39:9: warning: format ‘%lf’ expects a matching ‘double’ argument [-Wformat]
         printf("%lf schneiden sich nicht %lf \n");
         ^
test.c:52:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
test.c:38:10: warning: ‘n1’ may be used uninitialized in this function [-Wuninitialized]
       if (n1 < n2)
          ^
test.c:38:10: warning: ‘n2’ may be used uninitialized in this function [-Wuninitialized]
       if (n1 < n2)
          ^
Die darfst du getrost alle als schwerwiegende Fehler ansehen, die dir der Compiler bloß nicht als Fehler ankreiden darf, da der Standard allerlei Unsinn erlaubt, in der Annahme der Programmierer wüsste schon, was er da tut. Das ist aber bei Anfänger nicht der Fall, daher Warnungen immer auf Maximum (auch als Profi) und Warnungen als Fehler ansehen.


P.S.: Es ist furchtbar mit anzusehen, wie dein ursprüngliches Programm, das bis auf eine Kleinigkeit schon auf einem guten Weg zur Abstraktion war, nun zu diesem Ungeheuer geworden ist, da du an den Grundlagen scheiterst, wie man Werte einliest und ausgibt oder mit structs umgeht :( .

_________________
Du brauchst Hilfe?, Buchempfehlungen für C++,
Wie man in Fragen den richtigen Code postet,
The Definitive C++ Book Guide and List


Zuletzt bearbeitet von SeppJ am 17:10:12 24.04.2012, insgesamt 2-mal bearbeitet
Bonni4355
Unregistrierter




Beitrag Bonni4355 Unregistrierter 08:18:08 25.04.2012   Titel:   Schnittpunktberechnung            Zitieren

Füge in die Funktion main die Zeile: struct point a, b, c, d, x; ein. Damit deklarierst und definierst Du die Variablen. Scanf rufst Du wie folgt auf:
scanf("%f %f %f %f", &a.x, &a.y, &b.x, &b.y);
Scanf erwartet die Adressen der Variablen, daher der Adressoperator. Da der Punktoperator . stärker bindet als der Adressoperator, brauchst Du keine Klammern.
Für die Variablen c und d machst Du das gleiche.
Gruß
Bonni4355
DirkB
Unregistrierter




Beitrag DirkB Unregistrierter 08:54:56 25.04.2012   Titel:   Re: Schnittpunktberechnung            Zitieren

Bonni4355 schrieb:
scanf("%f %f %f %f", &a.x, &a.y, &b.x, &b.y);


Dann doch aber mit %lf, da ermitlerweile double nimmt.
Bonni4355
Unregistrierter




Beitrag Bonni4355 Unregistrierter 13:41:05 25.04.2012   Titel:   Re: Schnittpunktberechnung            Zitieren

DirkB schrieb:
Bonni4355 schrieb:
scanf("%f %f %f %f", &a.x, &a.y, &b.x, &b.y);


Dann doch aber mit %lf, da ermitlerweile double nimmt.


Hallo DirkB,
ich bezog mich auf die ursprüngliche Fassung. struct point enthält 2 Variablen vom Typ float. Mit den Änderungen müsste das Programm compilierbar sein. Im übrigen sehe ich keine Notwendigkeit, hier float durch double zu ersetzen.
Gruß
Bonni4355
Gast ?!
Unregistrierter




Beitrag Gast ?! Unregistrierter 22:12:46 29.04.2012   Titel:   gleiches problem            Zitieren

Hey, muss nächste Woche das gleiche Programm abgeben ^^
Hab mir da was nettes zusammen geschrieben ...
wenn Interesse besteht einfach melden.

Gruß
c++.de :: C (C89, C99 und C11) ::  Schnittpunktberechnung  
Gehen Sie zu Seite Zurück  1, 2
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.