Programmieren – die neusten Beiträge

C#: Wie kann ich die binäre Suche am besten schreiben?

Hallo alle zusammen.

Ich habe eine Frage bezüglich dieses Quellcodes hier.

static void Main(string[] args)
{
  int[] Reihe = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; // Anlegen eines Arrays
  int max; // Bestimmung der Variablen
  int min;
  int mid;
  int Zahl;
  bool erfolgreich = false;
  
  min = 0;
  max = Reihe[9];

  foreach(int write in Reihe) // Ausgabe der vorhandenen Zahlen
  {
    Console.WriteLine(write);
  }

  Console.WriteLine("Geben Sie Ihre Zahl ein, damit wir überprüfen können, ob diese im System hinterlegt ist."); // Abfrage der gesuchten Zahl
  Zahl = Convert.ToInt32(Console.ReadLine());
  
  while (min <= max) // Mittelwert ermitteln
  {
    mid = (min + max) / 2;
    mid = Reihe[mid];

    if (mid < Zahl) // Wenn gesuchte Zahl größer als der Mittelwert, befindet sich der Wert in der rechten Hälfte
    {
      min = mid + 1;
    }

    if (mid > Zahl) // Wenn gesuchte Zahl kleiner als der Mittewert, befindet sich der Wert in der linken Hälfte
    {
      max = mid - 1;
    }

    if (mid == Zahl) // Wenn gesuchte Zahl gleich dem Mittelwert = Suche erfolgreich
    {
      erfolgreich = true;
      break;
    }
  }

  if (erfolgreich == true) // Ausgabe, ob die Zahl gefunden wurde oder nicht
  {
    Console.WriteLine("Ihre Zahl, die Sie eingegeben haben, ist im System hinterlegt.");
    Console.ReadLine();
  }
  else
  {
    Console.WriteLine("Ihre Zahl, die Sie eingegeben haben, ist NICHT im System hinterlegt.");
    Console.ReadLine();
  }

Und zwar möchte ich ein Programm schreiben, welches eine binäre Suche in einem Programm durchführt. Aber ich bekomme es nicht genau hin.

Die Funktion soll sein, dass, wenn ich das Programm starte eine Abfrage kommt, wo man dann eine gewünschte Zahl eingibt und danach Bescheid bekommt, ob diese in der Reihe vorhanden ist.

Wenn ich dort eine falsche Zahl eingebe, die nicht in der Reihe ist, kommt eine Fehlermeldung. Außerdem klappt das Programm wirklich nur, wenn im Array {1, 2, 3, 4, 5, 6, 7, 8, 9, 10 } steht. Aber hier hätte ich auch gerne andere Werte.

Danke im Voraus.

MfG

Computer, Schule, programmieren, Informatik

Batch Befehl um Datei zu entpacken und sie dann kopieren und einzufügen?

Hallo, ich möchte gerne .zip Dateien per Batch Datei entpacken und dann den entpackten in einem anderen Ordner einfügen um zu überschreiben. Und das muss mit einer .bat Datei geschehen um das dann mit der Aufgabenplanung (bei Windows vorinstalliert) automatisch zu machen. Ich habe 7-Zip auf dem Computer installiert, falls es notwendig ist + Windows 10.

Ich habe bisher nur einen Befehl geschrieben, der die neueste .zip Datei in einem anderen Ordner bewegt. Von "einfügen" ist glaub ich nichts die Rede. Wie geht das mit nem normalen Ordner? Bzw. wie muss ich meinen Befehl bearbeiten, dass man auch normale Ordner in andere Ordner kopiert und einfügt?

2te Frage noch. Beim entpacken, soll man am besten mit "hier entpacken" gehen. Normal die Datei geht zwar auch, aber dann ist da noch der Ordner anderst benannt. Und erst wenn man in den Ordner geht, sieht man die richtige Ordner Datei.

-----------------------------------------------------------------------------------

Hier noch der Befehl, den ich benutzt habe als .bat :

@echo off & setlocal

set source=STANDARDORDNER EINFÜGEN

set target=AUSGABEORDNER EINFÜGEN

for /f "delims=" %%a IN ('dir /B /S /A-D /O-D "%source%\*.bkf"') DO @(copy "%%a" "%target%" & goto :end)

:end

-----------------------------------------------------------------------------------

Falls es schwer verständlich ist, könnte ich auch ein kurzes Bild mit Gimp zeichnen und hier hochladen. Um zu zeigen was ich meine. Danke schonmal für die Antwort.

Computer, Internet, Microsoft, Technik, Editor, programmieren, Batch, cmd, Informatik, Technologie, Windows 10

Discord-Bot (Java, JDA) Befehl wird nicht ausgeführt?

Ich programmiere einen Discord-Bot mit Java. Um Befehle zu lesen, benutze ich einen Listener (der dem Builder hinzugefügt wurde) und ein Command-Manager-System.

Dies ist der Listener:

public class Listener extends ListenerAdapter {

[...]

@Override
public void onMessageReceived(MessageReceivedEvent event) {
String message = event.getMessage().getContentDisplay();
if (event.isFromType(ChannelType.TEXT)) {
TextChannel channel = event.getTextChannel();
if (message.startsWith(Bot.INSTANCE.prefix)) {
String[] args = message.substring(Bot.INSTANCE.prefix.length()).split(" ");
if (args.length > 0) {
if(!Bot.INSTANCE.getCmdMan().perform(args[0], event.getMember(), channel, event.getMessage())) {
// Kein Befehl entdeckt
}
}
}
}
}
}

Die getCmdMan()-Methode liefert den Command-Manager, der hier steht:

public class CommandManager {

public ConcurrentHashMap<String, ServerCommand> commands;

public CommandManager() {

this.commands = new ConcurrentHashMap<>();

[...]

this.commands.put("startGW", new StartGiveawayCommand());

[...]

}

public boolean perform(String command, Member m, TextChannel channel, Message message) {

ServerCommand cmd;

if ((cmd = this.commands.get(command.toLowerCase())) != null) {

cmd.performCommand(m, channel, message);

}

return false;

}

}

Alle Befehlsklassen erben (implements Klasse()) aus der Command-Klasse. Ich denke aber nicht, dass ich diese hier aufführen muss, da sie nur die Funktion, die in den Befehls-Klassen überschrieben wird, enthält. Die Befehls-Klassen sehen folgendermaßen aus: (ich nehme als Beispiel die StartGiveawayCommand-Klasse)

public class StartGiveawayCommand implements ServerCommand {

@Override

public void performCommand(Member m, TextChannel c, Message message) {

int index = 0;

System.out.println(index);

index++;

if(!m.hasPermission(Permission.ADMINISTRATOR)) {

message.delete().queue();

c.sendMessage(":x: Du hast nicht die Berechtigung, HanLink-Bot zu verwenden!").queue();

return;

}

[...]

}

}

Die System.out.println("");-Funktionen habe ich hinzugefügt nachdem der Befehl nicht ausgeführt wurde. In die Konsole kam auch kein Output.

Die anderen Befehle werden aber ausgeführt (z.B. !purge)

Was habe ich falsch gemacht? bzw. Was muss ich ändern?

programmieren, Java, Bot, jda, Discord, Discord Bot

Meistgelesene Beiträge zum Thema Programmieren