Форум программистов, компьютерный форум 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) { return (var * var); } static long Square(long var) http://www.cyberforum.ru/cpp-beginners/thread50007.html
Динамическое очищение массива C++
Помогите пжлст) Нужно в программе при определенных обстоятельствах очистить массив. char n;
C++ Реверсирование строк
Всем добрый вечер! Как всегда, практикуюсь по книжным примерам. Вот дошёл до темы реверсирования строк, то есть расположения букв в обратном порядке. Столкнулся с таким кодом, и не ясен стал цикл,то есть как именно происходит замена букв в нём? Если кто может, подскажите,если не сложно? Не ясен сам цикл, и строка перед ним: end = &str; Заранее благодарю. Вот исходник: #include...
C++ Найти корень квадратного уравнения http://www.cyberforum.ru/cpp-beginners/thread49983.html
Люди помогите решить программу з оператором (if) Задание: Знайти корень квадратного уравнения!!!!!
C++ Магический квадрат и другие задачи здравствуйте. Мне очень не обходима ваща помощь в следуших заданиях. 1. Дана целая квадратная матрица n-го порядка. Определить, является ли она магическим квадратом, т.е. такой, в которой суммы элементов во всех строках и столбцах одинаковы. 2. Определить натуральное число не больше заданного n с наибольшей суммой делителей. Исполь-зовать функцию вычисления суммы делителей числа 3. Написать... подробнее

Показать сообщение отдельно
valeriikozlov
Эксперт C++
4667 / 2493 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
10.09.2009, 19:27     помогите написать лабу
Ну вот вроде бы все:
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
#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, elem=0;
        LIFO[top]=0;
        if(mas_ch[LIFO[0]]>sum/2)
        {
            cout<<"impossible\n";
            exit(1);
        }
        top++;
        elem++;
        while(temp!=sum/2)
        {
            LIFO[top]=elem;
            temp=0;
            for(i=0; i<=top; i++)
                temp+=mas_ch[LIFO[i]];
            if(temp>=sum/2 && elem<a)
            {
                elem++;
                top--;
            }
            if(temp<sum/2)
            {
                if(top==a/2)
                    elem++;
                if(top<a/2)
                {
                    top++;
                    elem++;
                }
            
            }
            if(elem==a+1)
            {
                while(LIFO[top]-LIFO[top-1]==1)
                    top--;
                while(LIFO[top]-LIFO[top-1]!=1)
                {
                    top--;
                    if(top<0)
                    {
                        cout<<"impossible\n";
                        exit(1);
                    }
                }
                LIFO[top]++;
            }
            if(LIFO[0]==a/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;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru