Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Anfängerhürden

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 ] [ 3 ] [ 4 ]
000
05.01.2004, 19:57 Uhr
Tommi Bisic



Hallo Leute
Ich habe ein kleines Problem und zwar soll ich ein Programm entwerfen das eine Zahl einlesen soll und sie prüfen soll ob es eine Primzahl ist.
Meine bisherige Arbeit sieht so aus:

C++:
#include <iostream.h>

void main()
{
    int z;
    char c;
    do
    {
        cout<<"Bitte geben sie die Zahl an, die sie untersuchen  möchten:"<<endl;
        cin>>z;
        if (z%1!=0 && z%z!=0)
        {
            cout<<"Dies ist eine Primzahl"<<endl;
        }
        else
        {
            cout<<"Hierbei handelt es sich um keine Primzahl"<<endl;
        }
    cout<<"Wenn sie möchten können sie mit J/j weitermachen"<<endl;
    cin>>c;
    }
    while (c=='j'||c=='J');
}



Leider kommt bei mir die Fehlermeldung:

2.obj : error LNK2005: _main bereits in 1.obj definiert
Debug/Prüfung.exe : fatal error LNK1169: Ein oder mehrere mehrfach definierte Symbole gefunden
Fehler beim Ausführen von link.exe.

Was mache ich falsch?? Kann mir vielleicht jemand helfen?Danke


Bearbeitung von Pablo:

Bitte, CPP TAGS BENUTZEN


Dieser Post wurde am 05.01.2004 um 19:59 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
05.01.2004, 20:01 Uhr
0xdeadbeef
Gott
(Operator)


Im Zweifel hast du mehrere Versionen derselben Datei in ein Projekt gepackt, und der versucht die Dinger zusammenzulinken. Die Sache läuft so: Der Compiler kompiliert jede Datei deines Projektes einzeln in eine Objektdatei. Diese Objektdateien werden dann am Ende zu deiner ausführbaren zusammengelinkt. Wenn du jetzt in den Objektdateien gleichnamige Funktionen hast, weiß der Linker am Ende nicht, welche er jetzt eigentlich wann verwenden soll und schmeißt dir nen Fehler raus.

Übrigens ist dein Primzahltest falsch; jede Zahl ist durch 1 und sich selbst teilbar. Eine Zahl ist nur dann eine Primzahl, wenn 1 und sie selbst die einzigen Zahlen sind, durch die sie teilbar ist.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 05.01.2004 um 20:04 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
05.01.2004, 20:04 Uhr
Pablo
Supertux
(Operator)


Ich erkenne keinen Fehler außer dass die Main Funktion int sein soll und nicht void.

Mit welchen Kompiler kompilierst du? Sind alle Pfade richtig gesetzt?

Zu den Primzahlen, beefy sagt das schon, guck dir www.fun-soft.de/showtopic.php?threadid=5016 anschauen
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 05.01.2004 um 20:08 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
05.01.2004, 20:05 Uhr
Tommi Bisic



Ich wollte nur noch hinzufügen, dass ich ein Anfänger bin und nicht sehr viel Plan habe und einen Fehler habe ich glaube ich entdeckt:
Es müsste
if (z%1==0 && z%z==0) statt if (z%1!=0 && z%z!=0)
heißen.......glaube ich zumindest...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
05.01.2004, 20:10 Uhr
Pablo
Supertux
(Operator)


Nein, so macht man das nicht, denn die erste if-Anweisung immer wahr wird, die 2. immer falsch wird. Guck die Adresse, die ich in meinem 002 Post gepostet hab.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
05.01.2004, 20:12 Uhr
Tommi Bisic



Ich glaube Oxdeadbeef dass du recht hast.Ich habe davor eine andere Übung in den selben Projektordner abgelegt.Aber wo liegt den jetzt mein Fehler bezüglich der Primzahl genau?Ich wusste dass einen Primzahl nur durch 1 und sich selbst teilbar ist.Liegt daran villeicht der Fehler:
if (z%1==0 && z%z==0)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
05.01.2004, 20:22 Uhr
Tommi Bisic



Danke Pablo
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
05.01.2004, 20:27 Uhr
Pablo
Supertux
(Operator)


Das Problem ist, dass deine Funktion nicht alle Fälle abdeckt. Alle Zahlen sind durch 1 Teilbar, d.h. x%1 ist immer 0. (Lassen wir jetzt x!=0 sein)

damit if (···) ausgeführt wird, muss alles wahr (true) sein. das heißt, links und rechts muss true stehen. z%1==0 ist true für alle Zahlen.

Alle Zahlen sind auch durch sie selbst teilbar, d.h. z%z ist stets 0 außer für 0, da 0%0 nicht definiert ist. Die zweite Bedingung ist ebengalls wahr.

Eine Primzam ist eine Zahl (außer 1), die nur1 und sich selbst als Teiler hat. Aber alle Zahlen erfüllen das. Aber viele Zahlen haben andere Zahlen, durch die sie auch teilbar sind, z.b. 8 hat nicht nur 8 und 1 als Teiler, sondern2 und 4. Und die Bedingung sagt, nur. Also, wenn du das negierst, kommt: eine Zahl x ist nicht prim, wenn es mind. eine Zahl gibt, die nicht 1 oder x ist und Teiler von x ist. Um auf Primzahlen zu prüfen müsstest du die Zahl nehmen und dich fragen, ob sie durch 2, 3, 4, .... usw. teilbar ist. Tip: wenn eine Zahl postiv ist, außer der 2, ist die Zahl nimmer prim.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
05.01.2004, 20:28 Uhr
erpelqueen
Entlein


do while, was ist das?
Kenn ich garnicht, aber man kann doch auch das ganz "normal" mit einer for-schleife machen...
--
TSchöööööööö ,
How dy How, Ranger Joe
--------------------------------------
www.erpelstore.de.vu
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
05.01.2004, 20:33 Uhr
0xdeadbeef
Gott
(Operator)


do { } while ist eine annehmende Schleife. Sie wird mindestens einmal ausgeführt, erst am Ende der Schleife wird die Abbruchbedingung überprüft.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ] [ 3 ] [ 4 ]     [ C / C++ (ANSI-Standard) ]  


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: