Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 28.06.2016
Сообщений: 10
1

Оцените и скажите как оптимизировать?

05.08.2016, 18:45. Показов 616. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Это моя первая более мение обьемная и продуктивная программа. Написал для знакомых школьников, чтобы подтянули математику (люблю её (математику))). Какие будут советы по оптимизации, очень волнует этот вопрос.

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
67
68
69
70
71
72
73
74
75
76
#include<iostream>
#include<conio.h>
#include<math.h>
#include <stdlib.h>
#include<ctime>
#include<fstream>
using namespace std;
 
int main()
{
setlocale(0, "");
ofstream output("D://Otvet.txt", ios::app);
int a, b, s=0, p=0, np=0;
double k, o;
char x[4]={'*','-','+','/'};
int t2[10]={2, 4, 6, 8, 10, 12, 14, 16, 18, 20};
int t3[10]={3, 6, 9, 12, 15, 18, 21, 24, 27, 30};
int t4[10]={4, 8, 12, 16, 20, 24, 28, 32, 36, 40};
int t5[10]={5, 10, 15, 20, 25, 30, 35, 40, 45, 50};
int t6[10]={6, 12, 18, 24, 30, 36, 42, 48, 54, 60};
int t7[10]={7, 14, 21, 28, 35, 42, 49, 56, 63, 70};
int t8[10]={8, 16, 24, 32, 40, 48, 56, 64, 72, 80};
int t9[10]={9, 18, 27, 36, 45, 54, 63, 72, 81, 90};
char c;
srand(time(NULL));
while(s!=50)
{
    c=x[rand()%4];
 
switch(c)
{
    case '*': a=rand()%10;
          b=rand()%10;
          break;
    case '-':   b=rand()%51;
            a=rand()%51+b;
            break;
    case '+': a=rand()%101;
          b=rand()%101;
          break;
    case '/': b=rand()%10 + 2;
              if(b==2){a=t2[rand()%10];}
              if(b==3){a=t3[rand()%10];}
              if(b==4){a=t4[rand()%10];}
              if(b==5){a=t5[rand()%10];}
              if(b==6){a=t6[rand()%10];}
              if(b==7){a=t7[rand()%10];}
              if(b==8){a=t8[rand()%10];}
              if(b==9){a=t9[rand()%10];}
          break;
}
 
 
cout<<a<<' '<<c<<' '<<b<<"\nВаш ответ:";
if(c=='*'){k=a*b;}
if(c=='/'){k=a/b;}
if(c=='-'){k=a-b;}
if(c=='+'){k=a+b;}
cin>>o;
if(o==k)
{   const string stars(16,'*');
    cout<<stars<<"\n";
    cout<<"* Правильно!!! *"<<endl; p++;
    cout<<stars<<endl;
}
if(o!=k){ cout<<"Ты ошиблась"<<"\n"<<"Правельно:"<<k<<endl; np++;
}
s++;
}
cout<<"Правильных ответов:"<<p<<endl;
cout<<"Не правильных ответов:"<<np;
output<<"правильных ответов:"<<p<<"   "<<"Неправельных ответов:"<<np<<endl;
output.close();
getch(); 
return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.08.2016, 18:45
Ответы с готовыми решениями:

Оцените и скажите ваше мнение)
GigaByte GA-970A-D3 rev3.0 (RTL) SocketAM3+ &lt;AMD 970&gt; 2xPCI-E+GbLAN SATA RAID ATX 4DDR-III ...

Оцените комп и скажите норм ли по ценнику?
NVIDIA GeForce GT 1030 AMD Phenom(tm) II X6 1065 T (6 ядер ,6 потоков , 3MHZ ) 4 ГБ Оперативной...

Оцените работу, скажите пару слов (я не программист)
посмотрите здесь (нужно пройти не сложную регистрацию) http://www.biomex.ru/images/main.php

Оцените комплектующие для ПК , скажите сколько фпс будет в играх
AMD Athlon X4 860K (3.7 - 4.0 ГГц) / RAM 8 ГБ / HDD 1 ТБ / nVidia GeForce GTX1050 Ti, 4 ГБ / без ОД...

7
Одессит
243 / 88 / 44
Регистрация: 30.12.2013
Сообщений: 316
Записей в блоге: 2
05.08.2016, 18:58 2
Что программа делает?
Ну нельзя называть переменные такими именами. Ничего же не понятно.
0
22 / 22 / 8
Регистрация: 03.12.2013
Сообщений: 193
05.08.2016, 19:32 3
А в чём компилировали?
И какой вес экзешника получился?
Я предлагаю в моём проекте такое делать( del ).
Можем вместе перенести - я помогу.
Заодно оптимизируем - у меня тоже есть кого учить арифметике.
Получится компактно, просто и сразу оконное приложение (без использования консоли).
0
22 / 22 / 8
Регистрация: 03.12.2013
Сообщений: 193
05.08.2016, 22:14 4
Пока вот так оптимизировал, без использования своего проекта.
В рамках консольного приложения для MSVC 6.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
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
#include "stdafx.h"
#include<conio.h>
#include<ctime>
#include<fstream>
#include<iostream>
using namespace std;
 
int main()
{
 
setlocale(0, "");
ofstream output("D://Otvet.txt", ios::app);
int a, b, s=0, p=0, np=0;
double k, o;
char x[4]={'*','-','+','/'};
char c;
srand(time(NULL));
while(s!=50)
{
    c=x[rand()%4];
 
    switch(c)
    {
        case '*': a=rand()%10;
                  b=rand()%10;
                  break;
 
        case '-': b=rand()%51;
                  a=rand()%51+b;
                  break;
 
        case '+': a=rand()%101;
                  b=rand()%101;
                  break;
 
        case '/': b=rand()%10 + 2;
                  k = rand()%10;
                  a = k * b;
                  break;
    }
    cout<<a<<' '<<c<<' '<<b<<"\nYour answer: ";
    if(c=='*'){k=a*b;}
    if(c=='-'){k=a-b;}
    if(c=='+'){k=a+b;}
    cin>>o;
    if(o==k)
    {  
        char stars[] = "*******************";
        cout<<stars<< "\n"; 
        cout<<"* It is right !!! *"<<endl; p++;
        cout<<stars<<endl;
    }
    if(o!=k){ cout<<"This is not true"<<"\n"<<"Right:"<<k<<endl; np++;
    }
    s++;
}
cout<<"Правильных ответов:"<<p<<endl;
cout<<"Неправильных ответов:"<<np;
output<<"правильных ответов:"<<p<<"   "<<"Неправильных ответов:"<<np<<endl;
output.close();
getch(); 
return 0;
}
Прикрепляю проект для MSVC 6.0 и экзешник там же в папке релиз.
Весит 220Kb - это очень много!

P.S. Моё предложение по переносу Вашей программы в мой проект по прежнему в силе...
Вложения
Тип файла: rar Plus_Minus.rar (89.6 Кб, 5 просмотров)
0
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
05.08.2016, 22:46 5
Тут переписывать надо, а не оптимизировать...
0
22 / 22 / 8
Регистрация: 03.12.2013
Сообщений: 193
07.08.2016, 12:57 6
Перенёс в свой проект и оптимизировал. Проще и нагляднее уже, наверное, не сделать.
Вся логика находится на вкладке main.cpp
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
67
68
69
70
71
72
73
int           op_1,                                                                                 //  Первый операнд
              op_2,                                                                                 //  Второй операнд
              res_;                                                                         //  Результат (правильный)
              
char     Operati_n,
      x[] = "*-+/";
 
#include "Init.h"
 
void INIT() 
{ 
    //  Knopka_2 = 1;                 // В самом начале кнопку "Restart"  считаем нажатой для печати первого задания                                
}
 
void START()
{       
     if(Knopka_2)                                                                //  Если кнопку "Restart" нажали, то..
     {  
        Knopka_2 = 0;   
        srand(Timer_CLK);   
        SetWindowText(hwndEdit,"");                                                    // Стираем содержимое поля ввода           
        Operati_n = x[rand()%4];
        switch(Operati_n)
        {
            case '*': op_1 = rand()%10;
                      op_2 = rand()%10;
                      res_ = op_1 * op_2;
                      break;
    
            case '-': op_2 = rand()%51;
                      op_1 = rand()%51 + op_2;
                      res_ = op_1 - op_2;
                      break;
    
            case '+': op_1 = rand()%101;
                      op_2 = rand()%101;
                      res_ = op_1 + op_2;
                      break;
    
            case '/': op_2 = rand()%10 + 2;
                      res_ = rand()%10;
                      op_1 = res_ * op_2;
                      break;
        }       
        wsprintf(str, "%d %c %d = ", op_1, Operati_n, op_2);
        Print(250, 102,     str);        
        Print(76,  300, "     ");                                                           //  Стираем старые строки
        Print(76,  320, "     ");                                                           //  Стираем старые строки
        Print(76,  340, "     ");                                                           //  Стираем старые строки
     }
     
     if(Knopka_3)                                                                 //  Если кнопку  "OK"  нажали, то..
     {
        Knopka_3 = 0;                                                              //  Обнулим запись о нажатии кнопки
        
        if(Transit[2][17] == res_)                                          //  Если ответ равен результату....
        { 
            Print(76,  300, "Совершенно верно !!!"); 
            
            Print(76,  320, "Результатом будет: ", res_); 
            
            Print(76,  340, "     "); 
        } 
        else                                                                                //  Если ответ НЕправильный
        {
            Print(76,  300, "Этого не может быть, Вы опять ошиблись..."); 
            
            Print(76,  320, "Ваш ответ: ", Transit[2][17]); 
            
            Print(76,  340, "А правильный ответ = ", res_);     
        }
     }      
}
Вся обвязка убрана из поля зрения и доступ к ней очень простой ( на случай внесения правок ).
Фильтр цифр и их прокрутка скроллом в поле ввода.
Вес экзешника без иконки 25Kb (+dllBridge 77Kb).

Хотел ещё изменить фон в поле ввода (белый сильно контрастирует), но не знаю как - подскажите...
Миниатюры
Оцените и скажите как оптимизировать?   Оцените и скажите как оптимизировать?  
0
0 / 0 / 0
Регистрация: 28.06.2016
Сообщений: 10
08.08.2016, 20:31  [ТС] 7
Doctor123, я скопировал код в dev-cpp и он материться на строку <cpp>include<Init.h></cpp>
0
22 / 22 / 8
Регистрация: 03.12.2013
Сообщений: 193
09.08.2016, 21:04 8
Вам нужно будет скачать весь проект.. только, что обновил его
А текст уроков копируется на вкладку main.cpp

Добавлено через 22 часа 27 минут
Дал поиграть ребёнку 6ти лет с программой. Нашлось несколько "детских" решений для накрутки положительного результата. Ребёнок готовится к школе ( с него требуют). В общем, у него был стимул хитрить.
На данном этапе считаю, что оптимизировано всё, что можно. Дальше только увеличение функционала.
Посмотреть, что получилось здесь.[cut]
Конструктивным вопросам буду рад...
PS Счёт ограничил примерно до 30-40.
0
09.08.2016, 21:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.08.2016, 21:04
Помогаю со студенческими работами здесь

оцените ноотбук скажите фирма toshiba хорошая или нет?
Toshiba Satellite L750-1M8 (PSK30E-03N00CPL) такой вот ноотбук...

Скажите please как...
Скажите пожалуйста как преобразовать данные таблицы в массив в А2000? По-моему есть встроенная...

скажите как это называется и как его в интернетах искать
ипульсное реле, бистабильное реле или еще как? устройство должно уметь управлять нагрузкой 220В...

скажите как записать
напишите пожалуйста как записать. Здесь условие if


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru