myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   [C++] Anfänger sucht Hilfe (https://mygully.com/showthread.php?t=2573116)

NoKey 18.02.12 07:49

[C++] Anfänger sucht Hilfe
 
Hi,
ich hab erst vor ein paar Monaten C++ gelernt (jetzt schon fast ein Jahr) und wollt heute die Praxis ausprobieren.

Mein Programm soll jetzt Primzahlen ermitteln.


Meine Theorie: Eine Zahl ist eine Primzahl, wenn es einen Rest gibt wenn man es mit allen vorigen Primzahlen teilt.
Das Problem ist, dass zu viele Arrays erstellt werden als nötig.(Hab die betroffene Stelle fett makiert)
Frage: Man man das Problem elegant(er) lösen?

Thelvan 18.02.12 09:29

Mich wundert, dass es überhaupt kompiliert...

int Zaehlen aber kein return

Fire.Storm 18.02.12 11:08

Das Programm wird vermutlich richtig ausgeführt.
Jedoch so schnell das du nichts davon siehts.
Füg einfach mal am Ende des Programms cin.get(); ein.
Der Befehl lässt das Programm warten, bis du eine Taste gedrückt hast.

Ansonsten hat Thelvan recht.
Du musst die Funktion Zaehlen nicht als int deklarieren wenn du keinen Wert zurückgeben willst.
Es wäre also sinnvoller als Funktionstyp void zu wählen. (Also void Zaehlen ())

NoKey 18.02.12 11:52

Ich hab da noch eine Frage:
der Befehl return gibt den Rückgabewert an den Aufrufer zurückgesendet. Aber was bedeutet das genau? :)
Und kann man irgendwie Umlaute benutzen? Also statt int Zeahlen -> int Zählen

Thelvan 18.02.12 11:58

Wenn er was zurückgeben soll musst du das in einer Variable speichern, also z.B. so:

int result = Zaehlen();

Macht hier aber nicht viel Sinn

germgerm 18.02.12 13:38

Zitat:

Zitat von NoKey (Beitrag 23289645)
...
Und kann man irgendwie Umlaute benutzen? Also statt int Zeahlen -> int Zählen

Umlaute sind nicht erlaubt.

firstguess 18.02.12 15:38

Code:

#include <iostream>
using namespace std;

void Zaehlen(void){//ohne return
        int Eingabe;
        cout << "Eine Zahl zwischen 0 und 100" << endl;
        cin >> Eingabe;
        while (Eingabe <=100)
        { cout << Eingabe << endl;
        Eingabe++;
        }
}

int Zaehlen_2(void){//mit return
        int Wert1=10,Wert2=5;
        return (Wert1+Wert2);
}//zwar nicht sinvoll aber selten ;)



int main(){
int Ergebnis;


//Ergebnis aus Zaehlen2 ausgeben
cout<<Zaehlen_2()<<endl;

//oder in einer Variablen speichern
Ergebnis=Zaehlen_2();

//und dann z.B ausgeben
cout<<Ergebnis<<endl;

system("pause");//wartet mit Aufforderung auf einen Tastendruck
}

Hoffe das hilft.

eonar 19.02.12 10:48

Was soll das Programm den können, ist der Einbau der Unterfunktion beabsichtigt...?

Gr eonar

NoKey 19.02.12 17:32

@firstguess

Wenn ich das Progamm nur mit Zaehlen_2 ausführe, erscheint einfach nur eine 15...
Kannst du mir bitte ein anderes (evtl. besseres :)) Beispiel für einen Rückgabewert und return geben? :)

Thelvan 19.02.12 19:43

Code:

#include <iostream>
using namespace std;

int Zaehlen(int i, int value){
        i += value;
        return i;
}


int main(){
int Ergebnis = 0;
while(Ergebnis < 100)
{
        Ergebnis = Zaehlen(Ergebnis,1);
        cout << Ergebnis << endl;
}
system("pause");//wartet mit Aufforderung auf einen Tastendruck
}


eonar 23.02.12 19:40

#include <cstdlib>
#include <iostream>

using namespace std;

int Zaehlen(int i, int value); //-- Anmeldung der Unterfunktion

int main(int argc, char *argv[])
{
int Zahl;
cout << "Bitte eine Zahl eingeben :";
cin>>Zahl;

while(Zahl < 100)
{
Zahl = Zaehlen(Zahl,1);
cout << Zahl << endl;
}
system("PAUSE");
return EXIT_SUCCESS;
}
int Zaehlen(int i, int value)
{
i = i + value;
return i;
}

firstguess 24.02.12 20:01

@ NoKey hoffe hilft weiter :)


Erik/Schreier 29.02.12 18:19

Zitat:

Zitat von germgerm (Beitrag 23289978)
Umlaute sind nicht erlaubt.

Blödsinn, warum sollen die nich erlaubt sein, natürlich kann man Umlaute verwenden.

Das Problem ist dass umlaute nich in allen Ländern verwendet werden und Programmierer in US Klassen wie Übergabe oä. nicht verwenden können.

sebästchillchilla 14.05.12 17:41

@^ :D Guck mal genau auf eine QWERTY Tastatur .. Es gibt keine Umlaute wie "Ä" "Ü" "Ö" .

droelfzehn 17.05.12 13:01

Umlaute sind möglich dazu nutzt du in deiner cout ausgabe ein \x84 was soweit ich weiß ein kleines ä ist.
Die 84 kannst du durch jede Beliebige zahl aus dem Asci zeichensatz ersetzen.
Z.B. cout << "Das ist ein Umlaut \x84 \n"; wobei \n für einen Zeilenumbruch steht.

ProgMaster 17.05.12 13:54

Zitat:

Zitat von droelfzehn (Beitrag 23524529)
Umlaute sind möglich dazu nutzt du in deiner cout ausgabe ein \x84 was soweit ich weiß ein kleines ä ist.
Die 84 kannst du durch jede Beliebige zahl aus dem Asci zeichensatz ersetzen.
Z.B. cout << "Das ist ein Umlaut \x84 \n"; wobei \n für einen Zeilenumbruch steht.

Wenn man keine Ahnung hat...

droelfzehn 18.05.12 13:02

Zitat:

Zitat von ProgMaster (Beitrag 23524663)
Wenn man keine Ahnung hat...


wenn du dir so sicher bist warum Probierst du es nicht mal aus

ProgMaster 18.05.12 14:14

Zitat:

Zitat von droelfzehn (Beitrag 23527250)
wenn du dir so sicher bist warum Probierst du es nicht mal aus

Du solltest mal besser lesen...

Umlaute in Symbolnamen sind verboten!

mAggo88 27.05.12 11:59

hier gibt es ein kleines Tutorial für Java einsteiger,
Java ähnelt sehr c++

[Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]

kannst es dir ja mal anschauen.
VG

slahn 27.05.12 12:56

C++ ist aber auch in sehr vielen Sachen sehr viel anders ... Wer C++ lernen will, soll C++ lernen, wer Java lernen will, soll Java lernen. Wenn man so versucht eine Sprache zu lernen, lernt man sich sehr viele schlechte Sachen, die die Sprache eigentlich schöner lösen könnte.

jon.west 28.05.12 09:49

Dann würde ich mir schon eher C# Videos anschauen ;)
Trotzdem, C++ bleibt C++ ! :)

Erik/Schreier 24.08.12 22:47

Zitat:

Zitat von HababaX (Beitrag 23528239)
Und selbst wenn es erlaubt ist, ist es verboten.
Wenn ein Idiot sich nicht dran hält, wär das für mich ein Kündigungsgrund!

Du zitierst jemanden der nichteinmal den Unterschied zwischen Funktions- und Symbolnamen
kennt und das einzige was dir einfällt ist dass du jemanden kündigen würdest der eine
Konvention verwendet die in manchen Firmen durchaus gebräuchlich ist. Daran merkt man
dass du keinerlei erfahrung in der Programmierung hast.

Was soll eigentlich "wenn es ERLAUBT ist ist es VERBOTEN" heißen?

Regeln für Namensvergabe in C, C++, Python, Java ...
(bei nichtbeachtung kommt ein Fehler beim Linken)

- muss mit einem Buchstaben oder Unterstrich beginnen
- darf keine Sonderzeichen wie enthalten


Namenskonventionen für Programmiersprachen sind
(einfach nur Dinge an die man sich halten SOLLTE)

- Variablennamen beginnen mit Kleinbuchstaben
- Klassennamen beginnen Mit Substantiven und großbuchstaben
- Methodennamen beginnen mit Verben und kleinbuchstaben
- Konstanten weden ausschließlich mit Großbuchstaben geschrieben
- keine Umlaute verwenden
...


Code:

#include <iostream>

using namespace std;

void tütöriäl();

int main()
{
        tütöriäl();
        system("pause");
}

void tütöriäl()
{
        cout << "Hello World!" << endl;
}

dieses Programm lässt sich problemloß mit Visual Studio Linken da es dem ANSI-Standard entspricht.

Code:

using System;

namespace Tütöriäl
{
    class Prögram
    {
        static void Main(string[] args)
        {
            int ä = 0;
            int ü = 5;

            while(ä <= ü)
            {
                Console.WriteLine(ä++);
            }

            Console.ReadLine();
        }
    }
}

Funktioniert weil es der ECMA Norm entspricht.

Code:

>>> MäünStröng = "Hello World!"
>>> MäünStröng

Python hat meines Wissens nach keine Standardisierung aber auch da gehts

Ich könnte mit 100 Programmiersprachen so weiter machen aber irgendwann will ich heute auch nochmal ins Bett.
Sollte aber sowieso jedem Zeigen dass es möglich ist Umlaute zu verwenden.

Bevor man behauptet irgendwas is verboten oder irgendwas geht nich sollte man sich n bisschen damit beschäftigen
oder auch mal Ausprobieren besonders da ausprobieren einen großteil der Programmierarbeit ausmacht. Wenn ettwas
in einem Programm einbaut was verboten ist (In Fachkreisen dem Standard bzw. der Norm wiederspricht) meldet der
Linker nen Fehler und man weiß dass es nicht möglich ist.

NetWebs 25.08.12 01:02

@Erik/Schreier:

1. Der Thread ist schon einige Wochen alt!
2. An dem was du schreibst merkt man eher, dass du absolut keine Erfahrung in der Entwicklung hast!
3. Verstanden hast du auch nichts!

Dass das Linken/Kompilieren etc. funktioniert stellt hier auch niemand in Frage!

Schon mal an den Fall gedacht, dass dein Code auch mal von anderen verarbeitet wird?
Anscheinend nicht! Das mag daran liegen, dass du noch nie in größeren Projekten gearbeitet hast in denen der Code in verschiedenen Ländern von Menschen mit unterschiedlichen Muttersprachen erstellt, bearbeitet und reviewt wird. Klar, wenn man (wie du vielleicht) Code entwickelt, den niemals ein anderer Mensch sehen wird/will, dann darst du auch Umlaute verwenden.

Da die Code-Wiederverwendbarkeit aber in der Entwicklung eine sehr hohe Priorität hat, ist es eben nicht nur sinnvoll sondern eben Pflicht, eine Sprache zu verwenden, die von vielen verstanden wird (und das ist eben Englisch). Selbst wenn das Produkt nur in Deutschland entwickelt wird, so wird es mit der Zeit wachsen und irgendwann mal von einer nicht-deutsch-sprechenden Person verarbeitet wird.
Nicht vergessen darf man Paper, Foren etc. in denen Code-Teile besprochen werden.
Da Symbolnamen dann auch noch in Bindings vorkommen können. Was ist wenn die Arbeit mit dem Code nur dadurch erschwert wird, weil jemand im Ausland keine Umlaute auf der Tastatur hat?

Daher ist der Hinweis, dass selbst "wenn es erlaubt ist, ist es verboten" absolut richtig!
Jemanden der das eben nicht versteht und sich nicht daran hält, weil er der Meinung ist er würde es besser verstehen, würde ich dann auch kündigen!

Alles was du schreibst hört sich doch eher so an, als hättest du eben absolut Null Erfahrung in der Softwareentwicklung! Du gehst wohl von deinen "Projekten" aus und vergleichst (sorry für den Ausdruck, aber so ist es eben) deine Furz-Projekte mit echten Projekten, die auf Jahrzehnte geplant sind. Das ist doch kindisch, oder?

Dein abschliessender Satz ist daher einfach nur lachhaft und löst bei mir nur Kopfschütteln aus:

Zitat:

Zitat von Erik/Schreier (Beitrag 23788503)
Bevor man behauptet irgendwas is verboten oder irgendwas geht nich sollte man sich n bisschen damit beschäftigen
oder auch mal Ausprobieren besonders da ausprobieren einen großteil der Programmierarbeit ausmacht. Wenn ettwas
in einem Programm einbaut was verboten ist (In Fachkreisen dem Standard bzw. der Norm wiederspricht) meldet der
Linker nen Fehler und man weiß dass es nicht möglich ist.

... jetzt frag dich mal selbst wieviel Erfahrung du hast (internationale Projekte?).

disphoria 25.08.12 02:21

@haba,....& dem rest der bande,...schönes geflame etc,...würd ehrlich gesagt mal etwas auser dem (geflame/rumgebashe) laut dir 'kritik', von deiner wenigkeit sehen,...ein klein wenig hilfe für die leute die hilfe suchen und nicht eine 'haun wir auf den tisch und ruhe ist' mentalität

momentan gehts in diesem teil des forums leider in die richtung das du, progmaster und wie auch immer der 3te in eurer werten runde heisen magst seit nem guten halben jahr alles niedermacht das da irgendwie fragt und oder hilfe sucht,...muss das wirklich sein?

ich sehs eher traurig,...ihr leute basht und flamt lieber als die 2min dazu investieren zu helfen,...aber ja was solls,...vlt könnts ihr es mit 'eurer erfahrung' od was auch immer nicht besser,..

ich würde an dieser stelle auch gern einmal die co-admins und moderatoren ansprechen,...warum schiebt ihr da nicht einmal nen riegel vor? das programmierunterforum geht den bach runter im moment,...was heist im moment,...seit einem halben jahr,...

greetz disphoria

NetWebs 25.08.12 07:43

@disphoria:

Sorry, ich wußte nicht, dass man hier direkt weint, wenn man etwas berechtigterweise kritisiert.
In Zukunft werde ich meine Erfahrung nicht mehr einbringen und lieber bei jedem Unsinn behaupten, dass das so richtig ist.

Quabla 28.08.12 00:14

kritik ist immer willkommen wenn sie konstruktiv ist. wenn man aber jeden seiner beiträge mit nem satz wie "man wie dumm kann man eigentlich sein?" anfängt, ist damit niemandem geholfen. damit sorgt man nur dafür, dass anfänger sich nicht mehr trauen ihre fragen zu stellen, da sie angst haben auseinandergenommen zu werden. bei dir netwebs ist es mir noch nie aufgefallen, aber bei manch anderen schon...

ich will hier jetzt niemanden direkt anprangern, aber bevor man postet sollte man sich vielleicht mal überlegen, was man, wenn man selbst die frage gestellt hätte, gerne lesen würde. wenn einem die frage zu dumm ist, kann man seine zeit ja auch sinnvolle investieren, als den nächsten flamewar loszutreten. in threads in denen offensichtlich ist, dass der ersteller nur zu faul ist sich die lösung selber zu erarbeiten könnt ihr wegen meiner rumfalmen wie ihr wollt.

slahn 28.08.12 09:00

Zitat:

Zitat von Quabla (Beitrag 23796946)
... in threads in denen offensichtlich ist, dass der ersteller nur zu faul ist sich die lösung selber zu erarbeiten könnt ihr wegen meiner rumfalmen wie ihr wollt.

Nur diese Stelle würde ich so nicht unterschreiben ... Es ist hier ja keiner gezwungen dass er Antwortet. Wenn einem die Frage nicht passt oder man meint dass sich der Fragensteller die Antwort nicht verdient hat, dann sollte man auch nicht Antworten.

So wie Klopfer (aus Bambi) schon sagte:"[Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]" ;)

germgerm 28.08.12 10:14

@Erik/Schreier

Zitat:

<...>
Code:

#include <iostream>

using namespace std;

void tütöriäl();

int main()
{
        tütöriäl();
        system("pause");
}

void tütöriäl()
{
        cout << "Hello World!" << endl;
}

dieses Programm lässt sich problemlos mit Visual Studio Linken da es dem ANSI-Standard entspricht.
<...>

Das wusste ich wirklich nicht. Ich muss zugeben, ich habe es nicht einmal geglaubt. Deswegen habe ich es zuerst ausprobieren müssen, bei den neueren Studios funktioniert es tatsächlich.
(GNU habe ich noch nicht ausprobiert.)

Hauptsächlich arbeite ich mit VC++ 6.0 (plus Qt und noch einigen Gimmicks), dort ist es nicht möglich. Wird ein älterer Standard sein.

spartan-b292 28.08.12 11:09

G++ ((Debian 4.4.7-1) 4.4.7) kompiliert das bei mir jedenfalls nicht.

5: error: stray ‘\303’ in program
5: error: stray ‘\274’ in program
5: error: stray ‘\303’ in program
5: error: stray ‘\266’ in program
5: error: stray ‘\303’ in program
5: error: stray ‘\244’ in program

germgerm 28.08.12 14:23

MinGW bringt die gleichen Meldungen.

slahn 28.08.12 15:20

Wenn man sich an den [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...] von ISO/IEC hält, dann sieht man unter "6.4.2 Identifiers", welche Zeichen erlaubt sind und welche nicht. Sollte es trotzdem funktionieren, dann hat das nichts damit zu tun dass es erlaubt ist, sondern nur dass sich der verwendete Compiler nicht an den Standard hält (bzw. an einen anderen).

Also nicht streiten, sondern Spezifikationen lesen ;)

Erik/Schreier 31.08.12 20:24

Interessant wie viele Hier an Internationalen Projekten beteiligt sind ... da kommt man sich als mikriger SPS und Mikroprozessor Programmierer ja richtig klein vor auch wenn man seit 15 Jahren Programmiert. Mal davon abgesehen dass man aus 15 Beiträgen die rein garnix mit Programmierung zu tun haben ableiten kann wieviel erfahrung man als Programmierer hat und "wie viele Haare man am Sack hat". Ka wies in der "Internetionalen Branche" aussieht mir auch egal, wenn ich n Programm schreib dann isses mir egal wie Portabel das Programm ist weil wenn jemand was dran machen muss ich das bin und dann zum Kunden fahr. Außerdem hab ich nie behauptet dass man die Konventionen ignorieren sollte sondern nur dass man sie wenn man sich nicht um Portabilität schert ignorieren "KANN". Er ist anfänger und da bringen ihm Programme die die Lösung auf sein Problem unnötig verkomplizieren nur weil man sein "Können" zeigen muss herzlich wenig.

NoKey 04.10.12 13:31

Ein Hallo an alle C++ Programmierer da draußen!

Ich habe da wieder ein Problem ( es ist mehr eine Frage )
Alle Infos seht ihr im ersten Post.


m9716 04.10.12 13:58

Also was dümmeres konnte dir jetzt echt nicht einfallen, als das Eingangsposting zu editieren?


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:58 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.