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

Нужно отредактировать код - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Функция: найти среднеквадратичное значение положительных элементов каждой строки матрицы http://www.cyberforum.ru/cpp-beginners/thread835196.html
Дан массив а<8,5> с использованием функции найти среднеквадратичное значение положительных элементов каждой строки массива Добавлено через 10 часов 48 минут Ребята хоть идею дайте?
C++ Функция, которая аннулирует двумерный динамический массив Здравствуйте! Подскажите пожалуйста функцию которая аннулирует двумерный динамический массив. Заранее благодарна. http://www.cyberforum.ru/cpp-beginners/thread835189.html
C++ Функция find
Что значит строчка: if(s.find(str,0) != -1)
C++ В главной функции main () ввести входные данные, и вызвав собственные функции, вычислить значение выражения и вывести результаты.
задание: 1. В главной функции main () ввести входные данные, и вызвав собственные функции, вычислить значение выражения и вывести результаты. Вычислить B = f (x, k, y) +0.8 f2 (x, y, y-k), при k = 0.6, x = 3.8, y = 0.042, если f (x, y, z) = 2y + x +4 z2 Заранее спасибо.
C++ Помочь в написании программы. (С матрицами) http://www.cyberforum.ru/cpp-beginners/thread835145.html
Здравствуйте, дорогие форумчане. ----------------------------------- Мне нужна ваша помощь. ----------------------------------- Не могу написать программу. Поможете, пожалуйста, реализовать? ----------------------------------- С меня много плюсов. Задание прикрепил на скрине. Заранее спасибо.
C++ Двухмерный массив (Определить сумму элементов, минимум среди сумм элементов диагоналей) Дана квадратная матрица!!! Определить 1)сумму элементов в тех строках которые не содержат отрицательных элементов. 2)минимум среди сумм элементов диагоналей параллельных главной диагонали матрицы. подробнее

Показать сообщение отдельно
abit
 Аватар для abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
11.04.2013, 23:38     Нужно отредактировать код
Цитата Сообщение от Ксения7 Посмотреть сообщение
если вам не сложно,то можно было бы сделать для чисел >9,для вещественных чисел пожалуй не стоит)))
не сложно, но учтите, что операции "/" не существует для целых чисел, есть div ( целочисленное деление - и выполнятся она так, что , остаток от деления будет откидываться...

вот набросал код, который работает с любыми числам < 2^32
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <iostream>
#include <sstream>
#include <string>
#include <stack>
 
int main()
{
std::stack <int> st;
std::string s="1 2 +4 *3 +",str;
char symb;
int secoper,firoper,value;
std::size_t n_s = 0;
for (int i=0;i<=s.size() ;i++)
{
    symb = s[n_s];
    ++n_s;
    switch (symb)
                {
                case '+':
                        secoper=st.top();
                        st.pop();
                        firoper=st.top();
                        st.pop();
                        value=secoper+firoper;
                        st.push(value);
                        break;
                case '-':
                        secoper=st.top();
                        st.pop();
                        firoper=st.top();
                        st.pop();
                        value=secoper-firoper;
                        st.push(value);
                        break;
                case '/':
                        secoper=st.top();
                        st.pop();
                        firoper=st.top();
                        st.pop();
                        value=secoper/firoper;
                        st.push(value);
                        break;
                case '*':
                        secoper=st.top();
                        st.pop();
                        firoper=st.top();
                        st.pop();
                        value=secoper*firoper;
                        st.push(value);
                        break;
                case ' ': 
                          {
                              int num;
                              std::stringstream(str) >> num;
                              st.push(num);
                              str = "";
                          }
                case 0 : break;
                 default : str += symb;
                }
 
}
    std::cout<<st.top()<<std::endl;
    system("pause");
    return 0;
}
проверил работает как с "1 2 +4 *3 +"
так и с "11 23 +45 *32 +" = 1562
а это так (если разобрать обратную польскую натацию):
(11+23)*45+32= 1562
 
Текущее время: 00:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru