Für C5 würde ich diese Formel benutzen:

=XVERWEIS(B5:B14;B18:B26;C18:C26;0;-1)

Also "Vergleiche die Zahlen in B5:B14 mit den Zahlen in B18:B26 und gib als Ergebnis die jeweilige Zahl aus C18:C26 zurück. Wenn es keine Übereinstimmung gibt, gib eine 0 zurück. Wenn es keine exakte Übereinstimmung gibt, gib das Ergebnis vom nächst kleineren Wert zurück"

Die Formel kannst du für E, G und I genau so ausfüllen, nur dass du bei E und I ganz hinten statt -1 eine 1 reinschreiben muss, damit da eben das Ergebnis von der nächst höheren Zeit zurückgegeben wird.

Bei Gesamt rechnest du einfach die Punkte aus C, E, G und I zusammen:

=C5#+E5#+G5#+I5#

Für den Rang gibt es eine vordefinierte Funktion in Excel:

=RANG.GLEICH(J5#;J5#)

(Wenn zwei Leute die gleichen Gesamtpunkte haben, landen sie auf dem gleichen Rang)

Für den Preis steht nicht dabei, was die Teilnehmer kriegen. Ich hab jetzt einfach mal Bronze, Silber und Gold für die besten drei Teilnehmer gemacht:

=ERSTERWERT(K5#;1;"Gold";2;"Silber";3;"Bronze";"")
...zur Antwort

Willst du Spalten und Zeilen vertauschen?

Aus dem    wird das
  A B C      A B C
1 d e r    1 d d d
2 d i e    2 e i a
3 d a s    3 r e s

Das nennt sich "transponieren". Das geht entweder, indem du die ganze Tabelle kopierst und dann im Zielbereich rechtsklick und Einfügeoptionen > Transponieren klickst, oder in den neueren Excel-Versionen mit der Funktion MTRANS()

Oder willst du mehrere Spalten zu einer zusammenfassen

Aus dem    wird das   oder das
  A B C      A          A
1 d e r    1 d        1 d
2 d i e    2 e        2 d
3 d a s    3 r        3 d
           4 d        4 e
           5 i        5 i
           6 e        6 a
           7 d        7 r
           8 a        8 e
           9 s        9 s

Dafür gibt es jetzt in der neuesten Version von Excel 365 die Funktion ZUSPALTE().

Die erste Version kommt in dem Beispiel mit =ZUSPALTE(A1:C3) raus und die zweite Version wäre =ZUSPALTE(A1:C3;;WAHR)

Falls du eine ältere Excel-Version hast, ist die einfachste Lösung wahrscheinlich, mit der INDEX-Funktion zu arbeiten. Also zwei Spalten füllen mit Zeilen- und Spaltennummern und die dann in der INDEX-Funktion benutzen, um die Daten aus dem Quellbereich zu kopieren.

...zur Antwort

Wenn deine Sucht mit einer Spielekonsole begann, dann gehört die natürlich auch noch dazu. Also Super Nintendo oder Gameboy (oder die Super Gameboy Karte im Super Nintendo)

Und die Discmans mit ihren 10 Sekunden Anti-Shock (bzw. wenn sie MP3 abspielen konnten, mit zu einer Minute Anti-Shock), CDs brennen mit Liedern, die man sich vorher stundenlang über Napster runtergeladen (mit seinem 56k-Modem, was die Telefonleitung blockiert hat)

...zur Antwort

Keine Formel, sondern ein Button. Im Menü "Daten" gibt es den Button "Text in Spalten". Da wählst du dann die Option "Getrennt" und auf der nächsten Seite als Trennzeichen das "-", dann klickst du auf fertig stellen und die Daten werden in zwei Spalten geschrieben.

Alternativ kannst du es aber natürlich auch mit einer Formel machen:

=TEXTTEILEN(A1; " - ")
...zur Antwort

Das ursprüngliche Ziel von Brainfuck war es glaub ich, eine Turing-vollständige Sprache mit dem kleinstmöglichen Interpreter zu entwickeln. Allerdings braucht man schon ein bisschen Hirnschmalz, um mit der Programmiersprache halbwegs sinnvolle Programme zu basteln. So Sachen, wie If-Else sind in Brainfuck schon herausfordernd. Insbesondere, wenn man die jeweilige Variable nicht auf 0 setzen will, um wieder aus dem If rauszukommen. Oder Arrays macht man in Brainfuck ganz anders, als in "normalen" Programmiersprachen.

Es gibt auch noch ein paar andere "esoterische" Programmiersprachen. Z.B. Brain-Flak fand ich ganz witzig oder auch Mornington Crescent.

...zur Antwort

Mein erstes Programm war wahrscheinlich irgendwas in Amiga Basic, was ich aus einem Buch abgeschrieben hab. Ist schon zu lange her, um es genau sagen zu können, aber es war ziemlich wahrscheinlich irgendwas in Richtung print "Ich bin daCypher"

...zur Antwort

Die Formel "=C2<>D2" funktioniert bei mir so, wie sie soll. Wenn du dann bei "Wird angewendet auf" den ganzen Bereich von Spalte D auswählst, für den die Formatierung gelten soll, wird die Formel für die Formatierung so ausgefüllt, dass es passt.

...zur Antwort

Also "monoalphabetische Verschlüsselung" heißt einfach, dass jedem Buchstaben aus dem Alphabet ein Buchstabe zugewiesen wird, mit dem er verschlüsselt wird. Eine beispielhafte Verschlüsselung hat Suiram1 ja schon genannt.

Wenn du einen Schlüsselsatz hast, werden die Buchstaben aus dem Geheimalphabet halt mit den Buchstaben aus dem Schlüsselsatz aufgefüllt (jeder Buchstabe darf nur einmal benutzt werden) und am Ende alle übrigen Buchstaben angehängt.

Klartext-Alphabet: ABCDEFGHIJKLMNOPQRSTUVWXYZ
  Geheim-Alphabet: HEUTISNCORAGBDFJKLMPQVWXYZ

Wenn du jetzt z.B. die Nachricht "DIES IST MEINE GEHEIME NACHRICHT" verschlüsseln willst, schaust du für jeden Buchstaben, welcher Buchstabe aus dem Geheim-Alphabet ihm zugordnet ist. Also:

"TOIM OMP BIODI NICIOBI DHUCLOUCP"

...zur Antwort
Räder

Wenn Zahnräder auch als Räder zählen, dann müsste eigentlich alles, was in irgendeiner Weise radförmig ist, als Rad zählen (inklusive CDs und Münzen). Davon gibt es sicherlich deutlich mehr, als Türen (auch wenn man die Türen von Adventskalendern mitzählt).

Bei "klassischen" Türen und Rädern (Türen = alles, was zwei Bereiche voneinander abtrennt, die von Lebewesen oder Fahrzeugen betreten/befahren werden können (inkl. Katzenklappen und Hofeingangstoren) und Räder = Räder, auf denen sich Fahrzeuge fortbewegen), schätze ich mal, dass es trotzdem mehr Räder gibt, weil jedes Matchboxauto und jedes Lego-Auto mindestens vier Räder hat.

...zur Antwort

Sieht für mich aus, wie ein Henkersknoten, nur eben mit nur drei Wicklungen und dass man ihn nicht am Ende der Schnur macht, sondern irgendwo in der Mitte.

...zur Antwort

Nö. Du spielst es im Prinzip, wie ein Keyboard, nur das du eben gleichzeitig reinpustest. Wenn du Bücher dazu suchst, kannst du mal nach "Melodica" suchen. Das ist quasi die professionellere Variante von dem Instrument.

...zur Antwort

Wenn du irgendwo Webspace gemietet hast, kriegst du normalerweise auch Zugangsdaten zu einem FTP-Server. Da lädst du deine Dateien einfach hoch und fertig. Das Wordpress müsste auch auf dem FTP-Server sichtbar sein. Das kannst du aber löschen, wenn du es nicht brauchst.

...zur Antwort

Das in den Klammern sind die Funktionsargumente, also du kannst der Funktion in den Klammern noch irgendwelche Werte bzw. Variablen mitgeben, die sie brauchen, um ausgeführt werden zu können.

Dieses xPos ist ein frei wählbarer Name. Du könntest stattdessen z.B. auch elementNr oder so schreiben. Aus der Aufgabenstellung geht hervor, dass du einen Rucksack programmieren sollst und Methoden bauen sollst, mit denen man schauen kann, was im Rucksack drin ist, bzw. Elemente ändern kann. Wenn du z.B. printFuellung(5) ausführst, soll der fünfte Gegenstand im Rucksack in der Konsole aufgeschrieben werden.

Also z.B.:

public void printFuellung(int xPos) {
    System.out.println(fuellung[xPos]);
}
...zur Antwort
Rechnungsproblem C# -> Python Verknüpfung?

Hallo,

ich habe folgendes Problem:

Ich habe ein ERP-Programm in C# geschrieben. Dieses funktioniert auch einwandfrei. In der Auftragsverwaltungsübersicht habe ich zwei Buttons hinzugefügt: Einmal Rechnung erstellen und einmal Angebot erstellen.

Wenn ich den Knopf Rechnung erstellen klicke, wird ein Python-Code aufgerufen, welcher die Rechnung mit den Daten automatisch erstellt.

Er zeigt immer an, Rechnung erfolgreich erstellt, allerdings erstellt er keine Rechnung bzw. er speichert keine Rechnung ab. Woran könnte das Problem denn liegen?

Hier die Methode, welche aufgerufen wird, wenn ich auf Rechnung erstellen klicke:

private void CreateInvoice(DataGridViewRow row)
{
  try
  {
    var invoiceData = new
    {
      provider_name = "Media Soft",
      provider_address = "Bahnhofstraße 40, 66639 Beispiel",
      provider_mobile = "0174 | 623 655 9",
      provider_email = "klasenjulian@web.de",
      customer_name = $"{row.Cells["Vorname"].Value} {row.Cells["Nachname"].Value}",
      customer_address_line1 = $"{row.Cells["Adresse"].Value}",
      customer_address_line2 = $"{row.Cells["PLZ"].Value} {row.Cells["Ort"].Value}",
      customer_mobile = "",
      date = DateTime.Now.ToString("dd.MM.yyyy"),
      invoice_number = row.Cells["AuftragID"].Value.ToString(),
      customer_number = "Ihre Kundennummer",
      items = new[] {
        new {
          title = row.Cells["Artikelname"].Value.ToString(),
          description = "",
          price = Convert.ToDouble(row.Cells["Einzelpreis"].Value),
          total = Convert.ToDouble(row.Cells["Gesamtpreis"].Value)
        }
      },
      total = Convert.ToDouble(row.Cells["Gesamtpreis"].Value)
    };

    string json = JsonConvert.SerializeObject(invoiceData);
    File.WriteAllText(@"C:\Projekte\rechnung\invoice_data.json", json);

    ProcessStartInfo start = new ProcessStartInfo();
    start.FileName = "python.exe";
    start.Arguments = string.Format("{0} {1}", @"C:\Projekte\rechnung\rechnung.py", @"C:\Projekte\rechnung\invoice_data.json");
    start.UseShellExecute = false;
    start.RedirectStandardOutput = true;
    start.RedirectStandardError = true;

    using (Process process = Process.Start(start))
    {
      using (StreamReader reader = process.StandardOutput)
      {
        string stderr = process.StandardError.ReadToEnd();
        string result = reader.ReadToEnd();

        if (string.IsNullOrEmpty(stderr))
        {
          MessageBox.Show("Rechnung erfolgreich erstellt!");
        }
        else
        {
          MessageBox.Show("Fehler beim Erstellen der Rechnung:\n" + stderr);
        }
      }
    }
  }
  catch (Exception ex)
  {
    MessageBox.Show("Fehler beim Erstellung der Rechung: " + ex.Message);
  }
}

Hier der Python-Code:

  • Rechnung - Pastebin.com

Hier die Python-Daten:

  • Daten zur Projektmappe
  • Name: rechnung
  • Pfad: C:\Projekte\rechnung\rechnung.sln
  • Startprojekt: rechnung

Daten zur Projekteigenschaft:

Allgemein:

  • Arbeitsverzeichnis: .
  • Startdatei: C:\Projekte\rechnung\rechnung.py

Sonstiges:

  • Projektdatei: rechnung.pyproj
  • Projektordner: C:\Projekte\rechnung
  • Projektstartseite: C:\Projekte\rechnung
...zur Frage

So auf den ersten Blick ignoriert das Python Script einfach die Argumente, die du beim Aufruf aus dem C# Programm übergibst und erstellt die pdf mit den Daten, die fest in invoice_data im Python Script stehen. Dadurch erstellt es immer nur dieselbe pdf und es sieht aus, als würde nichts passieren.

Wenn die json-Datei immer in C:\Projekte\rechnung\invoice_data.json liegt, brauchst du die Argumente aus der Kommandozeile nicht unbedingt auslesen, aber irgendwo müsstest du halt die json einlesen, damit du daraus die Rechnungsdaten erzeugen kannst.

...zur Antwort

Kommt drauf an, ob du - wie die anderen Antworter hier - eine Virtuosin bist, die eine klangliche Perfektion bis ins kleinste Detail erwartet, oder ob du - wie die meisten anderen - einfach nur einen fetten Sound im Auto haben willst, um Spaß zu haben.

Ich hatte damals einfach eine Crunch Blackmaxx MXB 1000 Endstufe und eine Crunch XFAT 500 Bassbox im Auto. Hat zusammen mit Kabeln und Sicherung unter 500€ gekostet und hatte so viel Dampf, dass fast das hintere Nummernschild abgefallen ist.

Der Knackpunkt heutzutage ist hauptsächlich, dass man nicht mehr einfach das vorhandene Radio ausbauen und durch ein besseres ersetzen kann, weil die Autos alle ein fest integriertes Mediasystem haben. Damals konnte ich halt ein Radio einbauen, was einen eigenen Ausgang für Subwoofer über Cinch-Kabel hatte, wo man dann auch einstellen konnte, welchen Frequenzbereich der Subwoofer kriegen soll und welchen Frequenzbereich die anderen Lautsprecher kriegen sollen, damit die halt nicht knarzen.

Für den Bass ist das normalerweise kein Problem, weil die Endstufe auch mit Hochpegel-Signalen arbeiten kann (also aus dem normalen Lautsprechersignal abgezweigt) und auch einen Tiefpassfilter eingebaut hat, damit der Subwoofer nur die tiefen Frequenzen kriegt, aber die normalen Autolautsprecher knarzen oft irgendwann, wenn man zu laut aufdreht.

Es gibt Frequenzweichen, die man einbauen kann, damit die originalen Lautsprecher nur die höheren Töne kriegen, aber da kann ich dir leider keinen Tipp geben, welche gut sind, weil ich sie damals halt nicht gebraucht hab.

...zur Antwort

Dieses "↔" ist anscheinend ein XNOR, oder? Ich frag nur, weil ich dafür eigentlich ein anderes Symbol kenne.

Das Distributivgesetz wird leider immer nur mit einzelnen Variablen erklärt, aber nicht mit Termen, die selbst schon eine Konjunktion oder Disjunktion sind.

Bei deinem aufgelösten Term hast du in der letzten Klammer a und b vertauscht. Es muss natürlich so sein:



Um hier die zweite Klammer mit dem Distributivgesetz aufzulösen, muss man kreuzweise jeden Teil, der in der ersten Klammer mit UND verknüpft ist, mit jedem Teil konjugieren, der in der hinteren Klammer mit UND verknüpft ist (ich kann es leider nicht besser erklären, daher hier der Term danach:



Da kann man jetzt erstmal die Inhalte der zweiten Klammer (Idempotenzgesetz) und der vierten Klammer (Komplementärgesetz) kürzen:



Die hinterste Klammer davon kann man durch das Neutralitätsgesetz weglassen.



Jetzt ist die zweite Klammer ein Teil der ersten Klammer, das heißt, man kann die nach dem Absorbtionsgesetz zusammenführen:



Und schon hast du die KNF (nur umgedreht, aber die Reihenfolge ist ja nach dem Kommutativgesetz egal)

...zur Antwort

Am einfachsten lässt sich das wahrscheinlich anhand eines Prozessors erklären, der einen relativ kleinen Befehlssatz hat.

Ich nehme als Beispiel mal den MOS 6510 Prozessor, der z.B. im C64 benutzt wurde. Bei dem ist jeder Opcode genau ein Byte groß (je nach Adressierungsart gehören aber oft noch die nächsten 1-2 Bytes zum Befehl dazu)

Schau dir mal die Tabelle auf dieser Seite an: https://www.c64-wiki.de/wiki/Opcode

Da ist beschrieben, welche Befehle der Prozessor unterstützt. Manche Befehle unterstützen auch mehrere unterschiedliche Adressierungsarten (z.B. ADC (add with carry) unterstützt 8 verschiedene Adressierungsarten (z.B. immediate, also z.B. "addiere die Zahl 100" oder absolute, also z.B. "addiere die Zahl aus der Speicheradresse 100"). Jede Kombination aus Befehl und Adressierungsart hat einen eigenen Opcode. Das ist der eigentliche Maschinensprache-Befehl, den der Prozessor ausführt. Z.B. ADC immediate hat den Opcode 69(hex) bzw. 0110 1001 binär.

Die ganze Tabelle ist der Befehlssatz des Prozessors. Also die Kombination aus allen Befehlen und den Adressierungsarten, die der Prozessor unterstützt. Offiziell zählen nur die "legalen Opcodes" (also die blauen) zum Befehlssatz des Prozessors. Die "illegalen Opcodes" sind vom Hersteller nicht definiert und können halt zu unerwartetem Verhalten führen.

Bei modernen Prozessoren ist der Befehlssatz viel umfangreicher und die Opcodes haben oft sogar eine variable Länge, aber das Prinzip ist immer noch das Gleiche. Also der Befehlssatz ist einfach die Sammlung an Befehlen und Adressierungsarten, die der Prozessor kennt.

...zur Antwort

Falls die Beispieltabelle bei A1 anfängt, geht es so:

=MAX(NACHSPALTE(FILTER(C2:E7;(A2:A7="Beispiel1")*(B2:B7="A"));LAMBDA(s;SUMME(s))))

Statt "Beispiel1" und "A" kannst du natürlich auch einen festen Bezug zu einer Zelle reinmachen, in die du die Bedingungen schreibst (mit $-Zeichen, also z.B. $G$1)

Zur Erklärung:

mit FILTER(C2:E7;(A2:A7="Beispiel1")*(B2:B7="A")) wird erstmal der ganze Bereich gefiltert, auf den die Bedingungen zutreffen. Da kommt also eine Matrix mit zwei Zeilen und drei Spalten raus.

Wenn wir diese Matrix jetzt an die Summe-Funktion weitergeben würden, würden wir die Summe von allen Zellen im Filter kriegen, also in diesem Fall 19. Wir brauchen aber die Summe pro Spalte, damit wir davon das Maximum finden können.

Also übergeben wir die Matrix an die NACHSPALTE-Funktion, die pro Spalte eine Funktion ausführt. Als zweites Argument muss man in diesem Fall eine Funktion übergeben. Das geht mit LAMBDA. Der Teil LAMBDA(s;SUMME(s)) bedeutet, dass als Parameter ein Wert erwartet wird, der durch die Variable "s" bereitgestellt wird (in unserem Fall ist das die Spalte) und mit SUMME(s) kann man halt die Summe aus der Spalte bilden. Insgesamt kommt wieder eine Matrix mit einer Zeile und drei Spalten raus, wo jeweils die Summen der Werte drinstehen.

Das braucht man dann nur noch an MAX übergeben und schon kriegt man den höchsten Wert raus.

...zur Antwort

Ich verstehe die Frage nicht wirklich. Was meinst du mit "zur Vereinfachung gezogen"? Das blaue Kästchen in den oberen Ecken kannst du auch nochmal vertikal überlaufen lassen, so dass die unteren beiden Ecken auch mit in dem Kästchen sind und die Formel dann A + /B + /C/D + CD ist.

...zur Antwort

Joa, wenn die Maschine nur Münzen annimmt, wäre "Geld einwerfen" besser. Wenn sie aber auch Scheine annimmt, würde mir selbst kein sinnvollerer Satz einfallen.

Die meisten komischen Übersetzungen vergisst man wahrscheinlich schnell wieder. Was mir grade einfällt ist ein Aufkleber auf dem alten Motorrad meines Vaters wo draufsteht "Vor Gebrauch bitte vorsichtig die Anleitung lesen" als Übersetzung von "Please read the manual carefully before use".

...zur Antwort