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

помогите написать лабу - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Поиск звена с элементом el в списке, заданном указателем phead http://www.cyberforum.ru/cpp-beginners/thread50022.html
#include<iostream> using namespace std; class Spisok { private: struct node { int elem; node *sled; };
C++ Перегрузка функции Что такое перезагрузка функции в с++? Для чего она нужна? Есть случаи, когда без нее никак? Приведите пример перезагрузки функции? Тут есть перезагрузка? static int Square(int var) { ... http://www.cyberforum.ru/cpp-beginners/thread50007.html
Динамическое очищение массива C++
Помогите пжлст) Нужно в программе при определенных обстоятельствах очистить массив. char n;
C++ Реверсирование строк
Всем добрый вечер! Как всегда, практикуюсь по книжным примерам. Вот дошёл до темы реверсирования строк, то есть расположения букв в обратном порядке. Столкнулся с таким кодом, и не ясен стал цикл,то...
C++ Найти корень квадратного уравнения http://www.cyberforum.ru/cpp-beginners/thread49983.html
Люди помогите решить программу з оператором (if) Задание: Знайти корень квадратного уравнения!!!!!
C++ Магический квадрат и другие задачи здравствуйте. Мне очень не обходима ваща помощь в следуших заданиях. 1. Дана целая квадратная матрица n-го порядка. Определить, является ли она магическим квадратом, т.е. такой, в которой суммы... подробнее

Показать сообщение отдельно
valeriikozlov
Эксперт C++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
12.09.2009, 16:38
_mayor,
Каюсь, писал после 2-х л пива, а накануне был 1 л водки.
Теперь написал на трезвую голову. Проверял работает и с числами под 100 цифр.
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
#include <iostream.h>
#include <Windows.h>
#include <iomanip>
#include <process.h>
char ch[100];
int i, j, sum=0;
int main()
{
                SetConsoleCP(1251);
        SetConsoleOutputCP(1251);
        char mas_36[36]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
 vvod:
        cout<<"Введите число\n";
        cin>>ch;
        int a=strlen(ch);
        if(a>100)
        {
                cout<<"Число больше 100 цифр\n";
                goto vvod;
        }
        if(a%2!=0)
        {
            cout<<"impossible\n";
            exit(1);
        }
        int *mas_ch;
        mas_ch=new int[a];
        for (j=0; j<a; j++)
        for(i=0; i<36; i++)
            if(mas_36[i]==ch[j])
                mas_ch[j]=i;
        for(i=0; i<a; i++)
            sum+=mas_ch[i];
        if(sum%2!=0)
        {
            cout<<"impossible\n";
            exit(1);
        }
        int *LIFO=new int[a/2];
 
        int top=0, temp=0, elem=0;
        LIFO[top]=0;
        if(mas_ch[LIFO[0]]>sum/2)
        {
            cout<<"impossible\n";
            exit(1);
        }
        for(i=0; i<=top; i++)
            temp+=mas_ch[LIFO[i]];  
        while(LIFO[0]<a/2)
        {
            if(top+1==a/2 && temp==sum/2)
                break;
            if( elem+1==a && temp!=sum/2)
            {
                while(LIFO[top]-LIFO[top-1]==1 && top-1>=0)
                    top--;
                top--;
                elem=LIFO[top]+1;
                LIFO[top]=elem;
                temp=0;
            }
            if(((top+1==a/2 && temp!=sum/2) || (temp>sum/2 && top<a/2) && elem<a))
            {
                elem++;
                LIFO[top]=elem;
                temp=0;
            }
            if(top+1<a/2 && temp<sum/2)
            {
                elem++;
                top++;
                LIFO[top]=elem;
                temp=0;
                
            }
            for(i=0; i<=top; i++)
                temp+=mas_ch[LIFO[i]];
        }
            
            if(LIFO[0]==a/2 && temp!=sum/2)
            {
                cout<<"impossible\n";
                exit(1);
            }
        
        cout<<"Счастливое число:   ";
        for(i=0;i<a/2; i++)
        {
            cout<<mas_36[mas_ch[LIFO[i]]];
            mas_ch[LIFO[i]]=-1;
        }
        for(i=0;i<a; i++)
            if(mas_ch[i]!=-1)
                cout<<mas_36[mas_ch[i]];
        cout<<"\n";
        system("pause");
        return 0;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru