Wie kriegt man Berufserfahrung mit 15?

Hi. Also ich denke, was das Programmieren angeht, bin ich auf Fortgeschrittenen Niveau. Ich hab:

  • Einen HTTP-Server in Python programmiert (Nur mit Built-In Libraries, direkt mit Sockets. Und PHP ist auch implementiert, zumindest das meiste).
  • Meine eigene Wallpaper Engine in C# und Python geschrieben.
  • Viele Algorithmen auf EntwicklerHeld gemacht
  • Viele Landing Pages, Chat-Seiten, Foren und Mobile Apps Programmiert (Mobile Apps Backend immer mit PHP oder Python, Frontend mit HTML, CSS und JS)

Ich kenne und hab auch wissen, in den Folgenden Libraries (Python):

  • BeatifulSoup
  • Sockets
  • Threading/Multiprocessing
  • NumPy
  • pywin32 (Tiefe Kenntnisse in die WinAPI)
  • PyWebView
  • Tkinter
  • Pythonnet
  • PyAutoGUI
  • JSON
  • PIL
  • pystray
  • os/sys

Ich verstehe das HTTP-Protokoll und die REST-API, beide auch relativ gut. Ich hab Basic Wissen in C/C++ (beschäftige mich zurzeit damit aber noch), etwas Fortgeschrittenere Kenntnisse in C# und Fortgeschrittene Kenntnisse in HTML, CSS, JavaScript und Java. Java hab ich vor allem für die SpigotAPI oft verwendet. Auf GitHub hab ich lange nichts mehr hochgeladen, mein Syntax hat sich stark verändert. Aber paar Projekte hab ich dort trotzdem: https://github.com/Fidode07

Ich denke mein Wissen reicht, ob zumindest mal in ein paar Praktikums reinzuschnuppern. Also Geld verdienen, geht anscheinend nicht (Wegen meinem Alter .___.). Aber ich will wenigstens etwas Erfahrung sammeln. Ich weiß aber nicht, wo ich am besten Anfang soll zu suchen. Hat da jemand irgendwelche richtigen Tipps. Also nicht sowas wie "Ja, such dir halt Firmen in deiner Nähe". Das hilft nicht, ich will wissen WIE ich suche.

Am liebsten mach ich btw. Backend mit Python und C#. Danke im Vorraus und lg.

Arbeit, HTML, Webseite, Programmierer, Java, Jugendliche, JavaScript, Cplusplus, C Sharp, developer, Jungs, Programmiersprache, Python
C++: Wie kann ich eine Abfrage für die Wiederholung meines Programms einbauen?

Ich habe einen C++-Programmcode geschrieben, welcher zwei Zahlen addiert oder subtrahiert.

Nach der Ausgabe habe ich eine Abfrage eingebaut, welche abfragt, ob man noch eine weitere Addition/Subtraktion durchführen oder das Programm beenden möchte.

Leider funktioniert das nicht, obwohl es dies eigentlich tun sollte.

Ich komme nicht mehr weiter. Vielleicht kann jemand von euch mir helfen.

Hier der C++-Code:

#include <iostream>

using namespace std;

int entscheidung() {
  cout << "Hallo" << endl;
  cout << "1 zum addieren zweier Zahlen" << endl;
  cout << "2 zum subtrahieren zweier Zahlen" << endl;
  cout << "" << endl;

  int a;
  cin >> a;
  cout << "" << endl;
  cout << "" << endl;

  return a;
}

int rechner(int a) {
  if (a == 1) {
    cout << "Eingabe zweier Zahlen" << endl;
    cout << "Diese werden addiert" << endl;
    cout << "" << endl;

    int zahl1, zahl2;
    cin >> zahl1;
    cin >> zahl2;

    int zwischenergebnis = zahl1 + zahl2;
    cout << "" << endl;
    cout << zahl1 << " + " << zahl2 << " = ";

    return zwischenergebnis;
  }
  else if (a == 2) {
    cout << "Eingabe zweier Zahlen" << endl;
    cout << "Diese werden addiert" << endl;
    cout << "" << endl;

    int zahl1, zahl2;
    cin >> zahl1;
    cin >> zahl2;

    int zwischenergebnis2 = zahl1 - zahl2;
    cout << "" << endl;
    cout << zahl1 << " - " << zahl2 << " = ";

    return zwischenergebnis2;
  }
  else {
    cout << "---FEHLER---" << endl;
  }
}

int main() {
  int zahl = entscheidung();
  int a = rechner(zahl);
  cout << a << endl;
  cout << "" << endl;
  cout << "Moechten Sie weiter machen?" << endl;
  cout << "Geben Sie die Zahl 1 ein zum --FORTSETZEN-- !" << endl;
  cout << "Gebens Sie die Zahl 0 ein zum --STOPPEN--  !" << endl;

  int b;
  cin >> b;

  if (b == 1) {
    cout << "" << endl;
    return entscheidung();
  }
  else {
    cout << "ENDE" << endl;
    return 0;
  }
}
Cplusplus, CPP, Programmiersprache
Wie löse ich einen bison reduce/reduce Konflikt?

In einer anderen Frage dachte ich mir, dass es schöner wäre (alle anderen nicht...😋), wenn das Vorzeichen zur Zahl gehören würde, so dass das Potenzieren nicht das Vorzeichen abbindet... Da wollte ich mal sehen, ob man nicht einen Parser bauen kann, der es wie folgt versteht:Das läuft auch ganz gut, allerdings gibt es massenhaft sogenannte reduce/reduce Konflikte... Die bison Anleitung sagt zwar, dass diese Konflikte in meinem Sinne gelöst werden (die Regel, die zuerst kommt, die kriegt den Zuschlag), aber: Wie krieg ich die warning trotzdem weg?

Das da ist mein yy-file (auszugsweise):

exp:
   "-" "num"            { std::cout << "NUMinv" << $2 << std::endl; }
|  "num"                { $$ = new Float($1); std::cout << "num" << $1 << std::endl; }
|  "-" exp              { std::cout << "inv" << $2 << std::endl; }
|  exp "^" exp          { std::cout << '^' << std::endl; }
|  "name"               { std::cout << "var read:" << $1 << std::endl; };

bison sagt dann:

> bison -o viz-yy.c viz.yy -Wcounterexamples
viz.yy: warning: 10 reduce/reduce conflicts [-Wconflicts-rr]
viz.yy: warning: reduce/reduce conflict on tokens "+", "-", "*", "/", "^", ")", "]", "}", ",", ";" [-Wcounterexamples]
  Example: "-" "num" •
  First reduce derivation
    exp
    ↳ 5: "-" "num" •
  Second reduce derivation
    exp
    ↳ 8: "-" exp
             ↳ 6: "num" •
Cplusplus, FLEX, Programmiersprache, Syntax, Bison
Wie soll ich das denn jetzt Handeln?

Hallo. Ich hoffe die Programmiererschaft ist aus ihrem kleinem Schläfchen erwacht und kann mir hier etwas weiterhelfen. Ich mache (immernoch) eine Coding-Challenge. Dachte sie ist Lustig, langsam wird sie Sinnlos .__.

Erstmal die zurzeitige Stage:

An sich wurde alles gesagt. Das Problem mit den max. 10 Packages hab ich bereits gelöst. Nun bin ich aber bei der byte abfrage ... Die ist dann schon Lustiger. Hier mal meine add Funktion.

void add(Package package) {
  // Check if package already in map.
  std::list < std::string > info_list({
    package.name,
    std::to_string(package.versionMajor),
    std::to_string(package.versionMinor)
  });
  if (saved_packages.count(info_list)) {
    return;
  }
  uint32_t used_size = 0;
  for (it_helper = saved_packages.begin(); it_helper != saved_packages.end(); it_helper++) {
    used_size += it_helper -> second.size;
  }
  // INFO: saved_packages.size() starts (idk why) by 2. So 12 means 10 packages.
  if (saved_packages.size() >= 12 && used_size >= 100) {
    throw std::exception();
  }
  saved_packages.insert(std::pair < std::list < std::string > , Package > (info_list, package));
}

Simpel ... Naja. Also das && falsch ist, dass weiß ich. Wollte es nur damit mal ausprobieren. Also bei "&&" kommt folgendes raus:
"The add method threw no exception despite exceeding the limit of 10 packages." und es macht Sinn. Schließlich war das Maximum erreicht, die bytes aber noch frei. Dennoch sollte man es ja nicht zulassen. Wenn ich jetzt aber || mache:

"The add method threw an exception before reaching the limit of 100 bytes." was auch Sinn macht. Denn die 10 Packete wurden vermutlich gesendet, bevor die 100 Bytes erreicht waren. Nun ... Was jetzt? Ich hab tatsächlich keine einzige Idee gerade, währe dankbar für bisschen Hilfe. Danke im Vorraus und lg.

Bild zu Frage
PC, Computer, Internet, Software, Technik, Programmierer, programmieren, Cplusplus, CPP, Programmiersprache, Softwareentwicklung, Visual Studio, Challenge
C++: invalid use of non-static data member ...?

Hallo, ich habe in C++ einen Header für ein Projekt geschrieben aber ich kann innerhalb einer Klasse nicht auf eine Variable zugreifen.

Es kommt immer der Fehler:

..\ast.cpp:61:19: error: invalid use of non-static data member 'Tree::nodes'
 p.set_type(Tree::nodes[id].get_type());

Hier ist der Code:

ast.h:

#ifndef AST_H_
#define AST_H_

class Tree {
public:
    class Node {
    public:
        enum class Type {
            METHOD,
            IF,
            WHILE,
            STATEMENT,
            EXPRESSION
        };

        void set_id(int id);
        void set_id_parent(int id_parent);
        void set_content(const char* content);
        void set_type(Type type);

        Type get_type();
        const char* get_content();
        int get_id();
        int get_parent_id();
        int* get_child_ids();

    private:
        Type m_type{};
        const char* m_content{};
        int  m_id=0;
        int  m_id_parent=-1;
        int* m_child_ids{};
    };

    void create_node(int parent, const char* content);

    Node get_node(int id);

private:
    Node* nodes{};
    int node_amount=0;
};

#endif

ast.cpp:

#include "ast.h"

void Tree::Node::set_id(int id) {
    m_id = id;
}

void Tree::Node::set_id_parent(int id_parent) {
    m_id_parent = id_parent;
}

void Tree::Node::set_content(const char *content) {
    m_content = content;
}

void Tree::Node::set_type(Type type) {
    m_type = type;
}

const char* Tree::Node::get_content() {
    return m_content;
}

Tree::Node::Type Tree::Node::get_type() {
    return m_type;
}

int Tree::Node::get_id() {
    return m_id;
}

int Tree::Node::get_parent_id() {
    return m_id_parent;
}

int* Tree::Node::get_child_ids() {
    return m_child_ids;
}

//

void Tree::create_node(int parent, const char *content) {
    Node p;
    p.set_id(node_amount);
    p.set_id_parent(parent);
    p.set_content(content);
    nodes[node_amount] = p;
    node_amount++;
}

Tree::Node get_node(int id) {
    Tree::Node p;
    p.set_type(Tree::nodes[id].get_type());
    return p;
}

Ich hoffe jemand kann mir sagen warum dieser Fehler kommt

Außerdem wollte ich etwas C benutzen und lernen, also hätte ich noch eine zweite Frage: Kann mir jemand sagen wie ich das ganze nicht in C++ sondern in C mache?

LG

PC, Computer, Software, programmieren, Cplusplus, CPP, development, Informatik, Softwareentwicklung, C (Programmiersprache), cpp lernen, Cpp Programierung
C++: multiple definition...?

Hallo, ich habe in C++ einen Header erstellt, aber bei der Complierung kommt immer diese Fehlermeldung:

C:\Users\Admin\AppData\Local\Temp\ccdaLGOT.o:lexer.cpp:(.text+0x111): undefined reference to `Token::content[abi:cxx11]() const'
...(Zu lang zum abschicken)
collect2.exe: error: ld returned 1 exit status

Kann mir jemand sagen was der Fehler ist und wie ich ihn behebe?

token.hpp:

#ifndef TOKEN_HPP_
#define TOKEN_HPP_

#include <string>

class Token {
public:
    enum class Type {
        STRING,
        NUMBER,
        BOOLEAN,
        IDENTIFIER,
        EQUAL,
        PLUS,
        MINUS,
        TIMES,
        DIVIDE,
        LESS_THAN,
        GREATER_THAN,
        COMMENT,
        DOT,
        COMMA,
        SEMICOLON,
        CURLY_BRACKET_RIGHT,
        CURLY_BRACKET_LEFT,
        APOSTROPHE,
        COLON,
        UNEXPECTED
    };

    Token                (Type type)              noexcept;

    Type type            ()                       const noexcept;

    bool is                (Type type)               const noexcept;

    bool is_not            (Type type)               const noexcept;

    std::string content ()                       const noexcept;

    void change_content (std::string content)  const noexcept;

    void add_to_content (std::string content)  const noexcept;

    void clear_content  ()                       const noexcept;

    void change_type    (Type type)            const noexcept;

private:
    Type m_type;
    std::string m_content;
};

#endif

token.cpp:

#include "token.hpp"

#include <string>

Token::Token(Type type) noexcept : m_type{type} {};

Token::Type Token::type() const noexcept {
    return m_type;
}

bool Token::is(Type type) const noexcept {
    return m_type == type;
}

bool Token::is_not(Type type) const noexcept {
    return m_type != type;
}

std::string Token::content() const noexcept {
    return m_content;
}

void Token::change_content(std::string content) const noexcept {
    m_content = content;
}

void Token::add_to_content(std::string content) const noexcept {
    m_content = m_content + content;
}

void Token::clear_content() const noexcept {
    m_content.clear(); //Die clear Funktion geht auch nicht
}

void Token::change_type(Type type) const noexcept {
    m_type = type;
}

Ich hoffe jemand kann mir dabei helfen!

LG

PC, Computer, Software, programmieren, compiler, Cplusplus, CPP, development, Informatik, Informatiker, Programmiersprache, C (Programmiersprache), Cpp Programierung
(Neo)Vim Coc-extension wirft einen Fehler?

Guten Abend miteinander,

ich wollte fragen, ob hier vielleicht jemand (Neo)Vim mit der Coc-extension nutzt und mir bei einem Problem helfen kann?

Und zwar wollte ich einen language server hinzufügen, damit ich autocompletion für C++ nutzen kann. Ich habe also meine coc-settings.json erzeugt und geöffnet, sie war (logischerweise) komplett leer und ich habe sie auch am richtigen Speicherort erstellt, denn sie lässt sich aus Vim heraus mit :CocConfig öffnen.

Nun bin ich der Anleitung gefolgt,

:CocConfig, which will open main config file ~/.config/nvim/coc-settings.json
(empty for new installation). Add empty JSON object (like
{})

In die geschweiften Klammern habe ich nun den ccls language server eingefügt

https://github.com/neoclide/coc.nvim/wiki/Language-servers#ccobjective-c

Leider meldet sich beim öffnen von nvim jedoch immer eine Fehlermeldung und zwar:

Error detected while processing /home/xyz/.config/nvim/coc-settings.json:                                                                                                   
line   1:                                                                                                                                   E492: Not an editor command: { line  10:                                                                                                                                  E492: Not an editor command:        }   line  11:                                                                                                                                  E492: Not an editor command:      }

... und noch ein paar gleiche Zeilen mehr, kurzum er hat was gegen die geschweiften Klammern bzw das .json Format?

Ich weiß leider nicht was ich falsch gemacht habe und wie ich es löse, kann mir jemand helfen?

Ich freue mich über jede Antwort!

Computer, Technik, Linux, programmieren, Cplusplus, Shell
Was ist der Sinn hinter dem Überladen von Operatoren in C++ und wie funktioniert das genau?

Hi, wir haben uns gerade in der Vorlesung mit diesem Thema beschäftigt, ich habe aber nicht wirklich verstanden wie das funktioniert und wozu das ganze gut sein soll...

War leider auf Englisch, aber unser Prof hatte irgendwie was davon erzählt, dass das Überladen von Operatoren nützlich ist wenn man zb Plusrechnen mit dem + Operator nicht nur auf Zahlen beziehen möchte.

Man könnte ja auch irgendwie Objekte zusammenzählen, die man in irgendwelchen Klassen definiert hat.

Ich verstehe das irgendwie nur zur Hälfte, macht es Sinn sich das so vorzustellen, dass c++ Vektoren normal nicht über den + Operator addieren kann, und ich den Operator dann "überlade" und ihm damit die nötige zusätzliche Funktion dafür gebe und er danach zb auch Vektoren die ich über eine Klasse oder ein Struct definiert habe zusammenrechnen kann ?

Und ich frage mich etwas wie die überladung dann genau funktioniert, irgendwie unterscheiden sich diese dann ja weil es ja unäre und äre operatoren gibt, also welche die sich nur auf ein oder zwei Objekte beziehen...

Wäre nett wenn mir jemand weiterhelfen könnte.

Das hier ist zb eine Überladung des + Operators die ich nicht verstehe, was bezwecke ich damit ? Dass ich 2 Objekte des Typs RationalNumber die ich davor in einer Klasse definiert habe addieren kann ?

Bild zu Frage
Computer, Schule, programmieren, Cplusplus
Mein C++ Qt creator Programm stürzt bei eingaben von umlauten in ein Textfeld ab wie kann ich das verhindern?

Hallo in meinem Programm soll man wenn man einen text eingibt bestimmte dinge analysieren können(Zahl der Buchstaben, Zahl der Vokal ,...) ? allerdings stürzt das Programm ab, sobald man Umlaute eingibt

Mein bisheriger code aus mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    ui->pushButton->hide();
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_btnBuchstaben_clicked()
{
    DeleteLetter();
    CountLetter();
    ShowLetter();

}

void MainWindow::DeleteLetter()
{
    for (int i=0;i<256;i++)
        Buchstaben[i]=0;
}

void MainWindow::ShowLetter()
{
    QString work="";
    QString einzel;
    QString zahl;
    ui->AnalyseWidget->clear();
    ui->AnalyseWidget->addItem("Auswertung");
    for (int i=0;i<256;i++){
        einzel ="  _____ ";
        if (i>=32)
            einzel[0]=char(i);
        else {
            if (i<10){
                einzel[0]='0';
                einzel[1]='0'+i;
            }
            else if (i< 20) {
                einzel[0]='1';
                einzel[1]='0'+i-10;
            }
            else if (i<30) {
                einzel[0]='2';
                einzel[1]='0'+i-20;

            }
            else {
                einzel[0]='3';
                einzel[1]='0'+i-30;
            }
        }
        zahl = QString::number(Buchstaben[i]);
        for (int j = zahl.length()-1;j>=0;j--)
            einzel[7-zahl.length()+j]=zahl[j];
        work = work + einzel;
        if ((i+1)%8==0)
        {
            ui->AnalyseWidget->addItem(work);
            work="";
        }
    }

}

void MainWindow::CountLetter()
{
    QString Area = ui -> EingabeEdit -> toPlainText();
    for(int i = 0; i < Area.length();i++)
        Buchstaben[Area[i].toLatin1()]++;
}

void MainWindow::on_btnWoerter_clicked()
{
    CountWords();
}

void MainWindow::CountWords()
{
    QString Area;
    Area = ui -> EingabeEdit -> toPlainText();
    int i = 0, w = 0;
    bool Word = false;
    while (i < Area.length())
    {
        if (Area[i] == ' ' && Word)
        {
            Word = false;
            w++;
        }
        if (Area[i] == ' ' && !Word)
        {

        }
        if (Area[i] != ' ' && Word)
        {

        }
        if (Area[i] != ' ' && !Word)
        {
            Word = true;
        }
        i++;
    }
    if (Word == true)
    {
        w++;
    }
    QString o = QString::number(w);
    QString output = "Der Text hat " + o + " Wörter";
    ui -> AnalyseWidget -> clear();
    ui -> AnalyseWidget -> addItem(output);

}

//Vokale - aus vorhandenem Array rausholen
//Zahlen nachschauen und ausgeben



Computer, Technik, programmieren, Cplusplus, Qt Creator

Meistgelesene Fragen zum Thema Cplusplus