Student braucht dringend Hilfe

  • C++

  • arek1912
  • 1167 Aufrufe 14 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Student braucht dringend Hilfe

    Hey,

    ich brauche fürs Studium dringend Lösungen für einige Aufgaben. Ich weiß, dass mein Prof. Aufgaben aus Büchern verwendet, zu denen es sicherlich auch Lösungen gibt. Leider finde ich keine. Vielleicht hat jemand von euch Lösungen zu den Aufgaben. Vielleicht findet sich auch jemand, für den die Aufgaben innerhalb von 5 Minuten gelöst sind und mir zu Liebe die Aufgaben löst ;)
    Die ersten beiden Aufgaben müsste ich hinbekommen. Die anderen sind schon etwas schwieriger...

    Für jede Hilfe wäre ich danbar. Es eilt... :P

    Aufgabe 1 (2 Punkte)
    --------------------------
    Schreiben Sie ein Programm, das auf dem Bildschirm ein gleichschenkliges bzw. gleichsei-tiges Dreieck (Weihnachtsbaum-Pyramide) mit einem beliebigen Zeichen ausgibt, z.B.:

    x
    x x x
    x x x x x
    x x x x x x x
    usw.

    Geben Sie im Programm das Zeichen und die Anzahl der Zeilen auf Anforderung ein.

    Aufgabe 2 (3 Punkte)
    ---------------------------
    Gegeben ist eine quadratische Gleichung in der allgemeinen Form:

    a*x2 + b*x + c = 0

    Mit p = b/a und q = c/a ergibt sich die Loesungsformel zu:
    x1/2 = -p/2 +- sqrt (p2/4 – q) mit dem Radikanten rad = p2/4 -q

    a) Erstellen Sie ein Programm, in dem die Eingabe der Parameter a, b, c nach
    Eingabeaufforderung erfolgt. Loesen Sie im Programm die Gleichung mit
    Hilfe der Wurzel- und Potenzfunktion unter Beachtung folgender Bedin-
    gungen:
    - Wenn fuer a = 0 eingegeben wird, soll die Meldung erfolgen:
    "Geradengleichung".
    - Wenn für b = 0 eingegeben wird, soll zusaetzlich zu den Nullstellen die
    Meldung ausgegeben werden: "Parabel symmetrisch zur y-Achse".
    - Falls der Radikant rad = 0 ist, soll die Meldung: "Doppelte Nullstelle"
    auf dem Bildschirm erscheinen
    - Falls der Radikant rad negativ ist, soll die Meldung erfolgen: "Komplexe
    Nullstellen"

    b) Nach Berechnung der Nullstellen (soweit die Gleichung loesbar ist) sollen die
    Funktionswerte für -10 <= x <= +10 ermittelt und auf dem Bildschirm ausge-
    geben werden.



    Aufgabe 3 (4 Punkte)
    --------------------------
    Erstellen Sie ein Programm für das Sortieren von 6 Zahlen nach ihrer Groesse:
    3.89
    8.34
    2.78
    9.43
    1.56
    7.45

    Im Ergebnis soll die groesste Zahl (9.43) vorn stehen und die kleinste (1.56) hinten.
    Im einzelnen:
    a) Schreiben Sie ein Programm für den Aufruf der Prozeduren:
    - fillarray() //Prozedur für die Werte-Eingabe
    - sortarray() //Prozedur zum Sortieren


    b) Erstellen Sie die Prozedur fillarray(), in der die einzelnen Zahlen unsortiert (z.B. in der oben angeführten Reihenfolge) nach Aufforderung in ein Array einzugeben sind

    c) Übergeben Sie das gefüllte Array dem Hauptprogramm und geben Sie dort nach Aufforderung die unsortierte Zahlenfolge aus.

    d) Übergeben Sie das mit der unsortierten Zahlenfolge gefüllte Array der Prozedur sortarray(), in der nach Aufforderung die Sortierung nach der Groesse erfolgt.

    e) Übergeben Sie das sortierte Array dem Hauptprogramm, wo es dann nach Aufforderung ausgegeben wird.


    Aufgabe 4 (4 Punkte)
    --------------------------
    Erstellen Sie eine nach oben offene (dynamische) Liste zur Verwaltung von Autotypen mit folgender Struktur:

    - Typ (z.B. Opel, BMW usw.)
    - Baujahr
    - Preis
    - Anzahl
    - Umsatz

    a) Erstellen Sie ein Programm mit einer dynamischen Liste zur fortlaufenden Eingabe von
    Autotypen gem. obiger Struktur (ohne Eingabe des Umsatzes pro Autotyp).
    b) Ergaenzen Sie das Programm durch die Prozedur Ausgabe() für die Ausgabe der komplet-
    ten Liste auf dem Bildschirm. Der Umsatz pro Autotyp ist zu berechnen aus Preis * Anzahl
    und in der Struktur einzutragen.
    c) Ergaenzen Sie das Programm durch die Prozedur DateiAusgabe() für die Ausgabe der Liste
    in eine Datei.



    Aufgabe 5 (3 Punkte)
    ---------------------------

    Durch Erwaermung vergroeßert sich die Oberflaeche eines rechtwinkligen Bleches um 3,75%. Das Rechteck hat ein Seitenverhaeltnis von a/b = 2/1, d.h. b= a/2. Geben Sie im Hauptprogramm die Laenge der Seite a ein und berechnen Sie die Groesse der Rechteckflaeche vor der Erwaermung.

    Geben Sie die Flaeche des Rechteckes vor der Erwaermung aus. Geben Sie danach die %-Vergroeßerung der Flaeche ein.



    Schreiben Sie eine Prozedur, in der

    - die vergroeßerte Flaeche und

    - die veraenderten Seitenlaengen a und b

    des Rechteckes berechnet werden.



    Geben Sie wieder im Hauptprogramm (mit 4-Dez.stellen) aus:

    - die korrigierte (vergroesserte) Flaeche nach der Erwaermung

    - die korrigierten Seitenlaengen a und b nach der Erwaermung.



    (Hinweis: Verwenden Sie bei Bedarf die Bibliotheksfunktion <cmath>)
  • arek1912 schrieb:


    Aufgabe 3 (4 Punkte)
    --------------------------
    Erstellen Sie ein Programm für das Sortieren von 6 Zahlen nach ihrer Groesse:
    3.89
    8.34
    2.78
    9.43
    1.56
    7.45

    Im Ergebnis soll die groesste Zahl (9.43) vorn stehen und die kleinste (1.56) hinten.
    Im einzelnen:
    a) Schreiben Sie ein Programm für den Aufruf der Prozeduren:
    - fillarray() //Prozedur für die Werte-Eingabe
    - sortarray() //Prozedur zum Sortieren


    b) Erstellen Sie die Prozedur fillarray(), in der die einzelnen Zahlen unsortiert (z.B. in der oben angeführten Reihenfolge) nach Aufforderung in ein Array einzugeben sind

    c) Übergeben Sie das gefüllte Array dem Hauptprogramm und geben Sie dort nach Aufforderung die unsortierte Zahlenfolge aus.

    d) Übergeben Sie das mit der unsortierten Zahlenfolge gefüllte Array der Prozedur sortarray(), in der nach Aufforderung die Sortierung nach der Groesse erfolgt.

    e) Übergeben Sie das sortierte Array dem Hauptprogramm, wo es dann nach Aufforderung ausgegeben wird.

    Also für diese Problem kannst du den Bubblesort algorithmus verwenden. Pseudocode:

    PHP-Quellcode

    1. prozedur bubbleSort( A : Liste sortierbarer Elemente )
    2. n := Länge( A )
    3. wiederhole
    4. vertauscht := falsch
    5. für jedes i von 1 bis n - 1 wiederhole
    6. falls A[ i ] > A[ i + 1 ] dann
    7. vertausche( A[ i ], A[ i + 1 ] )
    8. vertauscht := wahr
    9. falls ende
    10. für ende
    11. n := n - 1
    12. solange vertauscht und n >= 1
    13. prozedur ende
    Alles anzeigen


    wenn ich nacher noch zeit habe progg ich das vlt noch schnell

    EDIT: Wie lang studierst du schon? Weil die aufgaben hat man in 1 oder 2h gelöst

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Xbelt ()

  • ich studiere schon 2,5 jahre. aber halt kein informatik sondern elektrotechnik. unser prof ist eine niete und kann nichts beibringen. er gibt uns aufgaben, 15 min später die lösung. mehr macht er nicht. man muss sich alles selber beibringen. die meisten lernen auch nur alte klausuren, zum bestehen reicht das meistens. ich würde das aber lieber können :)
  • Zum können solltest du die Aufgaben aber am besten selber lösen. Gibt hier bestimmt Leute die nicht viel länger als 5min für die einzelnen Aufgaben bräuchten.

    Glaube aber nicht das jemand die Aufgaben komplett für dich löst, jedoch alle gerne Hilfestellungen geben werden.

    Poste doch mal deine Ansätze, dann bekommen wir die Aufgaben ohne Probleme gelöst.


    Gruß,
    Mink
  • tach arek

    machste etwa fernstudium ?? (kein bock zum lernen)
    und wieso ist der Prof niete , immerhin ist dein prof,ein prof und DU niete , weil du die aufgaben nicht lösen kannst, oder ??
    Die größten nieten suchen den fehler meistens woanders nicht wahr ?!!!
    also die paar aufgaben und dann noch darfste fertige biblitheken benutzen , die solltest(musst) du schon alleine lösen können ansonsten sag ich nur...man man man armes deutschland
    Wenn du unser zukunft seins sollst!!! auweia

    cya RaVeL

    P.S.: Also ich würde das hier schliessen!!
  • ravel du hast so absolut keine ahnung...
    wie gesagt unser prof gibt im laboruntericht nur aufgaben und 15 min später die dazugehörigen lösungen. alles andere muss man sich selber beibringen. wir haben mehrere solcher profs...
    im darauffolgenden semester hatten wir mikrocomputertechnik (bei einem guten prof), zunächst mit assembler was uns bestens beigebracht wurde. dann mussten wir einen mikrocomputer in c programmieren, was so gut wie niemand konnte. unser mikrocomp. prof hat sich beschwert und wir sollten auch einen neuen prof in c++ bekommen, daher habe ich mit der klausur gewartet und wollte bei dem neuen prof alles lernen. leider hat sich kein anderer prof gefunden und dieses semester ist es wieder bei dem gleichen.
    ich bin dabei bücher zu lesen und c++ zu lernen. zum einen habe ich c++ in 21 tagen von jesse liberty und Das hier.
    ich muss die aufgaben am 5.2. abgeben und die klausur schreibe ich erst im april. also habe ich 2 monate zeit c++ zu lernen und habe auch in der zeit semesterferien. jedoch schaffe ich es nicht bis zum 5.2. außerdem schreibe ich bis dahin noch 2 klausuren und muss noch ein protokoll machen. im letzten semester musste man die aufgaben kurz vor der klausur abgeben, worauf ich eingestellt war. dieses semester wurde es geändert...
    ansätze könnte ich zum wochenende versuchen zu machen.
    ich bin ganz sicher nicht faul und c++ macht mir auch spaß, zumindest wenn man es kann.
  • siehste ....du hast nur das bestätigt was ich vorhin gemeint habe.

    Alles andere und die anderen sind schuld ......nur Du nicht!!

    Man man , du kannst doch schon programmieren und zwar im Assembler und wenn Du assembler kannst (und dann habt Ihr noch einen mikrocomputer in c programmiert) .......dann wird ja doch kein problem für dich sein,diese aufgaben zu lösen!!
    Den programieren ist programieren , egal ob c , c++ ,c# , vb , assembler ,python, java, delphi und wie die alle da noch heisen ........es ist immer das gleiche , schleifchen , elsen , variablen , entscheidungen , daten die man verarbeiten muss .


    cya RaVeL
  • Hier schonmal die erste Aufgabe zum Selbststudium :D

    Quellcode

    1. #include <iostream>
    2. using namespace std;
    3. int main(void)
    4. {
    5. int Anzahl;
    6. char Zeichen;
    7. cout << "Zeichen: ";
    8. cin >> Zeichen;
    9. cout << "Anzahl: ";
    10. cin >> Anzahl;
    11. for (int x = 0; x <= Anzahl; x++)
    12. {
    13. for (int y = 0; y < x; y++)
    14. {
    15. cout << Zeichen;
    16. }
    17. cout << "\r\n";
    18. }
    19. getchar();
    20. getchar();
    21. return 0;
    22. }
    Alles anzeigen


    Es ist wirklich wichtig, dass du vorher vlt selber mal versuchst die Aufgabe zu "durchdringen", denn sonst wirst du bei der Prüfung genau die selben Probleme haben.

    Am besten schreibst du dir erstmal ein Grundgerüst auf, was alles zu tun ist. Hier zB.:
    - Einlesen des Zeichens und der Anzahl
    - Ausgeben des Dreiecks
    - usw...
    und dann fängst du erst an darüber nachzudenken wie du es realisierst (for-Schleife, cin, cout, ...)

    Vlt kannst du ja auch noch mit anderen Kommilitonen deine Aufgaben vergleichen oder mit ihnen zusammen lernen, das bringt auch immer ne Menge Verständnis
    Wo ist Iphigenie?
  • @tarkus
    Danke dir, aber die Aufgabe hatte ich schon ;)
    Nun habe ich ein weiteres Programm geschrieben, allerdings kommt es mir ziemlich unprofessionell vor. Ich glaube auch nicht, dass ich es entsprechend der Aufgabenstellung erstellt habe.
    Bitte um Feedback und evtl Verbesserungsvorschläge.

    C-Quellcode

    1. #include <iostream>
    2. #include <algorithm>
    3. using namespace std;
    4. int main()
    5. {
    6. anfang:
    7. float a[6];
    8. cout << "Zahlen eingeben? \n""Ja (j) /Nein (n): ";
    9. char antwort = ' ';
    10. cin >> antwort;
    11. if (antwort == 'j'){
    12. a[0] = 3.89;
    13. a[1] = 8.34;
    14. a[2] = 2.78;
    15. a[3] = 9.43;
    16. a[4] = 1.56;
    17. a[5] = 7.45;
    18. }
    19. else if (antwort == 'n'){
    20. cout << "Das Programm wurde beendet.";
    21. return 0;
    22. }
    23. else if (antwort != 'n' && antwort != 'j')
    24. goto anfang;
    25. teil1:
    26. cout << "unsortierte Zahlen ausgeben? \n""Ja (j) /Nein (n): ";
    27. char antwort2 = ' ';
    28. cin >> antwort2;
    29. if (antwort2 == 'j'){
    30. for (int i=0; i<6; i++)
    31. cout << a[i] << " ";
    32. cout << "\n";
    33. }
    34. else if (antwort2 == 'n'){
    35. cout << "Das Programm wurde beendet.";
    36. return 0;
    37. }
    38. else if (antwort2 != 'n' && antwort2 != 'j')
    39. goto teil1;
    40. teil2:
    41. cout << "Zahlen sortieren? \n""Ja (j) /Nein (n): ";
    42. char antwort3 = ' ';
    43. cin >> antwort3;
    44. if (antwort3 == 'j'){
    45. sort(a, a+6);
    46. reverse(a, a+6);
    47. }
    48. else if (antwort3 == 'n'){
    49. cout << "Das Programm wurde beendet.";
    50. return 0;
    51. }
    52. else if (antwort3 != 'n' && antwort3 != 'j')
    53. goto teil2;
    54. teil3:
    55. cout << "sortierte Zahlen ausgeben? \n""Ja (j) /Nein (n): ";
    56. char antwort4 = ' ';
    57. cin >> antwort4;
    58. if (antwort4 == 'j'){
    59. for (int i=0; i<6; i++)
    60. cout << a[i] << " ";
    61. }
    62. else if (antwort4 == 'n'){
    63. cout << "Das Programm wurde beendet.";
    64. return 0;
    65. }
    66. else if (antwort4 != 'n' && antwort4 != 'j')
    67. goto teil3;
    68. getchar();
    69. return 0;
    70. }
    Alles anzeigen


    Gruß Arek
  • goto nein nein nein
    ^^
    das verwendet man nicht. Für so etwas gibts funktionen:

    Quellcode

    1. #include <iostream>
    2. using namespace std;
    3. void func1(Argument1,Argument2) {
    4. blablabla
    5. }
    6. int main() {
    7. func1(Arg1,Arg2);
    8. }
  • Also ich habs mal umgeschrieben. ich habs aber nicht getestet. Aber sollte eigentlich funktionieren:

    PHP-Quellcode

    1. #include <iostream>
    2. #include <algorithm>
    3. #include <cstdlib>
    4. using namespace std;
    5. void print(float a[]) {
    6. for (int i=0; i<6; i++)
    7. cout << a[i] << " ";
    8. cout << "\n";
    9. }
    10. }
    11. void fillarray(float a[]) {
    12. char antwort = ' ';
    13. while(antwort != 'n' && antwort != 'j') {
    14. cout << "Zahlen eingeben? \n""Ja (j) /Nein (n): ";
    15. cin >> antwort;
    16. if (antwort == 'j'){
    17. a[0] = 3.89;
    18. a[1] = 8.34;
    19. a[2] = 2.78;
    20. a[3] = 9.43;
    21. a[4] = 1.56;
    22. a[5] = 7.45;
    23. }
    24. else if (antwort == 'n'){
    25. cout << "Das Programm wurde beendet.";
    26. exit(0);
    27. }
    28. }
    29. }
    30. void sortarray(float a[]) {
    31. char antwort3 = ' ';
    32. while(antwort3 != 'n' && antwort3 != 'j') {
    33. cout << "Zahlen sortieren? \n""Ja (j) /Nein (n): ";
    34. cin >> antwort3;
    35. if (antwort3 == 'j'){
    36. sort(a, a+6);
    37. reverse(a, a+6);
    38. }
    39. else if (antwort3 == 'n'){
    40. cout << "Das Programm wurde beendet.";
    41. exit(0);;
    42. }
    43. }
    44. }
    45. int main()
    46. {
    47. float a[6];
    48. fillarray(a);
    49. char antwort = ' ';
    50. while(antwort != 'n' && antwort != 'j') {
    51. cout << "unsortierte Zahlen ausgeben? \n""Ja (j) /Nein (n): ";
    52. cin >> antwort;
    53. if(antwort == 'j')
    54. print(a);
    55. else if(antwort == 'n')
    56. break;
    57. }
    58. sortarray(a);
    59. antwort = ' ';
    60. while(antwort != 'n' && antwort != 'j') {
    61. cout << "sortierte Zahlen ausgeben? \n""Ja (j) /Nein (n): ";
    62. cin >> antwort;
    63. if (antwort == 'j'){
    64. print(a);
    65. else if( antwort == 'n')
    66. break;
    67. }
    68. }
    69. getchar();
    70. return 0;
    71. }
    Alles anzeigen


    Wenn euer Lehrer euch das mit goto gezeigt hat, dann hau ihm eins^^. Das ist sowas von veraltet das "darf" man gar nicht mehr verwenden.
    Ich verweise noch auf den Worksop von Zerd:
    Funktionen

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von Xbelt ()

  • Danke das läuft fast perfekt und es ist auch fast verständlich :)
    Ein Problem habe ich mit dem Programm:
    ich kann das Programm nicht beenden, wenn es sich in den Funktionen FillArray und SortArray befinden. Wenn ich dort "return 0;" eingebe werden Fehler gemeldet. "return 0;" kann auch nur im main stehen, oder? Dort ist aber kein main, stimmt's? Mit break funktioniert es leider auch nicht. Wie kann ich das Programm innerhalb einer Funktion beenden?

    hab die fragen jetzt einfach ins main genommen und es funzt :)

    Danke nochmal. Ich muss heute noch was anderes lernen und versuche bis zum Abend die nächste Aufgabe zu lösen und melde mich dannˆ

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Broken Sword () aus folgendem Grund: Doppelpost =&gt; Regeln lesen

  • ok da musst du cstdlib einbinden und dann mit
    exit(0); kannst du dann das programm beenden.

    und vermeide doppelposts denn es gibt eine Edit funktion

    Ich habs mal kurz im prog geändert

    Ich hab hier noch einen Tipp für das nächste mit den Autos:

    PHP-Quellcode

    1. #include <iostream>
    2. using namespace std;
    3. struct TListenKnoten
    4. {
    5. int data; // simuliert die Daten
    6. TListenKnoten *next; // Verknüpfung zum Nachfolger
    7. };
    8. TListenKnoten *Anker = 0; // Anfang der Liste
    9. int main()
    10. {
    11. int Inhalt;
    12. TListenKnoten *node, *old;
    13. // Fülle die Liste mit Zahlen, bis 0 eingegeben wird
    14. do
    15. {
    16. cout << "Zahl eingeben (0 für Ende)" << endl;
    17. cin >> Inhalt;
    18. if (Inhalt)
    19. {
    20. // Neues Element für die Liste erzeugen:
    21. TListenKnoten *node = new TListenKnoten;
    22. node->data = Inhalt; // Besetze die Daten
    23. node->next = Anker; // Hänge die bisherige Liste an
    24. Anker = node; // Setze den Anfangspunkt hierher
    25. }
    26. } while (Inhalt);
    27. // Gebe die Liste in umgekehrter Reihenfolge aus
    28. // und lösche dabei die ausgegebenen Elemente
    29. while (Anker) // ungleich 0! Die Liste ist nicht leer!
    30. {
    31. cout << Anker->data << endl;
    32. old = Anker; // Sichere zum späteren Löschen
    33. Anker = Anker->next; // Ziehe nächstes Element nach vorn
    34. delete old; // Lösche das ausgelesene Element
    35. }
    36. }
    Alles anzeigen

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Xbelt ()

  • So hab die nächste Aufgabe (2) fertig bekommen. Ist sie so weit ok?
    wie kann ich die Augabe (-10 < x < 10) übersichtlicher gestalten?

    PHP-Quellcode

    1. #include <iostream>
    2. #include <cmath>
    3. using namespace std;
    4. double a,b,c;
    5. double p, q, p1, p2, r;
    6. double x1, x2;
    7. double y;
    8. void berechnung(){
    9. p = b/a;
    10. q = c/a;
    11. p1 = pow(p, 2);
    12. p2 = p1/4;
    13. r = p2-q;
    14. x1 = -p/2 + sqrt(r);
    15. x2 = -p/2 - sqrt(r);
    16. }
    17. int main()
    18. {
    19. cout << "Bitte a eingeben: ";
    20. cin >> a;
    21. if (a != 0){
    22. cout << "Bitte b eingeben: ";
    23. cin >> b;
    24. cout << "Bitte c eingeben: ";
    25. cin >> c;
    26. berechnung();
    27. }
    28. else {
    29. cout << "Geradengleichung";
    30. return 0;
    31. }
    32. if (r < 0){
    33. cout << "Komplexe Nullstellen";
    34. return 0;
    35. }
    36. if (r == 0){
    37. cout << "Doppelte Nullstelle\n";
    38. }
    39. cout << "Die Nullstelle x1 lautet: " << x1 <<endl;
    40. cout << "Die Nullstelle x2 lautet: " << x2 <<endl;
    41. if (b == 0){
    42. cout << "Parabel symmetrisch zur Y-Achse";
    43. }
    44. for (float i=-10; i<=+10; i++){
    45. y = pow(i, 2) * a + i*b + c;
    46. cout << "\n " << i << "\t \t " << y;
    47. }
    48. return 0;
    49. }
    Alles anzeigen
  • Hi arek1912,

    soweit sieht das programm ja schonmal ok aus! Und es tut auch das was es soll :)

    Ein Vorschlag zur verschönerung:
    Du solltest nach Möglichkeit auf globale Variablen verzichten. Die sind zwar in deinem Fall nicht weiter tragisch, können aber bei großen Projekten zu unübersichtlichkeit und fehlern führen (z.B. wenn du lokal variablennamen verwendest die du auch für globale benutzt)

    Alternativ kannst du an dieser Stelle mit Zeigern arbeiten. Dafür könntest du dir z.B. Den Teil von meinem Workshop durchlesen: freesoft-board.to/f155/c-c-wor…d-205683.html#post1866513

    Es ist wie gesagt nicht falsch was du da machst, aber unschön. Und umso eher du Zeiger verstehst umso leichter wirds später ;)
    [SIZE="1"]i'm a signature virus. copy me into your signature to help me spread. - smart questions[/SIZE]