Array – die neusten Beiträge

Array-Liste alphabetisch sortieren in BlueJ?

Ich möchte eine Array-Liste mit CDs, die mit Titel, Autor und Erscheinungsjahr gespeichert werden, alphabetisch (nach Titel) sortieren (das Programm soll unabhängig vom Inhalt ablaufen. Es soll also nicht ein gespeicherter Titel im Programm benutz werden). In der if-Anweisung wird mir beim > eine Fehlermeldung angezeigt, was ja sinnvoll ist, da ein String ja nicht > als ein andere sein kann. Ich weiß allerdings nicht, was ich stattdessen schreiben soll.

Vielen Dank schonmal im Voraus.

public void sortiernNachTitel()

   {

       cd temp;

       for(int i=1; i<cdanzahl; i++)

       {

           for(int j=0; j<cdanzahl-i; j++)

           {

               if(cdSammlung[j].gibTitel()>cdSammlung[j+1].gibTitel())

               {

                   temp=cdSammlung[j];

                   cdSammlung[j]=cdSammlung[j+1];

                   cdSammlung[j+1]=temp;

               }

           }

       }

       for( int a=0; a<cdanzahl; a++)

       {

           System.out.println(cdSammlung[a].gibTitel());

           System.out.println(cdSammlung[a].gibInterpret());

           System.out.println(cdSammlung[a].gibErscheinungsjahr());

       }

   }

Computer, Schule, programmieren, Java, Array, BlueJ, Informatik

C# 2D Array erste Zeile entfernen?

Guten Tag ich bin zurzeit an einem Projekt und die erste zeile soll aus dem Array gelöscht werden.

das ist meine Ausgabe und die erste zeile soll komplett gelöscht werden.

und das ist ein teil meines Codes:

for (int i = 0; i < sArrEinkauf.GetLength(0)-1; i++)
            {
                if (sArrEinkauf[i, 0] == sArrEinkauf[i + 1, 0]) 
                {
                    int summe = 0;
                    int temp = 0;
                    int temp2 = 0;

                    temp = Convert.ToInt32(sArrEinkauf[i, 4]);                     temp2 = Convert.ToInt32(sArrEinkauf[i + 1, 4]);                     summe = temp + temp2;                     sArrEinkauf[i + 1, 4] = summe.ToString();                     sArrEinkauf[i, 0] = "X";                 }

            }             string[,] tmparray = new string[0,0];             string[] temparray = new string[5];             for (int i = 0; i < sArrEinkauf.GetLength(0); i++)             {                 Console.WriteLine("\n");                 for (int j = 0; j < sArrEinkauf.GetLength(1); j++)                 {                                          sArrEinkauf[i, 0] = "A" + sArrEinkauf[i, 0];

                    Console.Write(sArrEinkauf[i, j] + "\t");
                }
            }

Bild zum Beitrag
Computer, Schule, programmieren, Array, C Sharp, Informatik

Pivotwahl bei Quicksort und Quickselect?

Guten Abend,

ich bräuchte mal kurz Hilfe bei folgenden Aufgaben, bitte. Es geht mir darum, dass ich einfach nicht versteh', was zu tun ist. Wir hatten in der Vorlesung den Quicksort-Algorithmus. Ich weiß, dass bei Quicksort das zu sortierende Array in immer kleiner Teilarrays eingeteilt wird, wobei das größere Array zuerst auf den Stack gelegt wird. Das Pivotelement ist entweder das linke oder das rechte und man setzt dann links und rechts einen Pointer am entsprechenden Teilarray. Ist das erste Element des zu sortierenden Teilarrays, welches größer als das Pivotelement ist, gefunden, und es findet sich vom rechten Pointer aus das erste Element, welches kleiner als das Pivotelement ist, so werden diese vertauscht. Bei Überkreuzungen tausche jenes Element auf dass der linke Pointer zeigt mit dem Pivotelement. So hatten wir's zumindest in der Vorlesung (Partitionswahl). Zu den Aufgaben

Aufgabe 1

Ein wichtiger Faktor für die Laufzeit von Quicksort und Quickselect (das Auswahlverfahren des k-kleinsten Elements analog zu Quicksort) ist die Wahl des Pivotelements. Das Pivotelement sollte die zu sortierende Folge in zwei möglichst gleich große Teilfolgen aufspalten.Gegeben sei eine unsortierte Folge mit n paarweise verschiedenen Elementen. Weiterhin sei r(x) die Position des Elements x in der sortierten Folge. Eine mögliche Strategie für die Pivotwahl ist:Wähle uniform zufällig 7 Elemente aus der Eingabefolge und gib das viertkleinste als Pivotelement aus. Dabei können Elemente in der Auswahl mehrmals vorkommen (Ziehen mit Zurücklegen)

.a) Berechne die Wahrscheinlichkeit für das Ereignis: n/4 < r(Pivot) ≤ 3n/4.

b) Nach wie vielen unabhängigen Wiederholungen der Pivotwahl ist zu erwarten, dass der Rang des Pivotelements das erste Mal außerhalb des Intervalls aus Aufgabenteil a) liegt? Hinweis: Du darfst annehmen, dass n= 4·kfür ein k∈N.

Aufgabe 2

Konstruiere eine Folge der Länge7, so dass Quickselect bei Verwendung der Pivotfunktionpivot(links, rechts) =⌈(links+rechts)/2⌉ auf der Suche nach dem viertgrößten Schlüssel die Problemgröße stets nur um 1verringert. Der Algorithmus soll insgesamt also sieben Schritte benötigen, bis er terminiert. Wende Quickselect auf Ihre Folge an, um die Korrektheit zu zeigen

Ansatz Ich verstehe hier nicht, wie n/4 gemeint ist. Wir hatten in der Vorlesung immer das Pivotelement ganz links oder ganz rechts. Jetzt steht hier "Pivot(links,rechts) = [(links+rechts)/2]. Greift man sich also da Element in der Mitte? Das ist bei einer Folge der Länge 7 doch nicht möglich, oder? WIe gehe ich allgemein vor um eine solche Folge zu finden.

LG

Jensek81

Computer, Schule, Mathematik, programmieren, rechnen, Array, Informatik, Theoretische Informatik, Algorithmus, stack, Binomialverteilung, Quicksort, Sortieralgorithmus, Algorithmen und Datenstrukturen

Python: Wie kann ich feld1 bis feld7 so zusammenfassen, sodass ich das nicht alles einzeln eingeben muss?

Hey, ich möchte feld1 bis feld7 so zusammenfassen, sodass ich das nicht alles einzeln eingeben muss. Dazu finde ich nur leider nichts im Internet.

import tkinter as tk from tkinter import *

modul = tk.Tk()
modul.geometry("900x900")
modul.title("Bunt3x3")
modul.resizable(width=False, height=False)

r = "red"
y = "yellow"
g = "green"
b = "blue"

def change():
  if feld1["bg"] == r:
    feld1.config(bg=g)
    feld3.config(bg=g)
    feld5.config(bg=g)
    feld7.config(bg=g)
    feld2.config(bg=b)
    feld4.config(bg=b)
    feld6.config(bg=b)
    feld8.config(bg=b)

    feldlabel.config(text="Rot & gelb")

  elif feld1["bg"] == g:
    feld1.config(bg=r)
    feld3.config(bg=r)
    feld5.config(bg=r)
    feld7.config(bg=r)
    feld2.config(bg=y)
    feld4.config(bg=y)
    feld6.config(bg=y)
    feld8.config(bg=y)

    feldlabel.config(text="Gruen & blau")

feld1 = tk.Frame(bg=r, width=300, height=300)
feld1.grid(column=1, row=1)
feld3 = tk.Frame(bg=r, width=300, height=300)
feld3.grid(column=3, row=1)
feld5 = tk.Frame(bg=r, width=300, height=300)
feld5.grid(column=1, row=3)
feld7 = tk.Frame(bg=r, width=300, height=300)
feld7.grid(column=3, row=3)
feld2 = tk.Frame(bg=y, width=300, height=300)
feld2.grid(column=2, row=1)
feld4 = tk.Frame(bg=y, width=300, height=300)
feld4.grid(column=1, row=2)
feld6 = tk.Frame(bg=y, width=300, height=300)
feld6.grid(column=3, row=2)
feld8 = tk.Frame(bg=y, width=300, height=300)
feld8.grid(column=2, row=3)

feld = tk.Frame(bg="white", width=300, height=300).grid(column=2, row=2)
feldlabel = tk.Label(text="Gruen & blau", bg="white", fg="black", font=("Arial", 15, "bold"))
feldlabel.grid(column=2, row=2)
feldbutton = tk.Button(text="Farbe aendern!", font=("Arial", 15, "bold"), bg="white", fg="black", command=change).place(x=370, y=470)
modul.mainloop()
programmieren, Array, Informatik, Python, Zusammenfassung, Variablen, list, Tkinter

C++ zweidimensionalen Array an Funktion übergeben?

Ja ich weiß das wurde schon hunderte male durchgekaut aber bei Fragen wie dieser geht es meist darum die größe des Arrays zu ermitteln aber mir geht es nur darum den Array zu übergeben und auf ihn zuzugreifen (ich weiß wenn man ihn "normal"(also ohne Zeiger auf ihn)übergibt kann man ihn nicht ändern aber das will ich auch garnicht ich will ihn einfach nur auslesen.(Das ganze soll übrigens mal das spiel des lebens werden)

Hier der Code:

#include<iostream>
#include<windows.h>
using namespace std;
const int x=12; const int y=8;


void ausgeben(char feld[][]){ int j,i;


for(i=0;i<y;i++){


    for(j=0;j<x;j++){


        if(feld[i][j]){             cout<<"#";         }else{             cout<<" ";                         }         }  cout<<endl;


} }


int main(int argc,char* argv[]){ char feld[y][x]{{0,0,1,0,0,0,0,1,0,0,0,0},                 {0,0,1,0,0,0,1,0,0,0,0,0},                 0,0,1,0,,0,1,0,0,0,0,0,0},                 {0,0,1,0,1,0,0,0,0,0,0,0},                 {0,0,1,1,0,0,0,0,0,0,0,0},                 {0,0,1,0,1,0,0,0,0,0,0,0},                 {0,0,1,0,0,1,0,0,0,0,0,0},                 {0,0,1,0,0,0,1,0,0,0,0,0}};


ausgeben(feld);

return 0;
}

Hier die Fehlermeldungen:

||=== Build file: "no target" in "no project" (compiler: unknown) ===|

|8|error: declaration of 'feld' as multidimensional array must have bounds for all dimensions except the first|

||In function 'void ausgeben(...)':|

|15|error: 'feld' was not declared in this scope|

||In function 'int main(int, char)':|

|32|warning: extended initializer lists only available with -std=c++11 or -std=gnu++11|

|39|warning: overflow in implicit constant conversion [-Woverflow]|

|39|warning: overflow in implicit constant conversion [-Woverflow]|

|39|warning: overflow in implicit constant conversion [-Woverflow]|

|39|warning: overflow in implicit constant conversion [-Woverflow]|

|39|warning: overflow in implicit constant conversion [-Woverflow]|

|39|warning: overflow in implicit constant conversion [-Woverflow]|

|39|warning: overflow in implicit constant conversion [-Woverflow]|

|39|warning: overflow in implicit constant conversion [-Woverflow]|

||=== Build failed: 2 error(s), 9 warning(s) (0 minute(s), 1 second(s)) ===|

Und könnte mir jemand noch erklären wie ich die Fehlermeldungen wegbekomme ich verwende Code::Blocks mit dem GNU GCC Compiler ich war schon mal in den entsprechenden Einstellungen allerdings kenne ich mich damit nicht aus und will da nichts verstellen(aber musste ich bereits denn der Compiler verstand Anfangs den neuerern C++ standard nicht obwohl er aktuell ist)

Software, hacken, programmieren, Funktion, Array

C++ Quersumme errechnen?

Hallo Gutefrage.net Comunity, Ich hab vor einiger Zeit angefangen die Programmiersprache C++ zu lernen. Bisher habe ich viel gelernt. Ich kann Variablen erstellen und initialisieren. Einfache Schleifen mit while, for. Befehle wie cout,cin und if sind auch kein Problem für mich. Sagen wir rinfach ich habe grundfähigkreiten erlernt. Wenn auch nicht alle Grundlegenden Themen behandelt bisher aber schon ein sehr solides Gerüst geschaffen (meiner meinung nach) um weiter diese Programmiersprache vertiefen zu können. Nun zu meiner eigentlichen Frage: Ich stelle mir ein Programm vor (natürlich alles auf der windows konsole) in welches man sein alter eingibt. Das Alter wird in einer integer variable abgespeichert. Danach rechnet das Programm die Quersumme des eingegebenen Alters aus und die quersumme wird als cout ausgegeben. z.B Ich schreibe mein Alter 18 rein. Das Programm errechnet die quersumme (1+8) und schreibt anschließend "9" als ergebnis auf. Zu meinem Problem: Ich kann die integer variable wo das Alter drin steht nicht "zerstückeln" um die beiden ziffern addieren zu können. Ich hab viel gegoogelt und etwas von arrays gelesen. Was arrays sind hab ich grundsätzIch verstanden aber wie ich sie hier anwenden kann? Ich wäre zutiefst froh wenn mir hier ein/e erfahrene/r Programmierer/in einen einfachen Weg aufweisen und somit einem Anfänger helfen könnte. Ich danke fürs durchlesen meiner Frage. Schönen Tag wünsch ich.

Programm, programmieren, Array, Code, Variablen, Integer

Meistgelesene Beiträge zum Thema Array