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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
кверти
4 / 4 / 1
Регистрация: 22.09.2013
Сообщений: 154
Завершенные тесты: 2
#1

Дана строка вида а1-а2+а3-а4+а5...Посчитать значение при обработке данной строки - C++

12.03.2014, 11:00. Просмотров 353. Ответов 3
Метки нет (Все метки)

Задача : дана строка вида а1-а2+а3-а4+а5 ..... Посчитать чему = значение при обработке данной строки.
______________________
Например :
Входные данные : 1-1+1-1
Выходные данные: 0
______________________
Помогите доработать этот код.Не правильно вычисляет и не могу придумать условие чтобы проверить чередуется знак или нет.
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 <iostream>
#include <string.h>
#include <windows.h>
 
void main()
{
    SetConsoleOutputCP(1251);
 
    char q[80]; // Строка.
    int n=0, // Сумма.
        i=0; // Счетчик цикла.
    int len=0;//Количество символов в строке.
 
    printf("Введите строку: ");
    gets(q);
    
    len = strlen(q);
    while (q[i] >= 48 || q[i] <= 57 || q[i] == 43 || q[i] == 45 )
    {
        if (i == 0)
        {
            n = q[i]-48;
            i++;
            continue;
        }
        if (q[i] != 43 && q[i] != 45)
        {
            if ((i % 2) == 0) n-=q[i]-48; 
            else n+=q[i]-48;
        }
        i++;
        if (i >= len ) break;
    }
    printf("%i\n",n);
 
    system("pause");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.03.2014, 11:00     Дана строка вида а1-а2+а3-а4+а5...Посчитать значение при обработке данной строки
Посмотрите здесь:

Дана строка, состоящая из M попарно различных символов. Вывести все перестановки символов данной строки. - C++
Дана строка, состоящая из M попарно различных символов. Вывести все перестановки символов данной строки. Ввод В первой строке файла...

Дана строка вида «Фамилия Имя Отчество». Получить строку вида Имя Отчество - C++
Дана строка вида «Фамилия Имя Отчество». Получить строку вида Имя Отчество

Дана строка вида отдел_фамилия_оклад. Пробелов может быть несколько.Получить из нее название_отдела,оклад - C++
дана строка вида отдел_фамилия_оклад пробелов может быть несколько получить: - название_отдела(string) оклад(int)

Дана строка символов. Выяснить имеются ли в данной строке рядом стоящие запятая и тире - C++
Помогите написать пожалуйста программу: &quot;Дана строка символов. Выяснить имеются ли в данной строке рядом стоящие запятая и тире.&quot; ...

В данной строке символов посчитать количество вхождений данной буквы - C++
Указатели и строки. 1) В данной строке символов посчитать кол-во данной буквы 2) Дана последовательность слов, найти кол-во слов в...

Дана строка, изображающая арифметическое выражение. Вывести значение - C++
помогите пожалуйста решить 1)Дана строка, изображающая арифметическое выражение вида «&lt;циф- ра&gt;±&lt;цифра&gt;±…±&lt;цифра&gt;», где на месте ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
jurok_85
241 / 224 / 77
Регистрация: 21.02.2013
Сообщений: 518
Завершенные тесты: 1
12.03.2014, 18:55     Дана строка вида а1-а2+а3-а4+а5...Посчитать значение при обработке данной строки #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
char q[80]; // Строка.
    int n=0, // Сумма.
        i=0; // Счетчик цикла.
       
    int len=0;//Количество символов в строке.
    bool token;
    printf("vvedite stroku: ");
    gets(q);
 
    len = strlen(q);
   while (q[i] >= 48 || q[i] <= 57 || q[i] == 43 || q[i] == 45 )
    {
        if (i == 0)
        {
            n = q[i]-48;
            i++;
            continue;
        }
        if(q[i] == 43)
        token = true;
        if(q[i] == 45)
        token = false;
        if (q[i] != 43 && q[i] != 45)
        {
            if (!token) n-=q[i]-48;
            else n+=q[i]-48;
        }
        i++;
        if (i >= len ) break;
    }
    printf("%i\n",n);
кверти
4 / 4 / 1
Регистрация: 22.09.2013
Сообщений: 154
Завершенные тесты: 2
13.03.2014, 07:35  [ТС]     Дана строка вида а1-а2+а3-а4+а5...Посчитать значение при обработке данной строки #3
Спасибо. Вот еще немного доработал и осталось сделать чтобы проверялось что знак чередуется в противном случае прервать цикл. Не могу сообразить как. может token использовать для этого?
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
39
40
41
42
43
44
45
46
47
48
49
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <windows.h>
#define N 200
 
void main()
{
    SetConsoleOutputCP(1251);
 
    char q[N]; // Строка.
    int n=0; // Сумма.
    int len=0;//Количество символов в строке.
    bool token; // Для определения операции.
    bool sost=0; //Для правильного вывода.
    printf("Введите строку: ");
    gets(q);
 
    len = strlen(q);
 
    for (int i = 1;i<=len;i++)
    {
        if ((q[i] >= 48 && q[i] <= 57) || q[i] == 43 || q[i] == 45 )
        {
            sost = 1;
            if (i == 0)
            {
                n = q[i]-48;
                continue;
            }
            if(q[i] == 43)
            token = true;
            if(q[i] == 45)
            token = false;
            if (q[i] != 43 && q[i] != 45)
            {
                if (!token) n-=q[i]-48;
                else n+=q[i]-48;
            }
        }else 
        {
            sost = 0;
            break;
        }
    }
    if (sost == 1) printf("Результат = %i\n",n);
    else printf("Строка введена неверно!\n");
    system("pause");
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2014, 13:25     Дана строка вида а1-а2+а3-а4+а5...Посчитать значение при обработке данной строки
Еще ссылки по теме:

Задачка на строки.Дана строка, состоящая из слов - C++
Дана строка, состоящая из слов (словом считать группу символов, начинающуюся и заканчивающуюся пробелом, или знаками препинания). Вывести...

Дана строка. Удалить из строки повторные слова. - C++
Дана строка. Группы символов, разделенные пробелами(одним или несколькими) и не содержащие пробелов внутри себя, будем называть словами....

Дана строка, изображающая арифметическое выражение. Найти значение выражения - C++
дана строка, изображающая арифмитическое вырожение вида &quot;&lt;число&gt;+или-&lt;число&gt;+или-&lt;число&gt;+или-.....&lt;число&gt;+или-&gt;&quot; где на месте знака...

Дана строка s, содержащая n символов s1, s2, . , sn,. Зеркальное отражение строки - C++
Дана строка s, содержащая n символов s1, s2, ... , sn,. Если эта строка является Палиндромом то есть s1 = sn, s2= sn-1..., то оставить...

Дана строка из букв и цифр. Удалить из строки все буквы. C++ - C++
Дана строка из букв и цифр. Удалить из строки все буквы.

Дана строка, состоящая из слов, разделенных пробелами, в конце строки - точка - C++
Дана строка, состоящая из слов, разделенных пробелами, в конце строки - точка. Определить, сколько в строке слов, содержащих честное число...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
jurok_85
241 / 224 / 77
Регистрация: 21.02.2013
Сообщений: 518
Завершенные тесты: 1
13.03.2014, 13:25     Дана строка вида а1-а2+а3-а4+а5...Посчитать значение при обработке данной строки #4
токен не думаю, можно по другому:
C++
1
 int test = 0; // проверка чередования знаков
и в цикле:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
 if(q[i] == 43){
        token = true;
        test++;
        }
        if(q[i] == 45){
        token = false;
        test--;
        }
        if(test < -1 || test > 1)
        {
             printf ("%s \n", "Ne vernoe 4eredovanie znakov");
            return 0;
        }
Yandex
Объявления
13.03.2014, 13:25     Дана строка вида а1-а2+а3-а4+а5...Посчитать значение при обработке данной строки
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru