Форум программистов, компьютерный форум CyberForum.ru

Программа, вычисляющая значение выражения.(Работа со строками) - C++

Восстановить пароль Регистрация
 
zorn16
0 / 0 / 0
Регистрация: 30.12.2009
Сообщений: 36
19.05.2010, 19:19     Программа, вычисляющая значение выражения.(Работа со строками) #1
Написать программу, которая вычисляет значение выражения N2O1N2O1...O1N2, где N2 - целое одноразрядное, O1 - один из двух знаков простейших арифметических действий: сложения(+) или вычитания(-).

Рекомендуемый вид экрана во время работы программы:
9-5+4+2-6
Значение выражения: 4
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dyosick
 Аватар для dyosick
61 / 61 / 6
Регистрация: 25.08.2008
Сообщений: 178
19.05.2010, 20:55     Программа, вычисляющая значение выражения.(Работа со строками) #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <cstring>
 
using namespace std;
 
int main()
{
   char st[100];
   int i=0;
   int sum;
   
   cout<<"Enter a string : ";
   cin>>st;
   sum=static_cast<int>(st[i++])-48;
   
   while(st[i]!=NULL)
   {
      int temp=static_cast<int>(st[i+1])-48;
      
      if(st[i]=='+')
         sum+=temp;
      else
         sum-=temp;
      
      i+=2;                       
   }
 
   cout<<"\n\nSum = "<<sum<<endl;
   system("pause");    
   return 0;
}
zorn16
0 / 0 / 0
Регистрация: 30.12.2009
Сообщений: 36
19.05.2010, 21:35  [ТС]     Программа, вычисляющая значение выражения.(Работа со строками) #3
dyosick, ваше решение понятно. А что если так: (?)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <stdio.h>
#include <conio.h>
#include "stdlib.h"
void main ()
{
char st[40]; 
char buf[10]; 
char op; 
int rez; 
int n; 
int i,j;
printf("Vvedite arifmeticheskoe virazhenie,\n");
printf("naprimer, 45+5-3-125+2 i nazhmite <Enter>");
printf("->");
scanf("%s", &st);
rez = 0; 
op = ' ';
i = j = 0;
while( st[i] )
{
 
j = 0;
while (st[i] >= '0' && st[i] <= '9')
buf[j++] = st[i++];
buf[j] = '\0';
n = atoi(buf); /
switch ( op )
{
case '+': rez += n; break;
case '-': rez -= n; break;
case ' ': rez = n; break; 
}
ор = st[i++];
}
printf("nZnachenie vvedennogo virazhenia: %d", rez);
printf("\press <Enter>");
getch();
}
код вроде бы правильный, но при компиляции проблемы...
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
20.05.2010, 05:04     Программа, вычисляющая значение выражения.(Работа со строками) #4
Цитата Сообщение от zorn16
при компиляции проблемы
C
1
scanf("%s", st);
C
1
n = atoi(buf);
edd
36 / 36 / 0
Регистрация: 13.05.2010
Сообщений: 81
20.05.2010, 15:43     Программа, вычисляющая значение выражения.(Работа со строками) #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
 
int main ()
{   int x ,z, y=0; 
    char *l;
    char ch[256];
    cin>>ch;
    for(int i=0 ; ch[i]; i++){
    switch (ch[i]){
        case '-' : l="minus";continue;
        case '+' : l="plus";continue;
        case '0':   
        case '1':
        case '2':
        case '3':
            cin.putback(ch[i]);
            cin>>x;
            if (l=="minus") {y-=x; z=y; continue;}
            if (l=="plus") {y+=x; z=y; continue;}
            y=x;}}
    cout<<z<<endl;
    return 0;}
Yandex
Объявления
20.05.2010, 15:43     Программа, вычисляющая значение выражения.(Работа со строками)
Ответ Создать тему
Опции темы

Текущее время: 09:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru