LINUX.ORG.RU

Ответ на: комментарий от anonymous

Помогите распознать с помощью SWITCH переключателя являуеся ли аргумент (набором цифр) числом или нет.

if(argc > i++){ while (argv[--argc] > argv[i]){ *ar = &argv[i]; switch (ar){ case (isdigit (ar)): push (atof(ar)); i++; break;

ban
() автор топика
Ответ на: комментарий от anonymous

Помогите распознать с помощью SWITCH переключателя являуеся ли аргумент (набором цифр) числом или нет.

if(argc > i++){
while (argv[--argc] > argv[i]){
*ar = &argv[i];
switch (ar){
case (isdigit (ar)):
push (atof(ar));
i++;
break;

Но так не компилируется т. к. после CASE ошибка. Покажите верное решение.

ban
() автор топика
Ответ на: комментарий от anonymous

#include <stdio.h> #include <ctype.h> #include <stdlib.h>

void push (int); int pop (void);

int main (int argc, int *argv[]) { int *ar, op2, i = 1; if(argc > i++){ while (argv[--argc] > argv[i]){ *ar = argv[i]; switch (isdigit (ar)){ case 0: push (atof(ar)); i++; break; default: switch (ar){ case '+': push (pop() + pop()); i++; break; case '*': push (pop() * pop()); i++; break; case '-': op2 = pop(); push (pop() - op2); i++; break; case '/': op2 = pop(); push (pop() - op2); i++; break; default: printf("can't find this operation :-(\n"); break; } break; } } printf("%d\n", pop()); } else printf("error: write incurrect. Use format: calk 5 4 +\n"); }

#define MAXVAL 100 static int sp = 0; int val [MAXVAL];

void push (int d) /* kladem v stek*/ { if (sp < MAXVAL) val[sp++] = d; else printf ("stack is full\n"); }

int pop (void) /* berem iz steka*/ { if (sp > 0) return val[--sp]; else printf ("stack is PUST\n"); }

Не пашет переключатель switch. Помогите.

ban
() автор топика
Ответ на: комментарий от ban

#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>

void push (int);
int pop (void);

int main (int argc, int *argv[])
{
int *ar, op2, i = 1;

if(argc > i++){
while (argv[--argc] > argv[i]){
*ar = argv[i];

switch (isdigit (ar)){
case 0:
push (atof(ar));
i++;
break;
default:
switch (ar){
case '+':
push (pop() + pop());
i++;
break;
case '*':
push (pop() * pop());
i++;
break;
case '-':
op2 = pop();
push (pop() - op2);
i++;
break;
case '/':
op2 = pop();
push (pop() - op2);
i++;
break;
default:
printf("can't find this operation :-(\n");
break;
}
break;
}
}
printf("%d\n", pop());
}
else
printf("error: write incurrect. Use format: calk 5 4 +\n");
}

#define MAXVAL 100
static int sp = 0;
int val [MAXVAL];

void push (int d) /* kladem v stek*/
{
if (sp < MAXVAL)
val[sp++] = d;
else
printf ("stack is full\n");
}

int pop (void) /* berem iz steka*/
{
if (sp > 0)
return val[--sp];
else
printf ("stack is PUST\n");
}

Не пашет переключатель switch. Помогите.

ban
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.