
Jessica_n
Mitglieder-
Gesamte Inhalte
7 -
Benutzer seit
-
Letzter Besuch
-
Hi ihr, also ich bins mal wieder und brauch dringend eure Unterstützung. Nachdem ich im letzten Übung nur 3 Punkte bekommen hab, muss ich dieses mal etwas besser sein. Nur hab ich nach wie vor überhaupt keine Ahung wie das funktioniert! Wär echt cool wenn ihr mir die Lösung zu folgender Aufgabe geben würdet! tschüß! Jessica Aufgabe 1 Mit dem Stream Manipulator fixed kann die Ausgabe einer Fließkommazahl als Kommazahl erzwungen werden. Umgekehrt kann mit dem Manipulator scientific eine sogenannte wissenschaftliche Notation erzwungen werden. Dar¨uberhinaus kann mit dem Stream Manipulator setprecision(x) (wobei x eine nichtnegative ganze Zahl ist) der Headerdatei <iomanip> die Anzahl der Nachkommastellen einer nachfolgenden Fließkommazahl auf x setzen. Beispiel: #include<iostream> #include<iomanip> using namespace std; ... cout << fixed << setprecision(2) << 1234.5678e-2 << endl; liefert die Ausgabe 12.35 (a) Schreibe ein C++-Programm, das h¨ochstens 5 Fließkommazahlen einliest und aufsummiert. Gibt der Benutzer den Wert -1 ein, so soll die Schleife vorzeitig abgebrochen werden. In beiden F¨allen soll die Summe ausgegeben werden. Wurde die Schleife vorzeitig beendet, so soll die Summe im wissenschaftlichen Modus ausgegeben werden, andernfalls als reine Kommazahl mit einer Nachkommastelle. ( Schreibe ein C++-Programm, welches das Gehalt von Angestellten berechnet. Dazu sollen die gearbeiteten Stunden und der Stundenlohn eingelesen werden und das Gehalt ausgegeben werden. Dabei soll als ¨Uberstundenregelung jede geleistete Stunde ab der Vierzigsten mit dem anderthalbfachen Stundenlohn verg¨utet werden. Das Gehalt soll als reine Kommazahl mit genau zwei Nachkommastellen ausgegeben werden. © Ein Parkhaus berechnet eine Mindestgeb¨uhr von 2 Euro f¨ur eine Parkdauer von bis zu 3 Stunden. F¨ur jede weitere angebrochene Stunde werden 40 Cent berechnet bis zu einem Maximalbetrag von 10 Euro. Schreibe ein C++-Programm, das solange eine Parkdauer (ganzzahlig in Minuten) einliest und die zu zahlende Geb¨uhr mit zwei Nachkommastellen ausgibt, bis eine negative Parkdauer eingegeben wird. Aufgabe 2 Schreibe ein C++-Programm, das eine ganze Zahl zwischen 1 und 5 einliest und mit einer switch-Anweisung den Buchstaben an entsprechender Stelle im Alphabet ausgibt (A, B, C, D oder E). Sollte die eingelesene Zahl außerhalb des Bereichs sein, so soll ein X auf den Bildschirm geschrieben werden. Aufgabe 3 Schreibe ein C++-Programm, das zun¨achst zwei ganze Zahlen min und max zwischen 0 und 14 mit minmax einliest und danach 15 Fließkommazahlen in ein Feld geeigneter L¨ange einliest. Nun soll das Maximum der Feldelemente zwischen min und max ausgegeben werden. Aufgabe 4 Berechne durch ein geeignetes C++-Programm die Determinante der folgenden 3x3-Matrix: 0@ 1 2 3 4 5 6 7 8 9 1A Aufgabe 5 Schreibe ein C++-Programm, in der du eine ganze Zahl einliest und diese mittels Zeigerzugriff um 1 erhöhst und das Ergebnis auf dem Bildschirm ausgibst. Aufgabe 6 Lasse dir durch Ausführen des folgenden Programms bestätigen, dass ein const-Zeiger auf einen const-Integer weder einen neuen Wert noch einen neue Adresse zugewiesen bekommen kann. #include <iostream> using namespace std; int main() { int x = 1, y = 2; const int *const ptr = &x; cout << *ptr << endl; *ptr = 7; //Fehler ptr = &y; //Fehler return 0; } Finde durch Um¨andern des Source-Codes heraus welcher const-Befehl für welche Fehlermeldung verantwortlich ist.
-
Also jetzt pass mal auf "Mr.-Ich-hab-tausend-Jahre-Informatik-studiert". Deine kommentare kannst du bleiben lassen! Ich hock seit 2 Tagen an dem blöden Zeug. Aber ich komm halt nicht weiter. Ich hab ja nicht mal gewusst, was die 11 bei dem blöden write-befehl heißt! Ich kann das halt nicht. Und mal eben so schnell c++ lernen is ein bisschen schwierig. Ich muss mir hier nicht sagen lassen ich würde keine eigeninitiative zeigen!! So was vermessenes! Ich müsste den ****** überhaupt nicht machen! Dann ist man halt irgendwann in zwei Monaten am *****... Entweder es will mir jetzt einer helfen, oder ihr schreibt weiterhin eure ach so sinnvollen und hilfreichen Kommentare Und nochmal für alle zum mitschreiben: LESEN KANN ICH! Vllt. findet ja doch noch jemand einen passenden, hilfreiche Hinweis, Danke, Jessica
-
Hi, also, wie du schon lesen konntest hab ich schon kompiliert und ausprobiert. Ich weiß auch das beide Kanäle miteinander kommunizieren. Das was im array 0 eingelesen wird, wir im kanal 1 ausgeben. und umgekehrt. Das mit dem Kommunikationskanal hab ich (wie ich schon erwähn habe) allerdings nicht verstanden.... Ich will nicht zickig wirken, aber es wäre schön, wenn ihr mal das *besserwissergetue" weglasst.... oder wisst ihr etwa schon alles?! Jessica
-
Hi du, ich weiß dass ein Socket eine Verbindungsstelle zwischen zwei Programmen ist, mehr sagt mir die manpage bei Linux auch nicht. und das Programm schreibt HelloWorld und das nochmal rückwärts. ( ; fork bildet eine identische Kopie des Vaterprozesses.Bloß wie ein Kommunikationskanal zwischen Vaterprozess und Kindsprozess aufgebaut wird weiß ich eben nicht... Vielleicht kann mir das ja jemand kurz erklären....Braucht ja nicht so umfangreich sein. danke, Jessica
-
Hi ihr, ich bin im Moment voll im Stress und muss jetzt noch so ne Informatikaufgabe lösen. Leider hab ich aber überhaupt keinen Plan wie das funktioniert... ): Könnt ihr mir zu folgenden Aufgaben ein paar Tips geben??? Wär echt voll nett! :confused: tschüß! Jessica a) #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <iostream> using std::cout; using std::endl; int main() { // !!! OHNE Fehlerbehandlung !!! int kanal[2]; socketpair(AF_LOCAL, SOCK_STREAM, 0, kanal); write(kanal[1], "HelloWorld",11); write(kanal[0], "dlroWolleH",11); char buffer[11]; read(kanal[0], buffer, 11); cout << “Lese Kanal 0: “ << buffer << endl; read(kanal[1], buffer, 11); cout << “Lese Kanal 1: “ << buffer << endl; close(kanal[0]); close(kanal[1]); } Was tut dieses Programm (Notfalls auf einem Linuxsystem mit g++ Ue.BS.Blatt6-A2a.cpp -o Ue.BS.Blatt6-A2a.exe übersetzen und ausprobieren)? Erklären Sie die Funktionsweise von socketpair! Ziehen Sie auch die manpage (man 2 socketpair) zu Rate! Wie kann mit den Befehlen socketpair und fork ein Kommunikationskanal zwischen einem Vaterprozess und seinem Kindprozess aufgebaut werden? Erweitern Sie dazu das Beispielprogramm in dem ein Kind seinem Vater "HelloDad" durch ein socketpair mitteilt und der Vater die empfangene Nachricht ausgibt. Erklären Sie die genaue Funktionsweise, wie der Kommunikationskanal zustande kommt! #include <iostream> #include <sys/wait.h> #include <sys/types.h> #include <unistd.h> #include <signal.h> using namespace std; const int base=10; const int digits=20; int zaehler[digits]; void print(int signum) { char zaehlerstand[digits+1]; for (int i=0; i<digits; i++) zaehlerstand = (char)(zaehler[digits-i-1]+(int)'0'); zaehlerstand[digits]=0; cout << "Zählerstand = " << zaehlerstand << endl; }v oid zaehle() { for (int i=0; i<digits; i++) zaehler=0; int i=0; while (zaehler[digits-1]==0) { while (zaehler==base-1) { sleep(1); zaehler=0; i++; }z aehler++; i=0; } }i nt main() { pid_t pid; pid=fork(); if (pid<0) cout << "Fehler bei Prozesserzeugung" << endl ; else if(pid==0) { // Kindprozess zaehle(); } else { // Vaterprozess char eingabe=2; while (eingabe!='0') { cout << "ENTER = Zählerstand, 0 + ENTER = ENDE" << endl ; eingabe=cin.get(); print(1); }k ill(pid, SIGTERM); waitpid(pid,0,0); } } Das Programm soll wie folgt arbeiten: Der Kindprozess inkrementiert den Zähler und der Vater gibt diesen auf Anfrage aus. Da der Kindprozess mit fork() erzeugt wird, funktioniert die angegebene Lösung so nicht (siehe auch Übung 2, Aufgabe 2b). Ändern Sie das Programm so ab, daß das Kind bei Eintreffen eines speziellen Signals SIGUSR1 den Zählerstand ausgibt. Gehen sie dabei wie folgt vor: Mit dem kill()-Befehl können Sie Signale an einen anderen Prozess senden. Verwenden Sie hierzu das Signal SIGUSR1, welches vom Vater an den Sohn gesendet werden soll. Mit dem Befehl signal() kann für den Sohn ein entsprechender Signalhandler festgelegt werden, der dann die Ausgabe-Funktion print() des Programmes aufrufen soll. Achtung: Nur der Sohn darf auf dieses Signal reagieren! Betrachten Sie hierzu auch die entsprechenden manpages (man 2 kill und man 2 signal bzw. man 7 signal). Dort ist auch die korrekte Aufrufsyntax der Befehle angegeben. Starten Sie das geänderte Programm. Drücken Sie ENTER im Abstand von mehreren Sekunden. Vergleichen Sie den Zählerfortschritt mit dem wenn Sie ENTER gedrückt halten. Beschreiben Sie was im System passiert und erklären Sie damit Ihre Beobachtung! Beachten Sie den Aufruf von sleep (man 3 sleep).