Die Mathe-Redaktion - 11.12.2019 10:06 - Registrieren/Login
Auswahl
ListenpunktHome
ListenpunktAktuell und Interessant ai
ListenpunktArtikelübersicht/-suche
ListenpunktAlle Links / Mathe-Links
ListenpunktFach- & Sachbücher
ListenpunktMitglieder / Karte / Top 15
ListenpunktRegistrieren/Login
ListenpunktArbeitsgruppen
Listenpunkt? im neuen Schwätz
ListenpunktWerde Mathe-Millionär!
ListenpunktFormeleditor fedgeo
Schwarzes Brett
Aktion im Forum
Suche
Stichwortsuche in Artikeln und Links von Matheplanet
Suchen im Forum
Suchtipps

Bücher
Englische Bücher
Software
Suchbegriffe:
Mathematik bei amazon
Naturwissenschaft & Technik
In Partnerschaft mit Amazon.de
Kontakt
Mail an Matroid
[Keine Übungsaufgaben!]
Impressum

Bitte beachten Sie unsere Nutzungsbedingungen, die Distanzierung, unsere Datenschutzerklärung und
die Forumregeln.

Sie können Mitglied werden. Mitglieder können den Matheplanet-Newsletter bestellen, der etwa alle 2 Monate erscheint.

Der Newsletter Okt. 2017

Für Mitglieder
Mathematisch für Anfänger
Wer ist Online
Aktuell sind 664 Gäste und 17 Mitglieder online.

Sie können Mitglied werden:
Klick hier.

Über Matheplanet
 
Zum letzten Themenfilter: Themenfilter:
Matroids Matheplanet Forum Index
Moderiert von matph
Informatik » Programmieren » C: Diagrammausgabe auf Terminal
Druckversion
Druckversion
Autor
Schule J C: Diagrammausgabe auf Terminal
Ex_Mitglied_50518
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Themenstart: 2019-06-09


Hallo!

Ich lade zum besseren Verständnis erstmal ein Bild einer Aufgabenstellung hoch:



Ich habe für den ALG schon einige Ideen, wie ich das angehen könnte, bleibe jedoch sofort zu Beginn hängen.
Also ich sehe, dass ich eine nested for-Schleife verwenden werde.
Bis dato hatten wir nur Aufgaben, bei denen quasi die
Zeilen die äussere ("langsame)Schleife waren.
Also wir "arbeiteten" von links nach rechts (dort wurde etwas mittels meist 2 Schleifen ausgegeben) und dann ist die äussere Schleife in die nächste Zeile gesprungen - also ging unser Programm von:
links nach Rechts (Aktion) -> Sprung in die nächste Zeile (von oben nach unten) und dann wieder von links nach rechts und so weiter, bis alle Zeilen fertig gewesen sind.

Mit meinen Ansatzideen müsste ich hier aber nicht zeilenweise, sondern spaltenweise vorgehen:
Also von oben nach unten wird was gemacht -> Sprung nach rechts_oben, um nächste Spalte zu bearbeiten, bis alle Spalten durch sind.

Nun zu meiner konkreten Frage:
Wie komme ich in der Konsole bzgl. Output von "unten" nach "rechts oben"?
Dieses Bild wird klar machen, worum es geht:



Ich möchte quasi dort weiter machen, wo der rot eingezeichnete Pfeil hindeutet.

Gruß,
Zrebna



  Profil  Quote  Link auf diesen Beitrag Link
ligning
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 07.12.2014
Mitteilungen: 2849
Aus: Berlin
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.1, eingetragen 2019-06-09


Der Sinn der Aufgabe ist sicher nicht, die Windows-API nach Funktionen zu durchwühlen, mit denen du auf der Konsole von unten nach oben schreiben kannst oder dergleichen. Geh davon aus, dass du nur von oben nach unten und von links nach rechts arbeiten kannst.



-----------------
⊗ ⊗ ⊗



  Profil  Quote  Link auf diesen Beitrag Link
viertel
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 04.03.2003
Mitteilungen: 26872
Aus: Hessen
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.2, eingetragen 2019-06-10


Hi Zrebna

Du denkst gleich in Schleifen und Zeilen und Spalten.
Geh doch erst mal schrittweise voran.
  • Welche Information brauchst du, um die Höhe der Balken zu berechnen?
  • Dann dreh den Spieß zunächst erst mal um und zeichne die Balken von oben nach unten, ohne Achsen und all das Beiwerk. Zeichne auch erst mal mit nur einem # und ohne Abstände. Was brauchst du, damit alle Balken in der korrekten Länge gezeichnet werden?
  • Erweitere das Zeichnen, indem du jetzt auch die Breite von 2 # und die Abstände berücksichtigst.
  • Jetzt hast du (hoffentlich) schon mal ein Gefühl dafür, wie zu Zeichnen ist. Jetzt kommt der Kopfstand: die Balken sollen ja von unten nach oben gezeichnet werden. Geht natürlich nicht direkt, denn du kannst die Grafik ja nur zeilenweise von oben nach unten erstellen. Was brauchst du also, damit jeder Balken auf der richtigen Höhe beginnt und dann mit jeder ausgegebenen Zeile weiter nach unten wächst?

Wenn du das bis hierher geschafft hast, dann kannst du daran gehen, das Drumherum auch noch mit auszugeben.

Dieses Programm macht übrigens genau das in der beschriebenen Reihenfolge, nur halt etwas kompakter, weil es mächtige Befehle hat. Es beginnt sogar noch etwas einfacher, weil es die Balken erst mal von links nach rechts zeichnet und dann schrittweise die Erweiterungen vornimmt:
Mußt du dir aber nicht ansehen (ist nämlich nicht in C geschrieben)



Zrebna schreibt:
Also ich sehe, dass ich eine  verwenden werde.
Mal abgesehen davon, daß es eine „nested for-Schleife“ nicht gibt: denk nicht gleich daran, welche Sprachmittel du verwendest/verwenden könntest. Überlege dir, wie du vorgehen würdest, wenn du in einem Schritt (in C sind das i.d.R. aber schon mehrere Zeilen) nur eine Zeile der Grafik ausgeben kannst. Gehe dazu erst mal wie oben beschrieben vor. Also nicht gleich die fertige Welt erschaffen, sondern bring erst mal Licht in das Dunkel wink

Gruß vom ¼


-----------------
Bild



  Profil  Quote  Link auf diesen Beitrag Link
Ex_Mitglied_50518
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.3, vom Themenstarter, eingetragen 2019-06-14


Danke euch beiden für eure Posts, und vor allem auch dir viertel für den, wieder einmal sehr hilfreichen Input!:)

Mittlerweile habe ich es bewerkstelligen können - falls es interessiert, so sähe meine Lösung aus:
C
  1. #include <stdio.h>
  2.  
  3. double max(double* zahlen_array, int length) {
  4. double maximum;
  5. int i;
  6.  
  7. maximum = zahlen_array[0];
  8.  
  9. for(i = 1; i < length; i++) {
  10. if(zahlen_array[i] > maximum) {
  11. maximum = zahlen_array[i];
  12. }
  13. }
  14. return maximum;
  15. }
  16.  
  17. void zeichnen(double* kurswerte, int laenge) {
  18. int z, s, i, j;
  19. double balkengroessen_faktor;
  20.  
  21. balkengroessen_faktor = max(kurswerte, laenge) / 20;
  22.  
  23.  
  24.  
  25. for(z = 20; z > 0; z--) {
  26. printf("| ");
  27. for(s = 0; s < laenge; s++) {
  28. if((kurswerte[s]/balkengroessen_faktor) >= z) {
  29. printf("##%*s", 5, "");
  30. } else {
  31. printf("%*s", 7, "");
  32. }
  33. }
  34. printf("\n");
  35. }
  36.  
  37. for(i = 0; i <= laenge; i++) {
  38. if(i == 0) {
  39. printf("+-");
  40. } else {
  41. printf("+------");
  42. }
  43. }
  44. printf("\n");
  45.  
  46. for(j = 0; j < laenge; j++) {
  47. printf("%05.1lf%*s", kurswerte[j], 2, "");
  48. }
  49. printf("\n");
  50. }
  51.  
  52. int main() {
  53.  
  54. double k[] = {120., 150., 80., 14., 210., 65., 99., 180., 140., 255.};
  55. zeichnen(k, 10);
  56.  
  57. return 0;
  58. }

Ich markiere den Thread als "erledigt" und bedanke mich noch einmal:)



  Profil  Quote  Link auf diesen Beitrag Link
Ex_Mitglied_50518 hat die Antworten auf ihre/seine Frage gesehen.
Ex_Mitglied_50518 hat selbst das Ok-Häkchen gesetzt.
Neues Thema [Neues Thema]  Druckversion [Druckversion]

 


Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2019 by Matroids Matheplanet
This web site was made with PHP-Nuke, a web portal system written in PHP. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]