Array – die neusten Beiträge

Ist dieses Struktogramm passend für mein Merge-Sort Code?

Ist das folgende Struktogramm, welches ich erstellt habe, passend zu meinem Java Merge-Sort Code oder muss ich noch was nachbessern?

Code:

import java.util.Arrays;
import java.util.Random;

public class MergeSortWithMetrics {
  // Zähler für Sortierschritte
  static long comparisons = 0;
  static long assignments = 0;

  public static void main(String[] args) {
    // Konfiguration: Array-Größe und Zahlbereich
    int arraySize = 10000; // Größe des Arrays
    int numberRange = 214748647; // Bereich der Zufallszahlen (0 bis numberRange)
    boolean ArrayAusgebenAn = false;
    boolean StatistikenAn = true;
    
    // Zufälliges Array erstellen
    int[] array = generateRandomArray(arraySize, numberRange);
    if (ArrayAusgebenAn){
      System.out.println("Unsortiertes Array:");
      System.out.println(Arrays.toString(array));
    }
    
    // Zeitmessung starten
    long startTime = System.currentTimeMillis();
    // MergeSort aufrufen
    int[] sortedArray = mergeSort(array);
    // Zeitmessung beenden
    long endTime = System.currentTimeMillis();
    // Sortiertes Array ausgeben
    if (ArrayAusgebenAn){
    System.out.println("Sortiertes Array:");
    System.out.println(Arrays.toString(sortedArray));
    }
    
    // Statistiken ausgeben
    if (StatistikenAn){
    System.out.println("Sortierschritte:");
    System.out.println("Vergleiche: " + comparisons);
    System.out.println("Zuweisungen: " + assignments);
    System.out.println("Zeitmessung: " + (endTime - startTime) + " ms");
    }
    
  }

  // Funktion, um ein zufälliges Array zu generieren
  public static int[] generateRandomArray(int size, int range) {
    Random random = new Random();
    int[] array = new int[size];
    for (int i = 0; i < size; i++) {
      array[i] = random.nextInt(range);
    }
    return array;
  }

  // MergeSort-Algorithmus
  public static int[] mergeSort(int[] array) {
    if (array.length <= 1) {
      return array;
    }

    // Array in zwei Hälften teilen
    int mid = array.length / 2;
    int[] left = Arrays.copyOfRange(array, 0, mid);
    int[] right = Arrays.copyOfRange(array, mid, array.length);

    // Rekursive Sortierung der Hälften
    left = mergeSort(left);
    right = mergeSort(right);
    // Zusammenfügen der sortierten Hälften
    return merge(left, right);
  }

  // Merge-Funktion: Zwei sortierte Arrays zusammenfügen
  public static int[] merge(int[] left, int[] right) {
    int[] merged = new int[left.length + right.length];
    int i = 0, j = 0, k = 0;

    // Elemente vergleichen und in das neue Array einfügen
    while (i < left.length && j < right.length) {
      comparisons++;
      if (left[i] <= right[j]) {
        merged[k++] = left[i++];
      } else {
        merged[k++] = right[j++];
      }
      assignments++;
    }

    // Restliche Elemente hinzufügen
    while (i < left.length) {
      merged[k++] = left[i++];
      assignments++;
    }
    while (j < right.length) {
      merged[k++] = right[j++];
      assignments++;
    }
    return merged;
  }
}

Bild zum Beitrag
Java, Array, Algorithmus, Struktogramm

Code optimieren?

Huhu ich hab's endlich geschafft meinen eigenen Code zu schreiben so dass er funktioniert und ich diesen auch verstehe. Jetzt ist meine nächstes "Problem" die optimierung kann man diesen in kürzerer Form schreiben?

```js

const array = ["3","4","5","6","7"];

for (let i= 0; i<=15; i++){

 console.log(array[0].repeat(20-i)+array[1].repeat(i));

}

for (let i= 16; i<=20; i++){

 console.log(array[0].repeat(20-i)+array[1].repeat(i));

 console.log(array[0].repeat(20-i)+array[1].repeat(i));

}

for (let i= 21; i<=35; i++){

 console.log(array[1].repeat(40-i)+array[2].repeat(i-20));

}

for (let i= 36; i<=40; i++){

 console.log(array[1].repeat(40-i)+array[2].repeat(i-20));

 console.log(array[1].repeat(40-i)+array[2].repeat(i-20));

}

for (let i= 41; i<=55; i++){

 console.log(array[2].repeat(60-i)+array[3].repeat(i-40));

}

for (let i= 56; i<=60; i++){

 console.log(array[2].repeat(60-i)+array[3].repeat(i-40));

 console.log(array[2].repeat(60-i)+array[3].repeat(i-40));

}

for (let i= 61; i<=75; i++){

 console.log(array[3].repeat(80-i)+array[4].repeat(i-60));

}

for (let i= 76; i<=80; i++){

 console.log(array[3].repeat(80-i)+array[4].repeat(i-60));

 console.log(array[3].repeat(80-i)+array[4].repeat(i-60));

}

```

sry hab kein plan wie man hier code formatiert rein haut^^ und danke für die geduld und fürs erklären. PS ich hoffe das kürzere ergebnis wird nicht zu kryptisch weil ich es dann wenn ich das in 6 wochen nochmal anschaue nicht mehr lesen kann. Dankö und habt einen schönen Start in die Woche🌞✌🏼

Computer, IT, programmieren, JavaScript, Array, optimierung, Webentwicklung, For-Schleife

Weiß jemand, wo mein Problemist?

Ich weiß nicht wirklich, wo das Problem liegt, aber das Programm sagt, es sei in der Klasse „Rennen“ und das Problem liegt in der Methode „lasseMaeuseSprinten“ und „maus.sprinte(maxSpeed, weg)“. Ich hoffe, jemand kennt die Antwort .

Der Code dafür ist hier:

public class Rennmaus {
private String name ;
private String rasse;
public int maxSpeed;
public int weg;
public Rennmaus(String name, String rasse, int maxSpeed, int weg) {
this.name = name ;
this.rasse = rasse ;
this.maxSpeed = 56 ;
this.weg = weg ;
}
public void sprinte (int maxSpeed, int weg) {
int strecke = (int)((Math.random()*maxSpeed)+1);
this.weg += strecke ;
}
public String toString() {
String s = "Name : " +name+ "rasse : " +rasse+ "Strecke : " +weg;
return s ;
}
}
And the second one is here:
import java.util.ArrayList;
class Rennen {
private String namen;
private int anzahlTeilnehmer;
private ArrayList<Rennmaus> teilnehmendeMaeuse= new ArrayList <Rennmaus> ();
private int längeStrecke;
public Rennen(String namen, int rennStrecke) {
this.namen = namen;
this.längeStrecke = längeStrecke;
this.teilnehmendeMaeuse = new ArrayList<Rennmaus>();
this.anzahlTeilnehmer = 0;
}
public void addRennmaus(Rennmaus neueMaus) {
teilnehmendeMaeuse.add(neueMaus);
anzahlTeilnehmer++;
}
public String toString() {
String result = "Rennen: " + namen + ", Teilnehmer: " + anzahlTeilnehmer + ", Renndistanz: " + längeStrecke + "\nTeilnehmende Mäuse:\n";
for (Rennmaus maus : teilnehmendeMaeuse) {
result += maus.toString() + "\n";
}
return result;
}
public int lasseMaeuseSprinten() {
for (Rennmaus maus : teilnehmendeMaeuse) {
maus.sprinte(maxSpeed, weg);
}
}
}
Java, Array, Programmiersprache

Code Error Java?

public class Main {
public static void main(String[] args) {


    GUI gui = new GUI();
    
    }
    
   public static int fak (int n) {
        if (n == 0) {
            return 1;
        }
        return n * fak(n - 1);
    }
    
}

import javax.swing.*;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;


import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


public class GUI extends JFrame {
    JButton button = new JButton("Berechnen");
    JLabel label = new JLabel("Bitte geben Sie die Zahl ein: ");
    JTextField textfield = new JTextField(2);
    JOptionPane popup = new JOptionPane();
    JPanel panel = new JPanel();
    
    public GUI () {
        setSize(300, 300);
        setTitle("Fakultätsrechner");
        setLayout(new FlowLayout());
        setVisible(true);
        
        panel.add(textfield);
        panel.add(label);
        panel.add(button);
        add(panel);
        
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);


        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                try {
                    String input = textfield.getText();
                    int number = Integer.parseInt(input);
                    int result = Main.fak(number);
                    JOptionPane.showMessageDialog(null, "Die Fakultät von " + number + " ist " + result);
                } catch (NumberFormatException ex) {
                    JOptionPane.showMessageDialog(null, "Bitte geben Sie eine gültige Ganzzahl ein.");
                }
            }
        });
        
    }





}

Error: java.lang.ClassNotFoundException: Main

Aber wieso findet er denn die Main-Klasse nicht? Verstehe ich nicht.

App, Java, Minecraft, Array, Code, Eclipse, Minecraft Server, Programmiersprache, Swing, game-development, Bukkit, Spigot, Java Swing, Android Studio

Java-Programm funktionier unerklärlicherweise nicht?

Mein Java Programm soll in der Zukunft eine Enigmamaschine simulieren. Ich möcht e das man sie auch beliebig einstellen kann, aber wenn ich es ausprobiere kommt nur ein Error. Dieser entsteht in den Zeilen 25-36, aber nach mehrfacjiger Prüfung verstehe ich immer noch nicht warum.

Hier ist der Code:

import java.util.Scanner;

public class Main {
   public static void main(String[] args) {
      Scanner scan = new Scanner(System.in);
      int counter1 = 0;
      String input;
      String settings;
      String spellzs;
      System.out.println("Dieses Programm chiffriert deinen Text mit der Enigma-M4-Verschlüsslung.");
      System.out.println("Gib deinen Text zum Verschlüsslen ein.(ohne Leerzeichen)");
      input = scan.nextLine();
      System.out.println("Gib die Verschlüsslungseinstellungen an.");
      System.out.println("z.B.: AZ-BY-CX-DW-EV-FU-GT-HS-IR-JQ-I-VI-VIII->1->13->26-A-M-Z");
      settings = scan.nextLine();
      String[] spelledInput = new String[input.length()];
      for (int i = 0; i < input.length(); i++) {
         spelledInput[i] = "";
         spelledInput[i] += input.charAt(i);
      }
      String[] spelledSettings = new String[19];
      for (int i = 0; i < 19; i++) {
         spelledSettings[i] = "";
      }
      for (int i = 0; i < 19; i++) {
         spellzs = "";
         spellzs += settings.charAt(counter1);
         if (!spellzs.equals("-")) {
            spelledSettings[i] += settings.charAt(counter1);
            counter1++;
            i--;
         }
         else {
            counter1++;
         }
      }
      for (int i = 0; i < spelledSettings.length; i++) {
         System.out.println(spelledSettings[i]);
      }
   }
}

Ich hoffe auf baldige Antwort und danke im voraus.

Java, Array

vom Listen-key die values im dict auslesen?

def add_vocabulary(key_word, value_word, form='infinitiv'):
dater = datetime.datetime.now().strftime("%d-%m-%Y")
    try:
        with (open('wordlist.json', 'r', encoding="utf-8-sig") as f):
            data = json.load(f)
            if dater not in data:
                data[dater] = {}
            if "0" not in data[dater]:
                data[dater]["0"] = {}
            if key_word not in data[dater]["0"]:
                data[dater]["0"] = [key_word]
            # KeyError 'h'
            if form not in data[dater]["0"][map(lambda y: y['Tags'], data[key_word])]:
                data[dater]["0"][key_word][form] = {}
                data[str(dater)]["0"][key_word][form] = value_word
                print("added as " + form + ": " + "english: " + key_word + "   german: " + value_word)

            while value_word != data[dater]["0"][key_word][form]:
                twogerman = data[dater]["0"][key_word][form]
                overwrite = input(f'do you want overwrite "%s" to "%s" (y-n): ' % (twogerman, value_word))
                if "y" == overwrite or "yes" == overwrite:
                    old_german = data[str(dater)]["0"][key_word][form]
                    data[str(dater)]["0"][key_word][form] = value_word
                    print("overwrite: " + "   form: " + form + ",   english: " + key_word + ",   german: " + old_german)
                    print("white: " + "   english: " + key_word + ",   german: " + value_word)
                    break
                elif "n" == overwrite or "no" == overwrite:
                    break

        with open('wordlist.json', 'w', encoding="utf-8-sig") as f:
            json.dump(data, f)

Schlüsselwort = h; value_word=j;

Ich möchte über das Schlüsselwort = ['h']-Werte auf die Werte zugreifen

Ich habe es mit mappen versucht, aber es erscheint der gleiche KeyError „h“.

Array, Python, Liste, JSON

Java Programm Gleichungssytem 3. Grades/Cramersche Regel?

Hallo, ich habe ein Programm erstellt, dass mithilfe der Cramerschen Regel ein Gleichungssytem 3. Grades löst (siehe unten) Nur kommt bei dem Ergebnis immer x1=0.0, x2=0.0 und x3=0.0 raus, egal was man eingibt. Ich finde den Fehler einfach nicht, kann mir da bitte jemand weiterhelfen?

LG

import java.util.*;
public class gs3 {
    public static void main(String[] args) {
        Scanner ein = new Scanner(System.in);
        System.out.println("Geben Sie den Koeffizienten des Gleichungssystems ein:");
        double[][] m = new double[3][4];
        for (int i = 0; i < 3; i++) {
            System.out.println("Gleichung " + (i + 1) + ":");
            for (int j = 0; j < 3; j++) {
                System.out.println("Koeffizient x" + (j + 1) + ":");
                m[i][j] = ein.nextDouble();
            }
            System.out.println("Rechte Seite: ");
            m[i][3] = ein.nextDouble();
        }
        double determinanteA = calculateDeterminant(m);
        if (determinanteA == 0) {
            System.out.println("Gleichungssystem nicht lösbar.");
        } else {
            double[] ergebnis = new double[3];
            for (int i = 0; i < 3; i++) {
                double[][] modifiedM = modifyM(m, i);
                double determinantModified = calculateDeterminant(modifiedM);
                ergebnis[i] = determinantModified / determinanteA;
            }
            System.out.println("Lösung: x1 = " + ergebnis[0] + ", x2 = " + ergebnis[1] + ", x3 = " +
                ergebnis[2]);
        }
        ein.close();
    }
    private static double calculateDeterminant(double[][] m) {
        double determinante = 0.0;
        determinante = m[0][0] * (m[1][1] * m[2][2] - m[1][2] * m[2][1]) -
            m[0][1] * (m[1][0] * m[2][2] - m[1][2] * m[2][0]) +
            m[0][2] * (m[1][0] * m[2][1] - m[1][1] * m[2][0]);
        return determinante;
    }
    private static double[][] modifyM(double[][] m, int column) {
        double[][] modifiedM = new double[3][3];
        for (int i = 0; i < 3; i++) {
            for (int j = 0, k = 0; j < 3; j++) {
                if (j != column) {
                    modifiedM[i][k++] = m[i][j];
                }
            }
        }
        return modifiedM;
    }
}

Computer, Programm, programmieren, Java, Array, codieren, Codierung, Informatik, Programmiersprache

Binäre suche mit Java, system falls Zahl nicht vorhanden?

Moin,

Folgendes:

Ich habe ein array mit 25.000 Feldern, in diesem sind aufsteigend quadratzahlen gespeichert. Das Programm fragt aktuell ab nach welcher Zahl man sucht und sucht dann systematisch das Array ab mittels annäherung. Ich hab nur absolut keine idee wie ich es einbauen kann, dass er merkt wenn die Zahl nicht vorhanden ist. Meine idee war, das er die Variable des letzten versuchs, mit der des aktuellen versuchs dividiert und wenn das Ergebnis = 0 ist, soll er ausgeben das die zahl nicht vorhanden ist. Leider passiert es dadurch aber manchmal das er anzeigt das die Zahl nicht vorhanden ist obwohl sie das ist, immer dann wenn er ein Feld neben der gesuchten Zahl sucht. Hier mal der relevante Teil des Codes:

int resultIndex;
int bereich = 12500;
int alg = 6250;
int bereich2 = 0;

while(true)
{


    if(quadratZahlen[bereich] < zahl)
    {
        bereich = bereich + alg;
        alg = alg / 2;

    }
    else if(quadratZahlen[bereich] == zahl)
    {
        resultIndex = bereich;
        break;
    }
    else if(quadratZahlen[bereich] > zahl)
    {
        bereich = bereich / 2;

        alg = bereich / 2;

    }


    int test = bereich - bereich2;

    if (test == 0)
    {
        resultIndex = -1;
        break;
    }

    bereich2 = bereich;

}

bereich2 ist die variable der letzten suche

bereich die der aktuellen suche

alg dient nur zur neu berechnung von bereich wenn die Zahl nicht gefunden wurde

resultIndex zeigt den Platz der gefundenen Zahl

Computer, Software, Studium, Mathematik, Technik, programmieren, Java, Array, Entwicklung, Informatik, Programmiersprache, Softwareentwicklung, Algorithmus, binär, Programmierung Java, IntelliJ IDEA

Durschnittszeiten mit arrays in python berechnen?

Ich programmiere aktuell einen 1x1 Trainer um Programmieren zu üben/ lernen. Aktuell wird nach eingeben der Aufgabe, die Aufgabe überprüft und Richtig oder Falsch angezeigt. Darunter die benötigte Zeit für die Aufgabe.
Jetzt will ich aber statt der benötigten Zeit pro Aufgabe die Durchschnittszeit pro Aufgabe angezeigt bekommen (Am besten mit Speichern von Daten in Arrays).

Kann mir da jemand helfen?

Hier der aktuelle Code:

from random import randint

import tkinter as tk

import time

status = False

def buttonLos_clicked(event):

    global status

   

    if status == False:

        status = True

        nextTask()

def nextTask():

    global a, b, produkt, zeitanfang

    textbox.delete(0,tk.END)

    zeitanfang = time.time()

   

    a = randint(1,10)

    b = randint(1,10)

    produkt = a * b

    showTask()

def showTask():

    global a, b

   

    labelTask["text"]="Wie viel ist " + str(a) + " x " + str(b) + "?"

def checkAufgabe(event):

    global produkt, zeitanfang, zeitende

   

    antwort = int(textbox.get())

    if antwort == produkt:

        zeitende = time.time()

        labelAnswer["text"] = "Richtig"

        labelTime["text"] = round(zeitende - zeitanfang, 2)

        nextTask()

   

    else:

        labelAnswer["text"] = "Leider falsch. Probiere es nochmal"

        textbox.delete(0,tk.END)

        showTask()

root = tk.Tk()

root.title("1x1-Trainer")

labelBody1 = tk.Label(root, text="Es werden dir zufällige Aufgaben gestellt.")

buttonLos = tk.Button(root, text="Los")

labelTask = tk.Label(root)

textbox = tk.Entry(root)

labelAnswer = tk.Label(root)

labelTime = tk.Label(root)

labelBody1.pack()

buttonLos.pack()

labelTask.pack()

textbox.pack()

labelAnswer.pack()

labelTime.pack()

buttonLos.bind("<Button-1>", buttonLos_clicked)

textbox.bind("<Return>", checkAufgabe)

root.mainloop()

programmieren, Array, Programmiersprache, Python, time, benutzeroberflaeche, Python 3, Tkinter

mehrdemensionales Array aus Datenbank auslesen mit php?

Hallo ich programmiere mit einem kleinem Team eine Onboarding Website für Mitarbeiter. Allerdings haben wir ein Problem beim auslesen unserer Datenbank. wir haben uns mit dem fronted Team abgesprochen dass wir die Daten per Array übergeben. Nun haben wir uns die daten per Array ausgeben lassen, per foreach schleife ausgeben lassen und zurück in mehrdemsionales Array gepackt. Allerdings können wir dieses nur per var_dump ausgeben und nicht mithilfe einer foreach Schleife normal per echo.

Wie können wir das umbauen?

Hier der aktuelle Code:

<?php 


    function getdata() {
    $pdo = new PDO('mysql:host=localhost; dbname=t-systems', 'root', '', [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
    ]);
    $stmt = $pdo->prepare('SELECT * FROM `user`');
    $stmt->execute();
    $results = $stmt->fetchAll(PDO::FETCH_ASSOC);

    foreach ($results as $result) {
        $Ort = $result['Ort Name'];
        $ID_User = $result['ID'];
        $Vorname = $result['Vorname'];
        $Nachname = $result['Nachname'];
        $Telefonnummer = $result['Telefonnummer'];
        $mail = $result['Email'];
        $PLZ = $result['Plz'];
        $Straße = $result['Strasse'];
        $Hausnummer = $result['Hausnummer'];

        $userdata[] = [$Ort, $ID_User, $Vorname, $Nachname, $Telefonnummer, $mail, $PLZ, $Straße, $Hausnummer];
    }
       var_dump($userdata);

    }
Danke fürs weiterhelfen
Array, Datenbank, MySQL, PHP

Meistgelesene Beiträge zum Thema Array