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

[Длинная арифметика]Обращение к большому индексу - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Dev C++ http://www.cyberforum.ru/cpp-beginners/thread290982.html
Помогите пожалуйста решить номера задач (2 и 3) в 7 варианте! в проге Dev C++ файл приложил в виде фото...
C++ итератор скажите как в этой задачи перевести десятичное число в двоичное??? вот условие задачи!!! вот код!! main.h #include <cstdlib> #include <iostream> #include <conio.h> #include "long.h" http://www.cyberforum.ru/cpp-beginners/thread290974.html
Сумма цифр натурального числа посредством рекурсии C++
Необходимо найти сумму цифр натурального числа используя отдельную функцию с рекурсией. Пару программ писал на простое нахождение суммы цифр натурального числа, а как должно выглядеть с рекурсией - не понимаю. Помогите пожалуйста.
C++ двоичная система
перевод из десятичной в двоичную скажите как записать результат в обратном порядке!! #include <iostream> #include <string> using namespace std; void fuck(const int num, string &snum){ if (num%2==0) snum+="0";
C++ Составить программу подсчитывающую число посещений в поликлинике врачей-специалистов (отоларинголога, окулиста и хирурга) http://www.cyberforum.ru/cpp-beginners/thread290951.html
3. Составить программу подсчитывающую число посещений в поликлинике врачей-специалистов (отоларинголога, окулиста и хирурга). В конце дня выдавать итоговое сообщение. В начале работы программы должна вводиться дата, которая будет фигурировать в итоговом сообщении. Использовать множественный выбор.
C++ Составить программу для обработки результатов кросса на 500 м для женщин. Составить программу для обработки результатов кросса на 500 м для женщин. В кроссе участвует не более 100 студенток. Для каждой участнице ввести фамилию, цифр группы фамилию преподавателя, результат получить результирующую таблицу, упорядоченную по результатам, в которой содержится также информацию о выполнении нормы ГТО. Определить суммарное количество студенток, выполнивших норму ГТО. подробнее

Показать сообщение отдельно
eXXXXXXXXXXX
30 / 30 / 3
Регистрация: 24.02.2011
Сообщений: 126
08.05.2011, 20:50     [Длинная арифметика]Обращение к большому индексу
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
#include <fstream>
using namespace std;
const int N=421;
ifstream in("INPUT.TXT");
ofstream out("OUTPUT.TXT");
char *div(char *s,int length,char *t,int *mod)
{
    int ind=0,curnum=0,indt=0;
    t[0]='0';
    t[1]=0;
    if ((s[0]-'0')<3)
    {
        if (length==1)
        {
            *mod=s[0]-'0';
            return t;
        }
        else
        {
            curnum=(s[0]-'0')*10+s[1]-'0';;
            ind=1; 
        }
    }
    else
        curnum=s[0]-'0';
    for(;;)
    {
        t[indt++]=(curnum)/3+'0';
        ind++;
        if (ind==length)
            break;
        curnum=(curnum%3)*10+s[ind]-'0';     
    }
    t[indt]=0;
    *mod=curnum%3;
    return t;
}
char *to3(char *s)
{
    char *t=new char[N],*tmp=new char[N];;
    int l=0,mod;
    while(s[0]!='0')
    {
        div(s,strlen(s),tmp,&mod);
        strcpy(s,tmp);
        t[l++]=mod+'0';
    }
    t[l]=0;
    strrev(t);
    strcpy(s,t);
    delete[] tmp;
    delete[] t;
    return t;
}
char *dec(char *s)
{
    int ost;
    int tmp;
    char t[N];
    if (s[strlen(s)-1]=='0')
    {
        s[strlen(s)-1]='9';
        s[strlen(s)-2]--;
    }
    else
    {
        s[strlen(s)-1]--;
        return s;
    }
    for (int i=strlen(s)-2;i>=0;i--)
    {
        tmp=s[i]-'0';
        if (tmp<0)
        {
            s[i-1]--;
            s[i]='9';
        }
    }
    int j=0;
    while(s[j++]=='0')
        ;
    j--;
    strcpy(t,s+j);
    strcpy(s,t);
    return s;
}
int main()
{
    char s[N];
    int var=0;
    in>>s;
    dec(s);
    to3(s);
    int len=strlen(s);
    for (int i=0;i<len;i++)
    {
        if (s[i]=='2')
            var^=1;
    }
    out<<var;
return 0;
}
Вот код, решение основывается на переводе чисел в 3-ую с.с. Например при нумерации от 0
0..22 - первый сегмент
100..122 - второй сегмент
200..222 - третий сегмент
Короче если разобраться то при нечетном кол-ве двоек 1 иначе 0. Если разбирать это троичное число от начала, то 0 - 1 сегмент, 1 - 2 сегмент , 2- 3 сегмент, дальше убираем первую цифру, и снова 0 - 1 сегмент, 1 - 2 сегмент , 2- 3 сегмент и т.д., доходим до 0, а для нуля - бит 0.
 
Текущее время: 03:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru