Ich hab ein Programm geschrieben das thoeretisch Rechnen kann indem man nur Zahlen und Zeichen eingibt ohne Bestätigen aber das funktioniert nicht ich dank mal es liegt an getch().Hab schon alles ausprobiert.
1 | #include <stdio.h> |
2 | #include <stdlib.h> |
3 | #include <conio.h> |
4 | |
5 | int main(int argc, char *argv[]) |
6 | {
|
7 | char Eingabe; |
8 | int sv = 0; |
9 | long b = 1; |
10 | long speichern [998]; |
11 | char zahlen [998]; |
12 | long long ergebnis = 0; |
13 | short i = 0; |
14 | int zaehle = 0; |
15 | |
16 | |
17 | for (;i != 999;) |
18 | {
|
19 | zahlen[i] = 0; |
20 | speichern[i] = 0; /*alle arrives auf null*/ |
21 | i++; |
22 | }
|
23 | i = 0; |
24 | |
25 | for (;;) /*Eingabe*/ |
26 | {
|
27 | |
28 | i = getch(); |
29 | |
30 | if (i != 61) |
31 | {
|
32 | zahlen[zaehle] = i; |
33 | zaehle++; |
34 | i=0; |
35 | }
|
36 | |
37 | |
38 | |
39 | else
|
40 | {
|
41 | break; |
42 | }
|
43 | }
|
44 | i=0; |
45 | |
46 | for (;i != ++zaehle;) /*Sortierschleife*/ |
47 | {
|
48 | if ((zahlen[i] <= 9)&(zahlen[i] >= 0)) |
49 | {
|
50 | speichern[sv] = zahlen[i] * b; |
51 | |
52 | if (b == 1) |
53 | {
|
54 | b += 9; |
55 | }
|
56 | else
|
57 | {
|
58 | b *= 10; |
59 | }
|
60 | i++; |
61 | }
|
62 | else if (zahlen[i] == 43) /*Plus*/ |
63 | {
|
64 | sv++; |
65 | speichern[sv] = 43; |
66 | sv++; |
67 | i++; |
68 | b = 0; |
69 | }
|
70 | |
71 | else if (zahlen[i] == 45)/*Minus*/ |
72 | {
|
73 | sv++; |
74 | speichern[sv] =45; |
75 | sv++; |
76 | i++; |
77 | b = 0; |
78 | }
|
79 | |
80 | else if (zahlen[i] == 42) /*Mal*/ |
81 | {
|
82 | sv++; |
83 | speichern[sv] =42; |
84 | sv++; |
85 | i++; |
86 | b = 0; |
87 | }
|
88 | |
89 | else if (zahlen[i] == 47) /*Geteilt*/ |
90 | {
|
91 | sv++; |
92 | speichern[sv] =47; |
93 | sv++; |
94 | i++; |
95 | b = 0; |
96 | }
|
97 | |
98 | else /*Credits xD*/ |
99 | {
|
100 | printf ("Was habe sie gemacht !!! \nKeine Buchstaben eingeben das hier ist ein Rechner !!!\n\n\nManager: Tobias\n\nProgammierer: Tobias\n\nDesign: Gibts ja wohl noch keins oder ?!? O_o"); |
101 | |
102 | return EXIT_FAILURE; |
103 | }
|
104 | |
105 | }
|
106 | |
107 | i = 1; |
108 | |
109 | ergebnis = speichern[0]; |
110 | |
111 | |
112 | for (;i != ++sv;) /*Ausrechnen*/ |
113 | {
|
114 | if (speichern[i] == 43) |
115 | {
|
116 | i++; |
117 | ergebnis += speichern[i]; |
118 | i++; |
119 | }
|
120 | |
121 | else if (speichern[i] == 45) |
122 | {
|
123 | i++; |
124 | ergebnis -= speichern[i]; |
125 | i++; |
126 | }
|
127 | |
128 | else if (speichern[i] == 42) |
129 | {
|
130 | i++; |
131 | ergebnis *= speichern[i]; |
132 | i++; |
133 | }
|
134 | |
135 | else if (speichern[i] == 47) |
136 | {
|
137 | i++; |
138 | ergebnis /= speichern[i]; |
139 | i++; |
140 | }
|
141 | |
142 | else /*Credits xD*/ |
143 | {
|
144 | printf ("Was habe sie gemacht !!! \n Keine zwei Rechenzeichen hintereinander eingeben !!!\n\n\nManager: Tobias \n\nProgammierer: Tobias \n\nDesign: Gibts ja wohl noch keins oder ?!? O_o"); |
145 | |
146 | return EXIT_FAILURE; |
147 | }
|
148 | }
|
149 | |
150 | printf (" = %d ",ergebnis); |
151 | return EXIT_FAILURE; |
152 | }
|
Wer hilft kriegt Ehrenplatz in Credits ;) PS: Mein Compiler ist Code::Blocks und ich hab Windows 7