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

мне нужна помощь по курсовой работе!!! - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Двумерный массив http://www.cyberforum.ru/cpp-beginners/thread353798.html
Доброго времени суток. Все вроде запускается но есть две проблемы, все пишет в строчку а не квадратной матрицей и не может идентифицировать "j". Не исключено что я прикрутил что то лишнее или недокрутил. /*21. Найти наибольший и наименьший элементы прямоугольной матрицы и поменять их местами. */ #include "stdafx.h" #include <stdlib.h> #include <iostream> #include <conio.h>
C++ Алгоритмы и методы Надо записать на С++(желательно Borland 5.02) алгоритмы и методы: 1.Алгоритм разделенных корней 2.Метод простых итераций 3.Метод касаемых(Ньютона) 4.На ваше усмотрение(любой метод или алгоритм). http://www.cyberforum.ru/cpp-beginners/thread353790.html
C++ Вопрос по одномерным массивам.
Всем доброго времени суток. 1. Написал код но при запуске выкидывает ошибку и условия не считает. В одномерном массиве формируемом случайно элементами как отриц. так и положит. нужно подсчитать кол-во этих элементов в отдельности. (отриц. = (), полож. = (), нулевых=()) #include "stdafx.h" #include <iostream> using namespace std; int main() {
Методы сортировки C++
Помогите исправить некоторые недочеты в проге. Задание: написать программу сортировки массива, по убыванию и возрастанию. Проблема в том, что массив сортируется только по возрастанию, по убыванию никак... #include<stdio.h> #include<locale.h> #include<time.h> #include<conio.h> #include<math.h>
C++ странный ostream в 2010 http://www.cyberforum.ru/cpp-beginners/thread353761.html
привет, в 2010 VS не работает ostream_iterator<int>(cout," ") copy(mas.begin(),mas.end(),ostream_iterator<int>(cout," ")); как починить? задача вывести таблицу произвольного размера типа 5 3 5 6 2 7 4 2 3 8 2 2
C++ Блуждание пьяницы и перегрузка операторов Всем привет! помогите люди добрые решить проблему. В книге по которой я учусь в качестве примера перегрузки операторов дана программа, которая осуществляет такую затею: вводится длина шага и расстояние, на которое нужно отдалиться, а программа, используя случайное число от 0 до 360 выбирает направление человека и передвигает его. Программа завершается когда человек отдаляется на указанное... подробнее

Показать сообщение отдельно
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
21.09.2011, 04:11     мне нужна помощь по курсовой работе!!!
я тут покурил и вот что подумал. Вычислять длину массива сумм совсем необязательно. Его можно формировать динамически просто добавляя очередную сумму элементов и попутно проверяя на уже наличие таковой (это отсеет немало лишних сумм и добавит драгоценные байты). В случае переполнения памяти ОС все равно ее кикнет, поэтому посчитать переполнение для установки n_max достаточно только 1 раз, гипотетически выделив (допустим 256 Mb = 256 * 1024 Kb = 256 * 1024 * 1024 = 268435456 byte ) памяти под массив сумм. С приведенной цифрой это при int = 4 массив сумм в 67108864 элементов, это массив чисел из 34 (35 уже больше) элементов в идеальном варианте, таком что суммы не равны между собой. короче я тут подсчитал вот:
массив сумм типа long long (у меня 8 байт) составляется из максимум 55 элементов массива, его длина 45148868444794 элемента. так что даже без факториалов главная задача длину массива сумм просто уложить в тип.

Добавлено через 7 часов 28 минут
я вот накидал. сыро, но работает добавляйте смотрите как будет лучше. очень рекомендую все таки формировать массив сумм динамически вместе с проверкой на уже имеющиеся там значения. Код не пример, при размере массива в 20 элементов можете оставлять компьютер и расслабиться с супругой или товарищами с беленькой, НО... можно неплохо его "довести".
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
#include<iostream>
#include<fstream>
#include<stdlib.h>
 
#define SIZE_M  15
 
bool check_min_max(int min, int max);
 
int main(){
    int mass[SIZE_M];
 
    //init array
    for(int i = 0; i != SIZE_M; ++i)
        mass[i] = rand() % SIZE_M * 2 + 1;
 
    //opening ofstream
    const char *file = "file.txt";
    std::ofstream ofs(file);
 
    if(!ofs.is_open()){
        std::cerr << "error of open file " << file << "\n";
        return 1;
    }
 
    //printing sourse array
    ofs << "sourse array \n";
    for(int i = 0; i != SIZE_M; ++i)
        ofs << mass[i] << " ";
    ofs << std::endl << std::endl;
 
    //sorting array
    for(int i = 0; i != SIZE_M - 1; ++i)
        for(int k = i + 1; k < SIZE_M; ++k)
            if(check_min_max(mass[i], mass[k])){
                mass[k] += mass[i];
                mass[i] = mass[k] - mass[i];
                mass[k] -= mass[i];
            }
 
    //printing sorting array
    ofs << "sorting array \n";
    for(int i = 0; i != SIZE_M; ++i)
        ofs << mass[i] << " ";
    ofs << std::endl << std::endl;
 
    //creating sum_array
    long long *mass_summ, size_mass_summ = 1 << SIZE_M;
    mass_summ = new long long [size_mass_summ];
 
    for(int i = 0; i < size_mass_summ; ++i)
        mass_summ[i] = 0;
 
    int summ = 0;
 
    //puts the summ in summ_array
    for (int i = 0; i < size_mass_summ; ++i){
 
        int tmp = 0, k = i;
        bool check = true;
 
        while(k){
            if(k & 1){
                summ += mass[tmp];
                //ofs << mass[tmp] << ' ';
            }
            ++tmp;
            k = k >> 1;
        }
        //ofs << "\t";
        for(int k = i; k > 0; --k)
            if (mass_summ[k] == summ) check = false;
 
        if(check) mass_summ[i] = summ;
        summ = 0;
    }
 
    //sorting summ_array
    for(int i = 0; i != size_mass_summ - 1; ++i)
        for(int k = i + 1; k < size_mass_summ; ++k){
            if(check_min_max(mass_summ[i], mass_summ[k])){
                mass_summ[k] += mass_summ[i];
                mass_summ[i] = mass_summ[k] - mass_summ[i];
                mass_summ[k] -= mass_summ[i];
            }
        }
    //deleting elements of array who is 0
    /*int count = 0;
 
    for(int i = 0; i != size_mass_summ; ++i){
        if((mass_summ[i] && mass_summ[i + 1]) == 0)
            ++count;
        else break;
    }
    -- count;
 
    //if(count){
        long long *mass_tmp = new long long[size_mass_summ - count];
        int tmp = 0;
 
        for(int i = count; i != size_mass_summ; ++i){
            mass_tmp[tmp] = mass_summ[i]; ++tmp;
        }
        delete []mass_summ;
 
        size_mass_summ -= count;
        mass_summ = new long long[size_mass_summ];
 
        for(int i = 0; i != size_mass_summ; ++i)
            mass_summ[i] = mass_tmp[i];
 
        delete []mass_tmp;
 
 
    ofs << "\n deleted elements of array who is 0 is: " << count <<"\n\n";
    //printing summ_array
    ofs << "sorting summ_array \n";
    for(int i = 0; i != size_mass_summ; ++i){
        //if(!(i % 30)) ofs << "\0";
        ofs << mass_summ[i] << " ";
    }*/
    ofs << std::endl << std::endl;
 
    int iskomoe_chislo = 1;
 
    for(int i = 1; i != size_mass_summ; ++i){
        bool check = true;
 
        if(check) {
            if(mass_summ[i] - mass_summ[i - 1] > 1){
                iskomoe_chislo = mass_summ[i - 1] + 1;
                check = false;
                break;
            }
            else{
                iskomoe_chislo = 1;
                for (int i = 0; i != SIZE_M; ++i)
                    iskomoe_chislo += mass[i];
            }
        }
    }
 
    ofs << "\nsearching number: " << iskomoe_chislo << " YPA!!!\n";
 
    delete []mass_summ;
    return 0;
}
 
bool check_min_max(int min, int max){
    bool check = min > max ? true : false;
    return check;
}
результат
Код
$ ./tmp 
chertopolox@chertopolox-Ubuntu:~/documents/projects/tmp/bin/Release$ cat ~/documents/file.txt 
sourse array 
27 3 25 21 17 21 3 25 19 3 5 15 11 9 17 

sorting array 
3 3 3 5 9 11 15 17 17 19 21 21 25 25 27 

searching number: 1 YPA!!!
 
Текущее время: 16:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru