Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Chayn1k
0 / 0 / 0
Регистрация: 28.06.2016
Сообщений: 10
#1

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

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

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

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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.08.2016, 18:45
Ответы с готовыми решениями:

скажите как записать
if ((a=b) and (b&lt;&gt;c)) or ((b=c) and (c&lt;&gt;a)) or ((a=c) and (c&lt;&gt;b)) then...

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

Скажите пожалуйста как отсортировать массив
задано массив действительных чисел отсортировать массив по убыванию

Так, норм задачка, гляньте, скажите что да как
Как-то раз Поликарп захотел узнать, кто из секретарей разговаривает по Spyke, а...

Как оптимизировать код
Доброй ночи господа у меня к вам такая просьба как можно упростить данный код?...

7
kylroma
Одессит
204 / 75 / 37
Регистрация: 30.12.2013
Сообщений: 278
Записей в блоге: 1
Завершенные тесты: 2
05.08.2016, 18:58 #2
Что программа делает?
Ну нельзя называть переменные такими именами. Ничего же не понятно.
0
Doctor123
22 / 22 / 8
Регистрация: 03.12.2013
Сообщений: 130
05.08.2016, 19:32 #3
А в чём компилировали?
И какой вес экзешника получился?
Я предлагаю в моём проекте такое делать( del ).
Можем вместе перенести - я помогу.
Заодно оптимизируем - у меня тоже есть кого учить арифметике.
Получится компактно, просто и сразу оконное приложение (без использования консоли).
0
Doctor123
22 / 22 / 8
Регистрация: 03.12.2013
Сообщений: 130
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. Моё предложение по переносу Вашей программы в мой проект по прежнему в силе...
0
Вложения
Тип файла: rar Plus_Minus.rar (89.6 Кб, 4 просмотров)
DevAlone
324 / 276 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
Завершенные тесты: 4
05.08.2016, 22:46 #5
Тут переписывать надо, а не оптимизировать...
0
Doctor123
22 / 22 / 8
Регистрация: 03.12.2013
Сообщений: 130
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
Миниатюры
Оцените и скажите как оптимизировать?   Оцените и скажите как оптимизировать?  
Chayn1k
0 / 0 / 0
Регистрация: 28.06.2016
Сообщений: 10
08.08.2016, 20:31  [ТС] #7
Doctor123, я скопировал код в dev-cpp и он материться на строку <cpp>include<Init.h></cpp>
0
Doctor123
22 / 22 / 8
Регистрация: 03.12.2013
Сообщений: 130
09.08.2016, 21:04 #8
Вам нужно будет скачать весь проект.. только, что обновил его
А текст уроков копируется на вкладку main.cpp

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

Как оптимизировать код?
Как оптимизировать код, чтобы работала программа быстрее #include &lt;iostream&gt;...

Как оптимизировать программу?
Написал программу, но по времени не проходит( Код: var a,b,c:int64; begin...

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


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

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

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