Seite 1 von 2
Arbeiten mit Zeichen
Verfasst: So Mär 29, 2009 2:52 pm
von schlafmütze
Code: Alles auswählen
#include<stdio.h>
int main()
{
int i, j;
char ch;
for(i=0; i<16; i++)
{
for(j=0; j<8; j++)
{
ch = i + 16*j;
if (ch >= 32 && ch <=126)
printf(" %X %c", ch, ch);
else
printf(" %X %c", ch,' ');
}
printf("\n");
}
return 0;
}
Hallo Proggen.org
Ich komm leider bei einen Beispiel wieder nicht weiter , sicherlich wird das Programm einfach zu verstehen aber ein Neuling wie ich müsse ich wohl noch Erfahrung sammeln müssen.
Ich habe mit der Zeile
Probleme.
Wieso wird da gerade mit J multipliziert die Zeile könnte doch so aussehen
Es scheint aber irgendwie nicht zu funktionieren oder habe ich die Zeile völlig falsch verstanden ?
Wenn ja bitte ich sehr gerne um Erklärung.
mfg schlafmütze
Re: Arbeiten mit Zeichen
Verfasst: So Mär 29, 2009 3:14 pm
von cloidnerux
Es wäre gut zu wissen aus welchem Tutorium dieses stück code stammt, da er offensichtlich nciht von dir stammt.
In der zeile:
Wird einfach nur ch der wert i + einem vielfachen von 16 zugewiesen und wenn das dann einem bestimmten bedinung entspricht ausgegeben um irgendwas zu zeigen.
Für mcih soll dieses beispiel einfach nur zeigen, das ein char auch nur ein Integer ist, der aber als zeichen behandelt werden kann.
Also das folgende zwei zuweisungen erlaubt wären:
Re: Arbeiten mit Zeichen
Verfasst: So Mär 29, 2009 3:19 pm
von schlafmütze
Das mit i+16 ist mir klar aber wieso gerade mit J multiplizieren wofür dient es.
Ich zerbreche mir die ganz Zeit nur wegen ein Buchstaben J den Kopf und man kann es bestimmt anders schreiben.
Re: Arbeiten mit Zeichen
Verfasst: So Mär 29, 2009 3:24 pm
von cloidnerux
Das mit i+16 ist mir klar aber wieso gerade mit J multiplizieren wofür dient es.
Ich zerbreche mir die ganz Zeit nur wegen ein Buchstaben J den Kopf und man kann es bestimmt anders schreiben.
Es wurde mit j multiplizioert weil dieser nach i kommt.
J ist eine Variable und kein Zeichen. hast du dein programm mal compiliert und getestet was dir angezeigt wird?
Warscheinlcih wurde einfach nur damit multipliziert um einen lustigen effekt zu erreichen
Und nochmal:
Woher kommt der code und im wlechen zusammenahng steht er?
Re: Arbeiten mit Zeichen
Verfasst: So Mär 29, 2009 3:32 pm
von schlafmütze
Der Code stammt von das Buch Softwaretechnik in C und C++ - Das Kompendium: Modulare, objektorientierte und generische Programmierung.
Das Programm soll das Arbeiten mit Zeichen demonstrieren.
Das Programm soll die Tabelle der ASCII Zeichen erzeugen
Code: Alles auswählen
0 10 20 30 0 40 @ 50 P 60 ` 70 p
1 11 21 ! 31 1 41 A 51 Q 61 a 71 q
2 12 22 " 32 2 42 B 52 R 62 b 72 r
3 13 23 # 33 3 43 C 53 S 63 c 73 s
4 14 24 $ 34 4 44 D 54 T 64 d 74 t
5 15 25 % 35 5 45 E 55 U 65 e 75 u
6 16 26 & 36 6 46 F 56 V 66 f 76 v
7 17 27 ' 37 7 47 G 57 W 67 g 77 w
8 18 28 ( 38 8 48 H 58 X 68 h 78 x
9 19 29 ) 39 9 49 I 59 Y 69 i 79 y
A 1A 2A * 3A : 4A J 5A Z 6A j 7A z
B 1B 2B + 3B ; 4B K 5B [ 6B k 7B {
C 1C 2C , 3C < 4C L 5C \ 6C l 7C |
D 1D 2D - 3D = 4D M 5D ] 6D m 7D }
E 1E 2E . 3E > 4E N 5E ^ 6E n 7E ~
F 1F 2F / 3F ? 4F O 5F _ 6F o 7F
Re: Arbeiten mit Zeichen
Verfasst: So Mär 29, 2009 3:54 pm
von nufan
Das liegt daran, dass du 16 Zeilen hast. Du kannst nur von Links nach Rechts schreiben.
Also kommt nach dem 0. Zeichen das 0+16. Zeichen, sprich das erste Zeichen der zweiten Spalte.
Danach das 0+32 Zeichen, also das erste Zeichen der zweiten Spalte.
Wenn du die erste Zeile durch hast, wird i erhöht. also werden immer die zweiten Zeichen der jeweiligen Spalten ausgegeben.
i gibt die Zeile, j die Spalte an.
Verständlich?
Re: Arbeiten mit Zeichen
Verfasst: So Mär 29, 2009 3:59 pm
von schlafmütze
Re: Arbeiten mit Zeichen
Verfasst: So Mär 29, 2009 4:03 pm
von hackmack
Schreibst du:
wird da, wo eig. das 1. Zeichen ausgegeben werden sollte, dass 8 ausgegeben. Da der Algorithmus bis zum 128 Zeichen zählt (wo auch die ASCII Zeichentabelle zu Ende ist) und du addierst nochmal 8 Zeichen, zeigt du ein Zeichen an, welches nicht existiert und das geht schiff.
schlafmütze hat geschrieben:
Das mit i+16 ist mir klar aber wieso gerade mit J multiplizieren wofür dient es.
Schau dir mal die Wikipedia-Tabelle an:
http://de.wikipedia.org/wiki/ASCII#Zusammensetzung
Dein Code geht diese Wikipediatabelle von recht nach links durch, dein Code zeigt diese aber der Reihenfolge nach untereinander an (schreiben tut das Programm aber eigentlich "nebeneinander"). Um bei deiner Programm die erste Zeile anzuzeigen, müssen also zuerst das Zeichen mit dem Zeichencode 1 ausgegeben werden, danach 16, danach 32, usw. Die Zeile wird in der innersten Schleife ausgegeben, wobei immer nur j inkrementiert wird. Also wird zu der Anzahl der Spalte in der du dich gerade befindest, die Anzahl der Zeilen * 16 (da ja in jeder Zeile 16 Buchstaben sind) addiert. Somit erreicht du, dass wenn du j inkrementierst, dass um 16 höhere anzeigt. Um die nächste Zeile anzuzeigen, wird i um eins erhöht, und die j Schleife beginnt von vorne.
Hoffe es war verständlich.
Mfg.
Re: Arbeiten mit Zeichen
Verfasst: So Mär 29, 2009 4:58 pm
von schlafmütze
Ich denke punkt vor strichrechnung.
Erst wird doch
durchgeführt und nicht
oder

Ich vermute die auch die Variable J verändert sich immer und durch die diese zeile
)
darf es sich weniger als 32 und nicht mehr als 126 oder täusche ich mich ?

Re: Arbeiten mit Zeichen
Verfasst: So Mär 29, 2009 5:07 pm
von cloidnerux
darf es sich weniger als 32 und nicht mehr als 126 oder täusche ich mich ?

mehr als 31(>=) und weniger asl 127(<=).
Und ja, Punkt vor strichrechnung, also steht j für die reihen.