Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

20.05.2012, 20:34

Fehlermeldung: Verweis auf nicht aufgelöstes externes Symbol

Hallo
Ich habe versucht ein Programm zu schreiben in dem die Größe von einer noch nicht ausgewachsenen Person berechnet werden kann. Das Programm ist noch nicht ganz fertig aber ich wollte es bis jetzt mal testen also nur mit der Größe der Jungen aber dann kam folgende Fehlermeldung:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
1>------ Erstellen gestartet: Projekt: Groeße_Ausrechnen, Konfiguration: Debug Win32 ------
1>Kompilieren...
1>Groeße_Ausrechnen.cpp
1>c:\users\valentin\documents\visual studio 2008\projects\groeße_ausrechnen\groeße_ausrechnen.cpp(53) : warning C4244: '=': Konvertierung von 'double' in 'float', möglicher Datenverlust
1>c:\users\valentin\documents\visual studio 2008\projects\groeße_ausrechnen\groeße_ausrechnen.cpp(22) : warning C4700: Die nicht initialisierte lokale Variable "Charakter" wurde verwendet.
1>Verknüpfen...
1>Groeße_Ausrechnen.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""float __cdecl Groeße_Maedchen(float,float)" (?Groeße_Maedchen@@YAMMM@Z)" in Funktion "_main".
1>C:\Users\Valentin\Documents\Visual Studio 2008\Projects\Groeße_Ausrechnen\Debug\Groeße_Ausrechnen.exe : fatal error LNK1120: 1 nicht aufgelöste externe Verweise.
1>Das Buildprotokoll wurde unter "file://c:\Users\Valentin\Documents\Visual Studio 2008\Projects\Groeße_Ausrechnen\Debug\BuildLog.htm" gespeichert.
1>Groeße_Ausrechnen - 2 Fehler, 2 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========


Und hier der Quellcode:

Quellcode

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
53
54
55
56
// Größe von Jugendlichen ausrechnen
//
#include <iostream>

using namespace std;

float Groeße_Jungen (float GroeßeVater, float GroeßeMutter);
float Groeße_Maedchen (float GroeßeVater, float GroeßeMutter);

int main ()
{
    // Variablen
    //
    float GroeßeVater, GroeßeMutter;
    float GroeßeKind;
    char Charakter;

    // Menue
    do
    {
        cout << "Ist die zu berechnende Person (m)ännlich oder (w)eiblich?" << endl;
    }   while (Charakter != 'm' && Charakter != 'M');

    // Wie groß sind die Eltern?
    cout << "Wie groß ist der Vater (in cm)?: ";
    cin >> GroeßeVater;
    cout << "Wie groß ist die Mutter (in cm)?: ";
    cin >> GroeßeMutter;

    // Maenlich oder weiblich?
    if (Charakter == 'm' || Charakter == 'M')
    {
        GroeßeKind = Groeße_Jungen (GroeßeVater, GroeßeMutter);
    }
    else if (Charakter == 'w' || Charakter == 'W')
    {
        GroeßeKind = Groeße_Maedchen (GroeßeVater, GroeßeMutter);
    }

    cout << "Das Kind wird vermutlich " << GroeßeKind << "cm groß.";

    return 0;
}

// Groeße_Jungen
//
float Groeße_Jungen (float GroeßeVater, float GroeßeMutter)
{
    float Rueckgabe;
    float Zwischenrechnen;

    Zwischenrechnen = GroeßeVater + GroeßeMutter;
    Rueckgabe = Zwischenrechnen / 2 + 6.5;

    return Rueckgabe;
}

2

20.05.2012, 21:56

Jo Valentin, achte im Übrigen auf jeden Fall auf die Warnungen und behebe sie! Kann manchmal Stunden Suche ersparen...
Zu deinem Problem: Was steht denn in der Fehlermeldung? Schau mal genau hin. float Groeße_Maedchen ist einfach noch nicht definiert.
Auskommentieren der Funktion oder folgendes dürfte es beheben:

C-/C++-Quelltext

1
float Groeße_Maedchen (float GroeßeVater, float GroeßeMutter){}


MfG
Check

3

20.05.2012, 22:12

Wusste garnicht das man ß in C++ als Namen benutzen darf.

4

20.05.2012, 22:47

Du darfst sogar auch Umlaute verwenden. ;)
Ist nur nicht gerade schön.

MfG
Check

5

21.05.2012, 14:34

ok danke das programm startet jetzt :D aber der sagt in der Fehlermeldung bei den Warnungen auch noch das eine double Variable in eine float Konvertiert wird aber ich habe nirgendwo eine double Variable deklariert. Und dann steht da noch: Die nicht initalisierte Variable "Charakter" wurde verwendet. Muss ich da noch der char Variable nen Wert zuweisen oder was?

6

21.05.2012, 16:01

Wieso? Du verwendest doch ein double. 8|
Wahrscheinlich einfach nur ein Flüchtigkeitsfehler. So wäre es behoben und ein wenig optimiert:

C-/C++-Quelltext

1
2
3
4
5
6
// Groeße_Jungen
//
float Groeße_Jungen (float GroeßeVater, float GroeßeMutter)
{
    return (GroeßeVater+GroeßeMutter) / 2 + 6.5f;
}

Die Funktion ist so eigentlich ein ganz guter inline-Kandidat, wenn sie öfter aufgerufen werden würde.
Aber egal. Ja, du solltest Charakter einen Wert zuweisen, darf auch NULL sein. Hauptsache zugewiesen.
Beugt undefiniertem Verhalten vor. :D

MfG
Check

PS: Ist die Aufgabe zufälligerweise aus einer Klassenarbeit? Wir hatten mal so eine Aufgabe mit genau diesen Werten, wenn ich mich nicht irre, im Mathematikwettbewerb des Bundeslandes Hessen. :crazy:

7

21.05.2012, 16:31

Nein :D aber wir hatten ein Übungsblatt für eine Klassenarbeit die wir bald schreiben und da ich nach Ideen für ein Programm gesucht hab, hab ich mir überlegt, dass ich ja dafür eins schreiben könnte :)

valentin

Treue Seele

Beiträge: 212

Wohnort: Schweiz

Beruf: Schüler

  • Private Nachricht senden

8

21.05.2012, 18:11

Jo Valentin, [...]

Wurde nach mir gefragt? :D
visit me on deviantArt!
http://v-alentin.deviantart.com/

There is no programming language, no matter how structured, that will prevent programmers from making bad programs. //Larry Flon

9

21.05.2012, 19:11

1>c:\users\valentin\documents\visual studio 2008\projects\groeße_ausrechnen\groeße_ausrechnen.cpp(53) : warning C4244: '=': Konvertierung von 'double' in 'float', möglicher Datenverlust
1>c:\users\valentin\documents\visual studio 2008\projects\groeße_ausrechnen\groeße_ausrechnen.cpp(22) : warning C4700: Die nicht initialisierte lokale Variable "Charakter" wurde verwendet.

Keine Ahnung.
Direkt dich meinte ich jetzt aber nicht. :P

MfG
Check

Werbeanzeige