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

Преобразование массива - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Распознание каждого элемента масива http://www.cyberforum.ru/cpp-beginners/thread812340.html
Здравствуйте. Как можно разложить массив, чтобы в дальнейшем работать с каждым элементом (нужно будет переставлять местами) #include <iostream> using namespace std; void masiv() { int...
C++ По а и полиному PN(x) получить полиномы QN+1(x)=(x-a)*PN(x) и RN+1(x)=(x+a)*PN(x) По а и полиному PN(x) получить полиномы QN+1(x)=(x-a)*PN(x) и RN+1(x)=(x+a)*PN(x). помогите этот ад решить о_О( ну или мне это так кажется) Добавлено через 21 час 34 минуты Up. http://www.cyberforum.ru/cpp-beginners/thread812317.html
C++ heap corruption detected
имеется класс CStr - строка, в нём есть конструктор CStr CStr::CStr(char *s) { length = 0; while (s) length++; str = new char; for (int i = 0; i < length; i++) str = s; str = '\0';
Переставить строки матрицы по не убыванию наименьших элементов C++
Помогите пожалуйста написать программу: 1. Дана вещественная матрица D (7х9). Упорядочить (переставить) строки матрицы по не убыванию наименьших элементов строк Уже несколько часов провел в...
C++ не могу сложить int +object на с++ http://www.cyberforum.ru/cpp-beginners/thread812280.html
помогите решать ето проблему как сложить int+object я сделал object+int всё отлично работает но int+object так почему то не работает
C++ Чтение из файла Хочу засунуть текст из файла в Edit Control (тип CString): file.Read(FileContent, file.GetLength()); Выскакивает error: error C2664: 'CFile::Read' : cannot convert parameter 1 from 'CString' to... подробнее

Показать сообщение отдельно
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
19.03.2013, 02:48
небольшая оптимизация:
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
#include <iostream>
#include <algorithm>
#include <map>
 
const int base[] = { 1, 0, 7, 1, 1, 0, 7, 3, 2, 4, 1, 5, 0 };
 
int main()
{
    std::map<int, int> un;
 
    for (size_t i = 0; i < sizeof(base) / sizeof(int); ++i)
        ++un[base[i]];
 
    const int HEIGHT = un.size();
    const int LENGTH = 3;
 
    int** arr = new int*[HEIGHT];
    for (int i = 0; i < HEIGHT; ++i)
        arr[i] = new int[LENGTH];
 
    int index = 0;
    for (std::map<int, int>::const_iterator it = un.begin(); 
            it != un.end(); ++it, ++index)
        arr[index][0] = it->first;
 
    for (int i = 0; i < HEIGHT; ++i)
    {
        arr[i][1] = std::count(base, base + sizeof(base) / sizeof(int), arr[i][0]);
        const int* p = std::find(base, base + sizeof(base) / sizeof(int), arr[i][0]);
        arr[i][2] = std::distance(base, p);
        std::cout << arr[i][0] << ' ' << arr[i][1] << ' ' << arr[i][2] << '\n';
    }
 
    for (int i = 0; i < HEIGHT; ++i)
        delete [] arr[i];
    delete [] arr;
 
    return 0;
}
Добавлено через 5 минут
Bash
1
2
3
4
5
6
7
8
9
ilyuha21st@coldshoot:~/Projects$ ./prog
0 3 1
1 4 0
2 1 8
3 1 7
4 1 9
5 1 11
7 2 2
ilyuha21st@coldshoot:~/Projects$
Добавлено через 3 минуты
в 5-ю строчку кода можно засунуть любую последовательность. Будет работать всё ок.

Добавлено через 7 минут
можно и ещё короче:
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
#include <iostream>
#include <algorithm>
#include <map>
 
const int base[] = { 1, 0, 7, 1, 1, 0, 7, 3, 2, 4, 1, 5, 0 };
 
int main()
{
    std::map<int, int> un;
 
    for (size_t i = 0; i < sizeof(base) / sizeof(int); ++i)
        ++un[base[i]];
 
    const int HEIGHT = un.size();
    const int LENGTH = 3;
 
    int** arr = new int*[HEIGHT];
    for (int i = 0; i < HEIGHT; ++i)
        arr[i] = new int[LENGTH];
 
    std::map<int, int>::const_iterator it = un.begin();
    for (int i = 0; i < HEIGHT; ++i, ++it)
    {
        arr[i][0] = it->first;
        arr[i][1] = std::count(base, base + sizeof(base) / sizeof(int), arr[i][0]);
        const int* p = std::find(base, base + sizeof(base) / sizeof(int), arr[i][0]);
        arr[i][2] = std::distance(base, p);
        std::cout << arr[i][0] << ' ' << arr[i][1] << ' ' << arr[i][2] << '\n';
    }
 
    for (int i = 0; i < HEIGHT; ++i)
        delete [] arr[i];
    delete [] arr;
 
    return 0;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru