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

Разбитие массива на некое количество подмассивов одинаковой длинны - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как назвать переменную именем, введенным пользователем? http://www.cyberforum.ru/cpp-beginners/thread1170905.html
Недавно начал изучать C++. Скажите пожалуйста, как назвать переменную значением из другой переменной? Вот код простой программы и как сделать чтобы она работала? #include <iostream> using namespace std; int main(){ char group; //Пусть имя состоит из одной буквы "x" cin>>group; int _ ; // " _ " Имя, вводимое пользователем; }
C++ Использование класса ORDER Следующие задания требуется решить с использованием классов. При этом обязательно оформить методы для выполнения каждого из действий: по вводу данных, выводу их в файл, чтению данных из файла и выводу их на экран, сортировке данных. --------------------------------------------------------------------------------------------------------------- Дана структура с именем ORDER, состоящая из... http://www.cyberforum.ru/cpp-beginners/thread1170899.html
Определить, является ли заданная квадратная матрица симметричной относительно главной диагонали C++
Задание: Определить, является ли заданная квадратная матрица А(5,5) симметричной относительно главной диагонали. Написать два варианта программы: без применения указателей и с указателями. Первый вариант написала: #include <iostream> #include <conio.h> using namespace std; int main() {
C++ Вычисление погрешности интегральных методов Симпсона и Гаусса
Здраствуйте. Нужен пример реализации вычисления погрешности методов Симпсона и Гаусса Пробовал писать на Симпсона но выводит какойто бред, вот функция float x = A, det; float *Y, *det1, *det2, *det3, *det4; int i, n; n = (B-A)/h; det1 = new float; det2 = new float; det3 = new float; det4 = new float;
C++ Управление змейкой http://www.cyberforum.ru/cpp-beginners/thread1170873.html
#include <conio.h> #include <stdio.h> #include <stdlib.h> #include <time.h> #include <graphics.h> #define N 30 #define M 20 #define Scale 25//размер квадратика
C++ Вывести 2е по счету слово введеное в строку ввести ФИО (окончание точкой) вывести на экран только Имя в столбик // Lab12Y.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <stdio.h> #include <conio.h> #include <string> подробнее

Показать сообщение отдельно
Lena__
0 / 0 / 0
Регистрация: 09.05.2014
Сообщений: 2
09.05.2014, 19:39     Разбитие массива на некое количество подмассивов одинаковой длинны
Здравствуйте.
Для решения моей основной задачи требуется разбитие массива на некое количество подмассивов одинаковой длинны.
Проблема в том, что конечный подмассив может быть заполнен не полностью, а ограничение на заполнение работает некорректно.
Заранее спасибо.

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
#include <iostream>
#include <ctime>
#include <iomanip>
using namespace std;
 
int *CreateArray (int length)
{   int *Array = new int [length];
    srand(time(0));
    for (int i = 0; i < length; i++)
        Array[i] = rand () %20 - rand() %15;
    return Array;
}
 
int *CreateTemporaryArray (int *oldArray, int length, int iteration, int newLength)
{   int *Array = new int [newLength], i = 0;
    for (i = 0; i < newLength; i++)
    {   if (iteration == length)
            break;
        Array[i] = oldArray[iteration];
        iteration++;
    }
    return Array;
}
 
void PrintArray (int *Array, int length)
{   for (int i = 0; i < length; i++)
    {   if (i % 15 == 0)
            cout << endl << endl;
        cout.width(5);
        cout << Array[i];
    }
    cout << endl;
}
 
void PrintArrays (int **arrays, int length, int quantityOfNewArrays, int newLength)
{   int i = 0, j = 0;
    for (i = 0; i < quantityOfNewArrays; i++)
    {   for (j = 0; j < newLength; j++)
        {   if ( (i*newLength / quantityOfNewArrays)+1 == length) 
                break;
            if (j % 15 == 0)
                cout << endl << endl;
            cout.width(5);
            cout << arrays[i][j];
        }
    cout << endl;
    }
}
 
int Input (char *text)
{   int variable = 0; // variable == переменная
    cout << endl << " Enter the " << text;
    cin >> variable;
    cin.sync();
    return variable;
}
 
int **Segmentation (int *Array, int length, int quantityOfNewArrays)  
{   int i = 0, lengthOfNewArrays = length / quantityOfNewArrays, **segments = new int* [quantityOfNewArrays +1];
    for (i = 0; i < quantityOfNewArrays; i++) 
        segments[i] = CreateTemporaryArray (Array, length, i*(lengthOfNewArrays+1), lengthOfNewArrays+1);
    return segments;
}
 
int main ()
{   int length = Input ("length of the array: ");
 
    int *Array = CreateArray (length);
    PrintArray (Array, length);
    
    int quantityOfAuxiliaryArrays = Input ("quantity of auxiliary arrays in sorting: ");
 
    int **segmentedArray = Segmentation (Array, length, quantityOfAuxiliaryArrays);
    cout << endl;
    PrintArrays (segmentedArray, length, quantityOfAuxiliaryArrays, length / quantityOfAuxiliaryArrays +1); 
 
    cin.get();
    return 0;
}
Добавлено через 1 час 13 минут
Проблему решила.
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
#include <iostream>
#include <ctime>
#include <iomanip>
using namespace std;
 
int *CreateArray (int length)
{   int *Array = new int [length];
    srand(time(0));
    for (int i = 0; i < length; i++)
        Array[i] = rand () %20 - rand() %15;
    return Array;
}
 
int *CreateTemporaryArray (int *oldArray, int length, int iteration, int newLength)
{   int *Array = new int [newLength], i = 0;
    for (i = 0; i < newLength; i++)
    {   if (iteration == length)
            break;
        Array[i] = oldArray[iteration];
        iteration++;
    }
    return Array;
}
 
void PrintArray (int *Array, int length)
{   for (int i = 0; i < length; i++)
    {   if (i % 15 == 0)
            cout << endl << endl;
        cout.width(5);
        cout << Array[i];
    }
    cout << endl;
}
 
void PrintArrays (int **arrays, int length, int quantityOfNewArrays, int newLength)
{   int i = 0, j = 0;
    for (i = 0; i < quantityOfNewArrays-1; i++)
    {   for (j = 0; j < newLength; j++)
        {   if (j % 15 == 0)
                cout << endl << endl;
            cout.width(5);
            cout << arrays[i][j];
        }
    cout << endl;
    }
    if (length % quantityOfNewArrays !=0)
    {   cout << endl;
        for (j = 0; j < length % ((length / quantityOfNewArrays)+1); j++)
        {   cout.width(5);
            cout << arrays[quantityOfNewArrays-1][j];
        }
    }
}
 
int Input (char *text)
{   int variable = 0; // variable == переменная
    cout << endl << " Enter the " << text;
    cin >> variable;
    cin.sync();
    return variable;
}
 
int **Segmentation (int *Array, int length, int quantityOfNewArrays)  
{   int i = 0, lengthOfNewArrays = length / quantityOfNewArrays, **segments = new int* [quantityOfNewArrays +1];
    for (i = 0; i < quantityOfNewArrays-1; i++) 
        segments[i] = CreateTemporaryArray (Array, length, i*(lengthOfNewArrays+1), lengthOfNewArrays+1);
    if (length % quantityOfNewArrays !=0)
        segments[quantityOfNewArrays-1] = CreateTemporaryArray (Array, length, (quantityOfNewArrays-1)*(lengthOfNewArrays+1), length % (lengthOfNewArrays+1));
    return segments;
}
 
int main ()
{   int length = Input ("length of the array: ");
 
    int *Array = CreateArray (length);
    PrintArray (Array, length);
    
//  int mode = Input ("mode: \n\n if you want to sort in descending order, enter 1 \n if you want to sort in ascending order, enter 2\t");
    int quantityOfAuxiliaryArrays = Input ("quantity of auxiliary arrays in sorting: ");  // количество вспомогательных массивов
 
    int **segmentedArray = Segmentation (Array, length, quantityOfAuxiliaryArrays);
    cout << endl;
    PrintArrays (segmentedArray, length, quantityOfAuxiliaryArrays, length / quantityOfAuxiliaryArrays +1); 
 
    cin.get();
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 14:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru