С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

12.03.2014, 11:00. Просмотров 368. Ответов 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");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.03.2014, 11:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Дана строка вида а1-а2+а3-а4+а5...Посчитать значение при обработке данной строки (C++):

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

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

Дана строка символов S. Посчитать наибольшее число букв «а», идущих подряд в данной строке - PascalABC.NET
Дана строка символов S. Посчитать наибольшее число букв «а», идущие подряд в данной строке.

Дана исходная строка. Удалить из данной строки все начальные пробелы - PHP
Здравствуйте. У меня есть несколько задач, но вроде как в одной теме нельзя размещать несколько заданий... Одно из заданий:Дана исходная...

Дана строка, состоящая из М символов. Вывести все перестановки символов данной строки - Pascal
Помогите пожалуйста с решением задачи. (Pascal) Дана строка, состоящая из М символов. Вывести все перестановки символов данной строки. ...

Дана строка символов, состоящая из букв и цифр. Вывести на экран число, состоящее их цифр данной строки - Pascal ABC
Дана строка символов, состоящая из букв и цифр. Вывести на экран число, состоящее их цифр данной строки.

3
jurok_85
241 / 225 / 78
Регистрация: 21.02.2013
Сообщений: 520
Завершенные тесты: 1
12.03.2014, 18: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
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);
0
кверти
4 / 4 / 1
Регистрация: 22.09.2013
Сообщений: 166
Завершенные тесты: 2
13.03.2014, 07:35  [ТС] #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");
}
0
jurok_85
241 / 225 / 78
Регистрация: 21.02.2013
Сообщений: 520
Завершенные тесты: 1
13.03.2014, 13:25 #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;
        }
0
13.03.2014, 13:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2014, 13:25
Привет! Вот еще темы с ответами:

дана действительная квадратная матрица порядка n.Получить X1*Xn + X2*Xn-1 +...+ Xn*X1 ,где Xk -наибольшее значение элементов к-ой строки данной матри - Turbo Pascal
дана действительная квадратная матрица порядка n.Получить X1*Xn + X2*Xn-1 +...+ Xn*X1 ,где Xk -наибольшее значение элементов к-ой строки...

При обработке события onClick для поля строки значение readOnly для всей строки сбросить в false - Web
Есть таблица, у которой каждая ячейка - поле типа &lt;input type=text&gt;. В этом поле первоначально задано свойство readOnly=true. Как сделать...

Как сделать так, чтобы при обработке события onClick для поля строки значение свойства readOnly становилось бы false для всей строки? - C# ASP.NET
Есть таблица, у которой каждая ячейка - поле типа &lt;input type=text&gt; (где value берется из БД). В этом поле первоначально задано свойство...

Машина Тьюринга. Дана строка вида 111+1111 - Теория автоматов
2)Дана строка вида 111+1111(единичная СС). Найти сумму(В данном случае это 1111111) Заранее спасибо


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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