Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2013, 15:04   #1
three_cats
Форумчанин
 
Аватар для three_cats
 
Регистрация: 27.09.2012
Сообщений: 175
Счастье Программа развития счета в уме

Эта простая программа реально устанавливает калькулятор в ваше сознание!

Код:
#include <iostream>
#include <time.h>
#include <string>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <sstream>
#include <math.h>

using namespace std;

int main() { // MAIN
int g = 0;
int r = 0;
int d = 0;
int a = 0;
int b = 0;
float c = 0;
float e = 0;
float res = 0;
float rsl = 0;
int tm = 0;
string rst;
int tme0 = 0;
int tme1 = 0;
stringstream ss;

srand(static_cast<unsigned int> (time(NULL)));
cout << "Выберите игру(-2,-1,0,1,2): ";
cin >> g;
if (g < -2 || g > 2) { // -1
cout << "Ошибка! (g = 0!)";
g = 0;     
} // -1
cout << "Выберите диапазон: (-2,-1,0,1,2): ";
cin >> d;
if (d < -2 || d > 2) { // -2
cout << "Ошибка! (d = 0!)";
d = 0;      
} // -2

if (d == -2) r = 100; else
if (d == -1) r = 1000; else
if (d == 0) r = 10000; else
if (d == 1) r = 100000; else
if (d == 2) r = 1000000;


while (true) { // GL
      
if (g == -2) { // 0
a = rand() % r;      
b = rand() % r;     
} // 0

if (g == -1) { // 1
a = rand() % r;
b = rand() % r;
c = rand() % r;      
} // 1

if (g == 0) { // 2
a = rand() % r;  
b = rand() % r;      
c = rand() % r;
e = rand() % r;
} else  // 2
if (g == 1) { // 3
a = rand() % r;
b = rand() % r + rand() % r;
c = rand() % r * (rand() % 5 + 2);
e = (rand() % r - rand() % r) / (rand() % 5 + 2);       
} else // 3
if (g == 2) { // 4
a = (rand() % r) * 2;
b = (rand() % r + rand() % r) * (rand() % 3) + 2;
c = ((rand() % r) * (rand() % 5 + 2)) / (rand() % 5 + 2);
e = rand() % r + ((rand() % 5 + 2) / (rand() % r));     
} // 4

tm = rand() % 3;

if (g == -2) { // 5
   if (tm == 0) { // 6.5
   rsl = a + b;
   ss << a << " + " << b << " = ";
   rst = ss.str();       
   ss.str("");
   } // 6.5
   if (tm == 1 || tm == 2) { // 6
   rsl = a - b;
   ss << a << " - " << b << " = ";
   rst = ss.str();      
   ss.str("");
   } // 6
   }  // 5

if (g == -1) { // 7
   if (tm == 0) { // 7.5
   rsl = a + b + c;
   ss << a << " + " << b << " + " << c << " = ";
   rst = ss.str();       
   ss.str("");
   } // 7.5
   if (tm == 1) { // 8
   rsl = a - b + c;
   ss << a << " - " << b << " + " << c << " = ";
   rst = ss.str();       
   ss.str("");
   } // 8
   if (tm == 2) { // 9
   rsl = a - b - c;
   ss << a << " - " << b << " - " << c << " = ";
   rst = ss.str();       
   ss.str("");
   } // 9
} // 7

if (g == 0) { // 10
   if (tm == 0) { // 11
   rsl = a + b + c + e;   
   ss << a << " + " << b << " + " << c << " + " << e << " = ";
   rst = ss.str();       
   ss.str("");
   } // 11
   if (tm == 1) { // 12
   rsl = a + b - c + e;  
   ss << a << " + " << b << " - " << c << " + " << e << " = ";
   rst = ss.str();       
   ss.str("");
   } // 12
   if (tm == 2) { // 13
   rsl = a + b - c - e;   
   ss << a << " + " << b << " - " << c << " - " << e << " = ";
   rst = ss.str();     
   ss.str("");
   } // 13  
   } // 10

int rnn = (rand() % 2 + 2);

if (g == 1) { // 14
   if (tm == 0) { // 15
   rsl = (a + b + c + d + e) * rnn;   
   ss << "(" << a << " + " << b << " + " << c << " + " << e << ") * " << rnn << " = ";   
   rst = ss.str();       
   ss.str("");
   } // 15
   if (tm == 1) { // 16
   rsl = (a + b - c - e) * rnn + (rnn * a);   
   ss << "(" << a << " + " << b << " - " << c << " - " << e << ") * " << rnn << " + " << rnn << " * " << a << " = ";   
   rst = ss.str();       
   ss.str("");
   } // 16
   if (tm == 2) { // 17
   rsl = (a - b - c + e) / rnn * (a + b);   
   ss << "(" << a << " - " << b << " - " << c << " + " << e << ") / " << rnn << " * (" << a << " + " << b << ") = ";
   rst = ss.str();       
   ss.str("");
   } // 17
} // 14

if (g == 2) { // 18
   if (tm ==0) { // 19
   rsl = (a / b + c / e) * rnn;
   ss << "(" << a << " / " << b << " + " << c << " / " << e << ") * " << rnn << " = ";         
   rst = ss.str();       
   ss.str("");
   } // 19     
   if (tm ==1) { //20
   rsl = (a * b + c * e) * rnn;
   ss << "(" << a << " * " << b << " + " << c << " * " << e << ") * " << rnn << " = ";         
   rst = ss.str();       
   ss.str("");
   } // 20
   if (tm ==2) { // 21
   rsl = (a * b + c / e) * rnn;
   ss << "(" << a << " * " << b << " + " << c << " / " << e << ") * " << rnn << " = ";         
   rst = ss.str();       
   ss.str("");
   } // 21     
} // 18
      
cout << rst;
tme0 = time(NULL);
cin >> res;

if (res == rsl) { // 22      
tme1 = time(NULL);
cout << "Верно! " << tme1 - tme0 << " sec." << endl;      
} else // 22
cout << "Неверно! Правильный ответ - " << rsl << ", погрешность = " << fabs(res-rsl) << endl;

} // GL
    
cout << "Нажмите любую клавишу...";
_getch();
return 0;    
} // MAIN
Никто

мой блог
three_cats вне форума Ответить с цитированием
Старый 24.02.2013, 19:54   #2
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

И че? Нам нужно полюбоваться на код?
coNsept вне форума Ответить с цитированием
Старый 24.02.2013, 22:27   #3
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Цитата:
Сообщение от coNsept Посмотреть сообщение
И че? Нам нужно полюбоваться на код?
Вы непонятливый. Вам нужно в уме все скомпилировать, посчитать и сверить с правильными результатами. Это же программа для развития счета в уме!
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Старый 25.02.2013, 19:25   #4
three_cats
Форумчанин
 
Аватар для three_cats
 
Регистрация: 27.09.2012
Сообщений: 175
Радость

Нет-нет! Можно не любоваться! Скомпильте и посмотрите!
Никто

мой блог
three_cats вне форума Ответить с цитированием
Старый 26.02.2013, 02:29   #5
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

1 нету выхода из цикла while (или это я плохо умею в уме все скомпилировать)
2 желательно добавить изменчивость операций и количества вычисляемых чисел, чтоб для интереса.
Т.е., выводится несколько чисел (количество их задается пользователем, или не задается, тогда берется количество по умолчанию, например 3 числа), между которыми случайно рисуется либо плюс, либо минус, либо что-то другое.
3
Код:
cout << "Выберите игру(-2,-1,0,1,2): ";
cin >> g;
if (g < -2 || g > 2) { // -1
cout << "Ошибка! (g = 0!)";
g = 0;     
}
выводимый текст ошибки странным не кажется?

UPD 4 больше из собственного любопытства, можете объяснить алгоритм грубого деления в уме? Сложение прекрасно понимаю, вычитание чуть похуже, умножение - со скрипом, но едет, а вот с делением полная темнота.
Например, надо разделить 665 на 37. Понимаю, что ответ будет между 800/40 = 20 и 400/40 = 10. Но ближе к какому краю этого интервала (20, 10), не понимаю.

Последний раз редактировалось Smogg; 26.02.2013 в 16:24.
Smogg вне форума Ответить с цитированием
Старый 12.03.2013, 05:29   #6
three_cats
Форумчанин
 
Аватар для three_cats
 
Регистрация: 27.09.2012
Сообщений: 175
По умолчанию

По поводу 3 пункта - там если вводимое значение вне диапазона, переменной g присваивается значение 0.

Насчет умножения и деления есть в интернете.
Я пока просто складываю, вычитаю и умножаю.

Спасибо за замечания!
Никто

мой блог
three_cats вне форума Ответить с цитированием
Старый 12.03.2013, 12:28   #7
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
main.cpp:5:19: fatal error: conio.h: Нет такого файла или каталога
compilation terminated.
это мелочь, а вцелом код меня пугает. Да, с самого начала.

Было бы веселее засечь время и выводить юзеру статистику (а-то вдруг я постепенно начну вычитать быстрее и не узнаю об этом )
rrrFer вне форума Ответить с цитированием
Старый 12.03.2013, 14:07   #8
three_cats
Форумчанин
 
Аватар для three_cats
 
Регистрация: 27.09.2012
Сообщений: 175
По умолчанию

rrrFer, там засекается время! В случае правильного ответа, программа выводит секунды.
А что, кстати, страшного в коде? Мое сознание просто тогда хорошенько на нем разгулялось
Никто

мой блог

Последний раз редактировалось three_cats; 12.03.2013 в 14:11.
three_cats вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Системы счисления и переводы в уме bitix Свободное общение 37 17.12.2012 20:41
обучающая программа для развития информационного виденья Бурмистров Фриланс 5 20.01.2011 21:27
Инструкция по пополнению счета WM. Alex Cones Фриланс 11 10.01.2010 16:50
цикл для счета сергей4 Фриланс 3 21.10.2009 09:57
Открытие счета PayPal Slavik Свободное общение 4 26.09.2009 21:15