Matroids Matheplanet Forum Index
Moderiert von matph
Informatik » Programmieren » C - Consolen-Ausgabe
Druckversion
Druckversion
Autor
Universität/Hochschule J C - Consolen-Ausgabe
JamesNguyen
Aktiv Letzter Besuch: im letzten Monat
Dabei seit: 08.11.2020
Mitteilungen: 187
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Themenstart: 2021-02-24


Hallo,

ich habe in C (Devcpp) nun ein längere Zeile mit printf
ausgegeben. Da geht ja dieses schwarze Fenster auf.

Jetzt sehe ich, dass selbst ohne Zeilumbrüche im Quellcode.

Die Zeile in zwei Zeilen am Bildschirm ausgegeben wird,
da das schwarze Fenster nicht so groß ist.
Mach ich das Fenster größer so habe ich wieder eine Zeile.

Kann man das machen, dass die Zeile auf jeden Fall im schwarzen
Fenster in einer Zeile erscheint?

(wir sollen das in einer Aufgabe)

Gruß,
James



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
StrgAltEntf
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 19.01.2013
Mitteilungen: 6777
Herkunft: Milchstraße
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.1, eingetragen 2021-02-24


Hallo JamesNguyen,

das ist eine merkwürdige Aufgabe. Kannst du mal den genauen Wortlaut posten?



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
JamesNguyen
Aktiv Letzter Besuch: im letzten Monat
Dabei seit: 08.11.2020
Mitteilungen: 187
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.2, vom Themenstarter, eingetragen 2021-02-24


ok habe ich mich entschieden mal die ganze aufgabe zu posten. es wurde ja eh gesagt dass man dazu keine lösungen findet.
es geht um den allerletzten absatz

Erstellen Sie ein C-Programm zur Ausgabe einer 1x1-Tabelle:
Über eine symbolische Konstante bestimmen Sie je einen Anfangs- und Endwert für Zeilen
und Spalten, den Sie bei jedem Schleifendurchgang um 1 erhöhen – oder erniedrigen.
Erlaubte Werte für Zeilen- / Spaltenzahlen liegen zwischen 0x0 und 0x20 (hexadezimal).

Die Tabelle hat außen keinen Rand, wohl aber zwischen zwei Zellen, wofür Sie die
Schriftzeichen
+ - | (Kreuzung, waagrecht, senkrecht)
benutzen.

In einer Zelle geben Sie das Produkt aus Zeilen und Spaltenzahl aus. Und zwar zweistellig
hexadezimal mit führender 0 linksbündig und darunter vierstellig oktal mit Vorzeichen rechts
ausgerichtet. Sollte das nicht ausreichen, nehmen Sie eine gleichmäßige Breitenkorrektur vor,
so dass in allen Zellen gleich breite hexadezimale und gleich breite oktale Zahlen stehen.

Ist der Wert in der Zelle ohne Rest ganzzahlig durch 7 teilbar, so vertauschen Sie die
Darstellung von oben und unten derart, dass oben die Oktal-Darstellung steht.

An den Rändern der Tabelle schreiben Sie oben und unten dezimal den Spaltenwert und links
und rechts dezimal den Zeilenwert.

Eine Zeile der Tabelle sollte auch am Bildschirm in einer Zeile stehen. Testen Sie dies und
ergreifen im Zweifel Maßnahmen, dass dies eingehalten wird.



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
JamesNguyen
Aktiv Letzter Besuch: im letzten Monat
Dabei seit: 08.11.2020
Mitteilungen: 187
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.3, vom Themenstarter, eingetragen 2021-02-24


ich werde einfach mal demnächst nachfragen.

Wenn das hier keiner weiß, glaube ich nicht dass das so gemeint war
wie ich beschrieben habe.

Danke.




Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
StrgAltEntf
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 19.01.2013
Mitteilungen: 6777
Herkunft: Milchstraße
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.4, eingetragen 2021-02-24


Habe gerade mal etwas gegoogelt und gefunden, dass man wohl in C++ tatsächlich die aktuelle Fensterbreite der Konsole abfragen kann. Und außerdem kann man wohl die Font-Größe variieren. Allerdings habe ich das nicht ausprobiert.

Du müsstest also bestimmen, wie viele Zeichen deine Tabelle hat, wie breit das Fenster ist und dementsprechend den Font verkleinern.

Habt ihr Befehle kennengelernt, die das leisten könnten?



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
JamesNguyen
Aktiv Letzter Besuch: im letzten Monat
Dabei seit: 08.11.2020
Mitteilungen: 187
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.5, vom Themenstarter, eingetragen 2021-02-24


ich hab mal folgendes bisher programmiert vielleicht könnte das jemand von euch mal kompilieren und ausführen

hat noch nicht ganz so viel mit der aufgabe zu tun.

Bei mir erscheint das mit den define Konstanten

ZEILENENDE 21
SPALTENENDE 21

im schwarzen Fenster noch richtig

bei 22 nicht mehr. Ist das bei euch auch so?

Code:

#include <stdio.h>
#define ZEILENANFANG 0
#define ZEILENENDE 21 // 32
#define SPALTENANFANG 0
#define SPALTENENDE 21 // 32

int main ( void )
{
int i , j , k ;

printf ( "    | " ) ;

for ( j = SPALTENANFANG ; j < SPALTENENDE + 1 ; j ++ )
{
printf ( "%2u" , j ) ;
printf ( " | " ) ;
}

printf ( "\n" ) ;

printf ( " ---+" ) ;

for ( j = SPALTENANFANG ; j < SPALTENENDE + 1 ; j ++ )
{
printf ( "----+" ) ;
}

printf ( "---" ) ;

printf ( "\n" ) ;

for ( i = ZEILENANFANG ; i < ZEILENENDE + 1 ; i ++ )
{
printf ( " " ) ;

printf ( "%2u" , i ) ;

printf ( " | " ) ;

for ( j = SPALTENANFANG ; j < SPALTENENDE + 1 ; j ++ )
{
printf ( "%2u" , j ) ;
printf ( " | " ) ;
}

printf ( "%2u" , i ) ;

printf ( "\n" ) ;

printf ( "   " ) ;

printf ( " | " ) ;

for ( j = SPALTENANFANG ; j < SPALTENENDE + 1 ; j ++ )
{
printf ( "%2u" , j ) ;
printf ( " | " ) ;
}

printf ( "  " , i ) ;

printf ( "\n" ) ;

printf ( " ---+" ) ;

for ( j = SPALTENANFANG ; j < SPALTENENDE + 1 ; j ++ )
{
printf ( "----+" ) ;
}

printf ( "---" ) ;

printf ( "\n" ) ;
}

printf ( "    | " ) ;

for ( j = SPALTENANFANG ; j < SPALTENENDE + 1 ; j ++ )
{
printf ( "%2u" , j ) ;
printf ( " | " ) ;
}

return 0 ;
}


[Die Antwort wurde nach Beitrag No.3 begonnen.]



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Diophant
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 18.01.2019
Mitteilungen: 6526
Herkunft: Rosenfeld, BW
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.6, eingetragen 2021-02-24


Hallo,

es ist das Wesen einer solchen Konsole, dass sie den Text, der zu lang ist, umbricht. Da hast du also etwas grundsätzlich am Prinzip dieser Fenster missverstanden.

Die Aufgabe ist vermutlich so gemeint, dass man die Größe des Konsolenfensters aus dem Programm heraus beim Öffnen passend dimensionieren soll.


Gruß, Diophant

[Die Antwort wurde nach Beitrag No.3 begonnen.]



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
JamesNguyen
Aktiv Letzter Besuch: im letzten Monat
Dabei seit: 08.11.2020
Mitteilungen: 187
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.7, vom Themenstarter, eingetragen 2021-02-24


Hm
das ist eine sehr gute Frage.
Ich habe heute nicht besonders gut aufgepasst, aber ich glaube das wir solche
Befehle heute eig nicht gelernt haben.

[Die Antwort wurde nach Beitrag No.5 begonnen.]



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
JamesNguyen
Aktiv Letzter Besuch: im letzten Monat
Dabei seit: 08.11.2020
Mitteilungen: 187
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.8, vom Themenstarter, eingetragen 2021-02-24


Ah ok und die Größe kann dann also wirklich anpassen.

ok, ich schau dann mal wie das geht

Vielen Dank!



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
viertel
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 04.03.2003
Mitteilungen: 27783
Herkunft: Hessen
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.9, eingetragen 2021-02-25


Die Größe des Consolenfensters anpassen ist Unfug!
Das kann auch nicht der Sinn der Aufgabe sein.
Das Fenster ist zuerst da, und dann wird das Programm aufgerufen und hat sich dem unterzuordnen.

Mehr Sinn ergibt es z.B., wenn man die Formatierung Blockweise umbricht.
Wenn also Ausgabe breiter ist, als das Fenster, dann wird die Ausgabe in Blöcke unter teilt.
Aus
 │   1│   2│   3│   4│   5│   6│   7│   8│   9│ 
────────────────────────────────────────────────
1│0x01│0x02│0x03│0x04│0x05│0x06│0007│0x08│0x09│1
 │0001│0002│0003│0004│0005│0006│0x07│0010│0011│ 
────────────────────────────────────────────────
2│0x02│0x04│0x06│0x08│0x0A│0x0C│0016│0x10│0x12│2
 │0002│0004│0006│0010│0012│0014│0x0E│0020│0022│ 
────────────────────────────────────────────────
3│0x03│0x06│0x09│0x0C│0x0F│0x12│0025│0x18│0x1B│3
 │0003│0006│0011│0014│0017│0022│0x15│0030│0033│ 
────────────────────────────────────────────────
 │   1│   2│   3│   4│   5│   6│   7│   8│   9│ 
wird dann z.B.
 │   1│   2│   3│   4│   5│   6
───────────────────────────────
1│0x01│0x02│0x03│0x04│0x05│0x06
 │0001│0002│0003│0004│0005│0006
───────────────────────────────
2│0x02│0x04│0x06│0x08│0x0A│0x0C
 │0002│0004│0006│0010│0012│0014
───────────────────────────────
3│0x03│0x06│0x09│0x0C│0x0F│0x12
 │0003│0006│0011│0014│0017│0022
───────────────────────────────
 │   1│   2│   3│   4│   5│   6
 
│   7│   8│   9│ 
─────────────────
│0007│0x08│0x09│1
│0x07│0010│0011│ 
─────────────────
│0016│0x10│0x12│2
│0x0E│0020│0022│ 
─────────────────
│0025│0x18│0x1B│3
│0x15│0030│0033│ 
─────────────────
│   7│   8│   9│ 
Das würde ich als sinnvolle Maßnahme ansehen.

Wenn man es dem System überläßt, zeilenweise zu umbrechen, dann ergibt das einen unsinnigen Mix durch die umbrochenen Zeilen.
Unsinn
 │   1│   2│   3│   4│   5│   6│
   7│   8│   9│ 
────────────────────────────────
────────────────
1│0x01│0x02│0x03│0x04│0x05│0x06│
0007│0x08│0x09│1
 │0001│0002│0003│0004│0005│0006│
0x07│0010│0011│ 
────────────────────────────────
────────────────
2│0x02│0x04│0x06│0x08│0x0A│0x0C│
0016│0x10│0x12│2
 │0002│0004│0006│0010│0012│0014│
0x0E│0020│0022│ 
────────────────────────────────
────────────────
3│0x03│0x06│0x09│0x0C│0x0F│0x12│
0025│0x18│0x1B│3
 │0003│0006│0011│0014│0017│0022│
0x15│0030│0033│ 
────────────────────────────────
────────────────
 │   1│   2│   3│   4│   5│   6│
   7│   8│   9│ 



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



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
StrgAltEntf
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 19.01.2013
Mitteilungen: 6777
Herkunft: Milchstraße
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.10, eingetragen 2021-02-25


@viertel:

2021-02-25 17:55 - viertel in Beitrag No. 9 schreibt:
Die Größe des Consolenfensters anpassen ist Unfug!

Wenn es der Aufgabensteller aber so will ...

Was hältst du von dem Vorschlag, ggf. den Font zu verkleinern? (Diehe #4.) Geht das?



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
viertel
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 04.03.2003
Mitteilungen: 27783
Herkunft: Hessen
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.11, eingetragen 2021-02-25


Das wäre nicht die erste Aufgabenstellung, in der Unmögliches/Unsinniges verlangt wird.
Einem „Anfänger“, der gerade mal C lernt, abzuverlangen, in den Eingeweiden von Windows rumzupfuschen, das würde ich dann doch schon für ziemlich bescheuert halten.

Und wenn du den Font noch so klein machst: es wird immer eine Tabellenbreite geben, die das ad absurdum bringt. Weil entweder der Font nicht mehr kleiner zu machen ist oder die Schrift eh nicht mehr lesbar ist.

Diesen Blockumbruch halte ich dann immer noch für die beste Maßnahme (solange nichts Besseres im Angebot ist).
Alleine schon diese Forderung sollte „strafbar“ sein:
JamesNguyen im TS schreibt:
Eine Zeile der Tabelle sollte auch am Bildschirm in einer Zeile stehen. Testen Sie dies und ergreifen im Zweifel Maßnahmen, dass dies eingehalten wird.



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
StrgAltEntf
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 19.01.2013
Mitteilungen: 6777
Herkunft: Milchstraße
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.12, eingetragen 2021-02-25


2021-02-25 22:19 - viertel in Beitrag No. 11 schreibt:
Alleine schon diese Forderung sollte „strafbar“ sein:
JamesNguyen im TS schreibt:
Eine Zeile der Tabelle sollte auch am Bildschirm in einer Zeile stehen. Testen Sie dies und ergreifen im Zweifel Maßnahmen, dass dies eingehalten wird.


😃

Ich habe zwar absolut keine Ahnung, wie das zu realisieren wäre, aber ich könnte es mir so vorstellen:

Wenn eine Zeile sagen wir mal 1000 Zeichen breit ist, wird im Fenster am unteren Bildrand ein Scrollbar eingeblendet, sodass eine Zeile ohne Umbruch dargestellt wird.

Aber völlig richtig ist natürlich, dass dies keine Anfängerübung ist.



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
viertel
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 04.03.2003
Mitteilungen: 27783
Herkunft: Hessen
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.13, eingetragen 2021-02-25


2021-02-25 22:32 - StrgAltEntf in Beitrag No. 12 schreibt:

😃

Ich habe zwar absolut keine Ahnung, wie das zu realisieren wäre, aber ich könnte es mir so vorstellen:

Wenn eine Zeile sagen wir mal 1000 Zeichen breit ist, wird im Fenster am unteren Bildrand ein Scrollbar eingeblendet, sodass eine Zeile ohne Umbruch dargestellt wird.

Aber völlig richtig ist natürlich, dass dies keine Anfängerübung ist.
Das Console-Fenster steht nicht unter der Kontrolle des aufgerufenen Programms. Es kann allenfalls „von hinten durch die Brust ins Auge“ manipuliert werden. Und das kann nicht im Sinne des Erfinders sein! Es sei denn, er sucht selbst eine Lösung für so ein Problem und läßt das durch die Studenten austüfteln😛

Und ich wüßte nicht, daß das Console-Fenster einen horizontalen Scrollbalken kennt🤔
Doch, gibt es. Wenn man (zumindest unter Win10) in den Eigenschaften (des Fensters) unter „Layout“ den Haken bei „Textausgabe bei Größenänderung umbrechen“ entfernt.

Aber, wie gesagt: Nix für Anfänger!
Und für so ein Übungsprogramm zum Formatieren einer Tabelle schon gar nicht.



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
JamesNguyen
Aktiv Letzter Besuch: im letzten Monat
Dabei seit: 08.11.2020
Mitteilungen: 187
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.14, vom Themenstarter, eingetragen 2021-02-25


gott oh gott

jetzt habe ich endlich den umbruch blockweise hingekriegt

danke für den gute vorschlag!

[Die Antwort wurde nach Beitrag No.10 begonnen.]



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
JamesNguyen
Aktiv Letzter Besuch: im letzten Monat
Dabei seit: 08.11.2020
Mitteilungen: 187
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.15, vom Themenstarter, eingetragen 2021-02-25


ah stimmmt dann wäre auch meine bildschirmgröße egal.

ich habe jetzt blockweisen umbruch gemacht.

Danke!



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
JamesNguyen hat die Antworten auf ihre/seine Frage gesehen.
JamesNguyen 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-2021 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. 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]