Informatik – die neusten Beiträge

Glückliche oder Traurige Zahl?

Aufgabenstellung:

Die Dezimalziffern einer natürlichen Zahl n, n ≥ 1, werden einzeln quadriert und addiert. Anschließend wird mit der entstandenen Summe genauso verfahren. Die Ausgangszahl n ist fröhlich, wenn man bei diesem Vorgehen schließlich auf die Zahl 1 stößt, ansonsten ist sie traurig. Beispielsweise ist 7 eine fröhliche Zahl

Schreiben Sie ein Java-Programm, das alle fröhlichen Zahlen zwischen einer Unter- und einer Obergrenze berechnet und die zugehörigen Folgen ausgibt.

Der Dialog soll folgendermaßen ablaufen:

untere Grenze ein: 5

obere Grenze ein: 30

7 -> 49 -> 97 -> 130 -> 10 -> 1

10 -> 1

13 -> 10 -> 1

19 -> 82 -> 68 -> 100 -> 1

23 -> 13 -> 10 -> 1

28 -> 68 -> 100 -> 1

import java.util.Scanner;

public class GlücklicheZahl2 {
    private int counter = 0;
    private int[] summenSpeicher = new int[1];
    private int zahl;
    int summenCounter = 0;
    Scanner scanner = new Scanner(System.in);

    public static void main(String[] args) {
        GlücklicheZahl2 zahl = new GlücklicheZahl2();
    }

    public GlücklicheZahl2() {
        /*System.out.print("Zahl? ");
        int zahl = scanner.nextInt();*/
        System.out.print("untere Grenze? ");
        int untereGrenze = scanner.nextInt();
        System.out.print("obere Grenze? ");
        int obereGrenze = scanner.nextInt();
        for (int i = untereGrenze; i <= obereGrenze + 1; i++) {
            this.zahl = i;
            this.summenSpeicher = new int[1];
            createIntArray(i);
        }
    }
    public void rechnung(int[] intArray) {
        boolean glücklich = false;
        int summe = 0;
            for (int i = 0; i < intArray.length; i++) {
                summe += intArray[i] * intArray[i];
            }
            if (summe == 1) {
                glücklich = true;
            }
            if (summenCounter >= summenSpeicher.length) {
                int[] tmpArray = new int[summenSpeicher.length + 1];
                for (int i = 0; i < summenSpeicher.length; i++) {
                    tmpArray[i] = summenSpeicher[i];
                }
                summenSpeicher = tmpArray;
            }
            summenSpeicher[summenSpeicher.length - 1] = summe;
            summenCounter++;
            if (glücklich) {
                System.out.print(zahl);
                for (int i = 0; i < summenSpeicher.length; i++) {
                    System.out.print(" -> " + summenSpeicher[i]);
                }
                System.out.println("");
            }   else {
                if (counter < 50) {
                    counter++;
                    createIntArray(summe);
                }
            }
    }

    public void createIntArray(int x) {
        String wert = Integer.toString(x);
        char[] wertarray = wert.toCharArray();
        int[] intArray = new int[wertarray.length];
        for (int i = 0; i < wertarray.length; i++) {
            intArray[i] = Character.getNumericValue(wertarray[i]);
        }
        rechnung(intArray);
    }
}
programmieren, Java, Informatik

Kann man behaupten, dass die ersten Semester im Studium die anspruchsvollsten sind?

Hallo,

ich habe mir nach meiner ersten Prüfungsphase die Frage gestellt, ob die ersten ~3 Semester die anspruchsvollsten sind.

Unser Fachbereich (ich studiere Wirtschaftsinformatik an der Uni) hat uns gesagt, dass die ersten 2/3 Semester anspruchsvoller sind als die Semester, die danach kommen.

Natürlich kann man das so nicht ganz pauschal sagen, aber uns wurde gesagt, dass das Grundlagenstudium "schwieriger" und abstrakter sei als die Inhalte der Semester danach.

Zugegeben habe ich mich dieses Semester auch ziemlich verschätzt. BWL und das erste fachbezogene Modul habe ich mit 1,0 und 2,0 abgeschlossen - was für meinen Lernaufwand(5 Tage pro Prüfung) sicherlich in Ordnung ist.

Allerdings habe ich in Mathe für Elektrotechnik und Informatik(auch in der Klausur nur Beweise) und Programmierung ziemlich auf den Sack bekommen (3,5/3,7). Ich bin zwar wirklich froh, dass ich die beiden bestanden habe - aber da ist noch viel Potential nach oben. Auch für die Klausuren habe ich viel zu spät angefangen zu lernen(Klausuren lagen alle recht nah beieinander)...
Mathe war allerdings noch nie meine Stärke... zum Glück muss ich nur 12 LP in Mathe ablegen (9 habe ich jetzt schon).

Kann man nun also sagen, dass die ersten Semester schwieriger sind oder fallen in den ersten Semestern immer nur mehr Leute durch, weil sie sich überschätzen oder nicht richtig vorbereitet sind?

Danke im Voraus!

Lernen, Studium, Schule, Betriebswirtschaftslehre, Informatik, Klausur, Universität, Wirtschaftsinformatik, Ausbildung und Studium, Beruf und Büro

kann man in C# eine Konsolenanwendung für den OSX mahen?

Hallo zusammen

Ich bin in C# VS relativ neu. Habe ein ca. 3500 Zeilen-Programm mit vielen Klassen etc. gemacht. Funktioniert alles super und ist getestet.

Ca. 80% der Consolen-App habe ich auf dem Mac programmiert, 20% auf meinem Windowsrechner. Ich bin also heterogen unterwegs. Soweit so gut.

Eine .exe kann ich problemlos erstellen. Auf Windows auch entsprechend problemlos auszuführen. Wenn ich das auf dem Mac laufen lassen möchte, mache ich:

  • a) die Konsole auf
  • b) navigiere zur ProgrammXY.dll
  • c) gebe dotnet ProgrammXY.dll ein

und das Ding läuft. Nur!!!!!!!!!!!!..... Das möchte ich so nicht!

Ich habe aktuell den Fall, dass meine Schwester (auch Mac-Anwenderin) genau jetzt die App benötigt. Die Löst ein Problem welche sie (und das ist Zufall des Jahrhunderts) hat.

Ich möchte ihr die Consolen-App analog zu Windows auf einem USB-Stick o.ä. übergeben können, sodass sie mit einem einfachen DOPPELKLICK das Ding starten und verwenden kann. Ich möchte keine UI darum herum bauen und ich möchte nicht ins Web damit. Auch soll sie ihren Rechner nicht fit für dotnet machen müssen. Ich will die App auf der Konsole haben. Sowohl auf Mac als auch auf Windows. Genau gleich einfach.

Nun die Frage:
Kann man das überhaupt? ich finde keinerlei sinnvolle Anleitungen oder Antworten. Bei Stackoverflow werde ich angepöbelt und bei MS selber kann ich im DEV-Forum keine Fragen stellen.

Ich möchte nur wissen ob das überhaupt geht damit ich mit der Fragerei und Suche aufhören kann oder andere Wege / Technologien angehen kann.

Grüsse euch und danke schonmal.

Computer, Technik, programmieren, C Sharp, dotNet, Informatik, Softwareentwicklung, Technologie, konsolenanwendung, Visual Studio 2019

Wie stelle ich mithilfe compareTo() die natürliche Objektreihenfolge her (Java)?

Ich habe heute über die compareTo()-Methode des Comparable-Interfaces gelesen, man würde sie wie folgt verwenden:

"If your class objects have a natural order, implement the 

Comparable<T>

 interface and define this method."

Aber wie kann ich compareTo() implementieren, um die natürliche Reihenfolge der Objekte herzustellen?

Beispiel: Ich sollte Studenten nach ihrer Punktzahl sortieren, habe dann compareTo() wie folgt überschrieben:

@Override
public int compareTo(Student student) {
    if(this.points > student.points)
        return 1; //current student is better
    return 0;
}

Allerdings returnt das ja jetzt nur einen bestimmten Wert, mit dem man dann arbeiten könnte, wenn man anschließend die Studenten z.B. in eine Liste packen will, aber es stellt ja nicht bereits in der Methode selbst die Objektreihenfolge her. Ich verstehe auch gar nicht, wie das gehen soll, wenn ich z.B. will, dass die Klasse Student das Interface Comparable implementiert. Ich meine, wenn ich dann ein Objekt erzeuge, dann kann ich auf dieses und ein anderes diese Methode anwenden, aber ich bräuchte ein weiteres Hilfsmittel, um die Studenten zu ordnen, wie eben z.B. besagte Liste.

Ist es also irgendwie möglich, compareTo() so zu überschreiben, dass es automatisch Studenten oder allgemein Objekte in ihre natürliche Reihenfolge bringt oder brauche ich dafür immer noch weitere Hilfsmittel?

Oder habe ich compareTo() auf richtige Weise überschrieben?

LG Kath

PS:
In der Doku steht ebenfalls Folgendes über Comparable():

This interface imposes a total ordering on the objects of each class that implements it. This ordering is referred to as the class's natural ordering, and the class's compareTo method is referred to as its natural comparison method.

programmieren, Java, Informatik, Interface, Objektorientierte Programmierung

C++ funktion() should have been declared inside namespace?

Hallo, ich arbeite gerade an einer Header Datei in C++. Aber ich kann nun nicht mehr weitermachen weil ständig ein Fehler auftaucht:

meinHeader.h:21:38: error: 'void meinNamespace::draw(int, int)' should have been declared inside 'meinNamespace'

Ich kann im Internet nichts hilfreiches finden und weiß nicht warum der Fehler auftaucht. Hier die betroffenen Codeabschnitte:

#include <Windows.h>
#include <WinUser.h>
#include <string>
#include <stdio.h>
#include <stdlib.h>

#include "meinHeader.h"

#define PI 3.14

enum meinNamespace::color {
    DARKBLUE = 1, 
    DARKGREEN, 
    DARKTEAL, 
    DARKRED,
    DARKPINK,
    DARKYELLOW,
    GRAY, 
    DARKGRAY, 
    BLUE, GREEN, 
    TEAL, 
    RED, 
    PINK, 
    YELLOW, 
    WHITE
};

struct meinNamespace::setColor {
    color _c;
    HANDLE _console_handle;
    setcolor(color c, HANDLE console_handle)
        : _c(c), _console_handle(0)
    { 
        _console_handle = console_handle;
    }
};


void meinNamespace::draw(int x, int y) {
    HWND myconsole = GetConsoleWindow();
    HDC mydc = GetDC(myconsole);

    int pixel =0;

    COLORREF COLOR= RGB(255,255,255); 


    for(double i = 0; i < PI * 4; i += 0.05) {
        SetPixel(mydc,pixel,(int)(50+25*cos(i)),COLOR);
        pixel+=1;
    }
    ReleaseDC(myconsole, mydc);
}

void meinNamespace::drawSquare(int aa, int ab, int ba, int bb) {
    draw(aa,bb);
}

Header:

#ifndef MEINHEADER_H
#define MEINHEADER_H

namespace meinNamespace {
    enum color {
        DARKBLUE=1,DARKGREEN,
        DARKTEAL,DARKRED,
        DARKPINK,DARKYELLOW,
        GRAY, DARKGRAY,
        BLUE,GREEN,
        TEAL,RED,
        PINK,YELLOW,
        WHITE
    };
    struct setcolor;
    void meinNamespace::draw(int x, int y);
    void meinNamespace::draw(int a, int b);
}

#endif

Die Funktionen sollen in ein Konsolenfenster Pixel schreiben, ob sie funktionieren weiß ich noch nicht und sie sind auch noch nicht fertig. Ich weiß nicht wo der Fehler verursacht wird. Ich hoffe jemand kann mir da helfen

LG

Software, IT, programmieren, CPP, development, Informatik, cpp lernen, Cpp Programierung

Meistgelesene Beiträge zum Thema Informatik