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

Конвертация числа в строку и обратно, условие исключения, разность. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Строка http://www.cyberforum.ru/cpp-beginners/thread190095.html
Столкнулся с проблемой: заменить все латинские буквы на *. как же задать в ифе (если итый элемент есть в буквах-исключениях) s='*'; как это сделать, кроме s=A || s=B || s=C......
C++ Почему на экран выводится цифры в формате с E (4.34e)? Добрый день! Есть следующая функция #include <iostream> using namespace std; double* test(char *A){ char ch_year ; char ch_month ; http://www.cyberforum.ru/cpp-beginners/thread190092.html
Как создать динамический массив размерностью m на n? C++
подскажите, а то я только n на n создавать умею)
не могу сделать лабораторки по инфе на языке C++ C++
помогите не получаются лабы по инфе!!! Посмотрите кто может помочь я 8 вариант! просто сроки поджимают а надо сдать 7 лабораторок по инфе!!! студент 1 курса Прикрепляйте файлы к сообщениям.
C++ Лабораторная работа по С++.Не поняла циклы http://www.cyberforum.ru/cpp-beginners/thread190066.html
дана последовательность n из вещественных чисел. Определить, образуют ли они возрастающую последовательность?
C++ Перевод числа из 10 с.с. в 8 с.с. не пойму как создать программу по переводу числа из 10 с.с. в 8 с.с. . Дали несколько задач на расчётно-графическую работу,а учитель толком не объясняет,хотя дата сдачи - через неделю. подробнее

Показать сообщение отдельно
norge_goth
62 / 62 / 7
Регистрация: 27.01.2009
Сообщений: 279
20.11.2010, 22:15     Конвертация числа в строку и обратно, условие исключения, разность.
Цитата Сообщение от Напильнег Посмотреть сообщение
Итаг, код любителя делать замечания по поводу оформления кода в полной ж..., что в общем-то было предсказуемо, хоть и не до такой степени. Мой код, правда, не дает ожидаемого принципиального выигрыша, но у него есть резерв повышения эффективности, поработаем еще.
ты наверно перепутал свой быдло-код с моим когда тестил, вот что сказал gc++:
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
 
long int funcBy_norge();
long int funcBy_Napilneg();
 
const int endSearch = 10000, startSearch = 1000;
 
int main(int argc, char *argv[])
{
 
    long int result_norge, result_Napilneg;
 
    printf("\nFunction by norge\n");
    result_norge = funcBy_norge();
    printf("\nFunction by Napilneg\n");
    result_Napilneg = funcBy_Napilneg();
 
    printf("\n Function by norge -> Time Elapsed %ld ms \n", result_norge);
 
    printf("\n Function by Napilneg -> Time Elapsed %ld ms \n", result_Napilneg);
 
    system("PAUSE");
    
    return 0;
 
}
 
long int funcBy_norge()
{
 
    DWORD StartTime, EndTime;
    StartTime = GetTickCount();
 
    int a, b, c, d; // число позиции 4-го числа abcd
    int num, rev_num;
    int difference;
    char line[5], *end;
 
    for(int j = startSearch; j < endSearch; ++j)
    {
        difference = j;
 
    //printf("\n%d\n", *end);
 
    for (a = 1; a <= 9; ++a)
        for (b = 1; b <= 9; ++b) {
            if (b == a) continue;
 
            for (c = 1; c <= 9; ++c) {
                if (c == b || c == a) continue;
 
                for (d = 1; d <= 9; ++d) {
                    if (d == c || d == b || d == a) continue;
                    {
                            // вычисляем основное число
                            sprintf(line, "%d%d%d%d", a, b, c, d);
                            sscanf(line, "%d", &num);
 
                            // вычисляем обратное число
                            sprintf(line, "%d%d%d%d", d, c, b, a);
                            sscanf(line, "%d", &rev_num);
 
                            if ((num - rev_num) == difference) {
                                printf("Number = %d\n", num);
                                //system("PAUSE");
                                //return 0;
                            }
                    }
                }
            }
        }
 
    //printf("Such difference doesn't exists\n");
 
    //printf("%d\n", sizeof(long long double));
    }
 
    EndTime = GetTickCount();
    long int times = EndTime - StartTime;
 
    return times;
}
 
long int funcBy_Napilneg()
{
    DWORD StartTime, EndTime;
    StartTime = GetTickCount();
 
    int count=0;
 
      int num, rev_num;
      int a, b, c, d;
 
      for (int k = startSearch; k < endSearch; k++) {
       num=rev_num=0;
      for (a=1; a<10; a++) {
        num+=1000; rev_num+=1;
        {;} {
          for (b=1; b<10; b++) {
            num+=100; rev_num+=10;
            if ((b!=a)) {
 
                for (c=1; c<10; c++) {
                    num+=10; rev_num+=100;
                    if ((c!=a)&&(c!=b)) {
 
                    for (d=1; d<10; d++) {
                        num+=1; rev_num+=1000;
                        if ((d!=a)&&(d!=b)&&(d!=c)) {
                            if (rev_num==(num-k))
                                count++;
                                printf("\n number %d \n", num);
                        }
                    }
 
                    num-=9; rev_num-=9000;
                    }
              }
 
              num-=90; rev_num-=900;
            }
          }
          num-=900; rev_num-=90;
        }
      }
      num-=9000; rev_num-=9;
 
      }
 
      EndTime = GetTickCount();
      long int times = EndTime - StartTime;
 
      return times;
 
}
вот результат в милисекундах:
Миниатюры
Конвертация числа в строку и обратно, условие исключения, разность.  
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru