Hej.
Jeg er igang med at lave en lommeregner i C. Det er første gang jeg rigtig arbejder med det, og jeg er kørt lidt fast.
Jeg har den her kode:
#include <conio.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#define BUFSIZE 100
int main(void){
char ch = 0;
char count = 0;
char counta = 0;
char countb = 0;
char regnetegn;
char buffer[BUFSIZE];
char tala[BUFSIZE];
char talb[BUFSIZE];
float a,b;
for( count = 0; count < BUFSIZE; count++){
buffer[count] = '\\0';
tala[count] = '\\0';
talb[count] = '\\0';
}
count = 0;
clrscr();
printf("Input a string:");
gotoxy(1,2);
// Indtast tal i buffer
while (ch != '\\r'){
ch = getch();
if (ch == '\\b'){
putch(ch);
putch(' ');
if (count != 0){
count--;
}
}
else{
if (ch != '\\r'){
buffer[count++] = ch;
}
}
putch(ch);
if (count == BUFSIZE){
count = 0;
}
}
// Sorter tal i 2 buffer
count = 0;
counta = 0;
countb = 0;
while (buffer[count] != '\\0'){
if( (buffer[count] >= '0') && (buffer[count] <= '9')){
tala[counta++] = buffer[count++];
}
else if( (buffer[count] == ',') || (buffer[count] == '.')){
tala[counta++] = buffer[count++];
}
else{
switch (buffer[count]){
case '+': regnetegn = buffer[count]; break;
case '-': regnetegn = buffer[count]; break;
case '*': regnetegn = buffer[count]; break;
case '/': regnetegn = buffer[count]; break;
default: regnetegn = '\\0'; break;
}
}
}
}
Når der er skrevet et tal, fx 55,67+25,89, kører den i en lykke, hvor den hente alle de første tal ned i en ny buffer (tala), indtil den støder på et regnetegn, fx '+'. Så gemmer den regnetegnet, og nu skal jeg så have den til at hente det sidste tal, altså 25,89, ind i talb.
Jeg kender ikke så meget til point systemet herinde, så jeg starter lige ud med 100 point.
mfg / mit freundlichen grüßen
spoonie
[Redigeret d. 28/04-04 23:37:21 af spoonie]