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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.81
ilyasfromkz
-1 / 1 / 0
Регистрация: 12.09.2012
Сообщений: 46
#1

Заполнить массив - C++

06.10.2012, 23:51. Просмотров 4003. Ответов 17
Метки нет (Все метки)

Заполнить массив таким вот образом
Заполнить массив
!Только пожалуйста не использую очень сложные функции. Проходим С++ 5 неделю и прошли недавно только массивы..
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2012, 23:51     Заполнить массив
Посмотрите здесь:

Массив: Заполнить массив из 10 элементов случайным образом в интервале (0..3). - C++
Заполнить массив из 10 элементов случайным образом в интервале (0..3). Например: {1,2,0,3,1,2,3,3,0,1}

Заполнить массив A и массив B нулями - C++
кто соображает попробуйте сделать я просто дуб в этом . 1.Создать 2 массива A и B из элементов типа char по 10 элементов Заполнить...

Заполнить массив - C++
Люди, нужна помощь! Надо создать массив 32x32, который необходимо заполнить числами по возрастанию начиная с правого верхнего угла! ...

заполнить массив - C++
for(int i=0;i<kolvo;i++) { cin>>arr; } есть цикл для заполнения массива. как прекратить дострочно. сразу после нажатия...

Массив. заполнить - C++
как рандомно заполнить массив из 10 элементов нулями и еденицами?

заполнить массив - C++
Дана -целочисленная квадратная матрица А (6,6). Заполнить массив А следующим образом : 1 2..6 7 8... 12 13 14... 18 … 31 32......

заполнить массив - C++
Привет. Помогите пожалуйста, нужно рандомно заполнить прямоугольный(!) массив. Буду очнь благодарна

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
AnreyKazakov
Заблокирован
06.10.2012, 23:55     Заполнить массив #2
Даже не знаю, всегда представлял себе массив в виде прямой линии, за что ж его так загнули?
ilyasfromkz
-1 / 1 / 0
Регистрация: 12.09.2012
Сообщений: 46
06.10.2012, 23:57  [ТС]     Заполнить массив #3
Цитата Сообщение от AnreyKazakov Посмотреть сообщение
Даже не знаю, всегда представлял себе массив в виде прямой линии, за что ж его так загнули?
училка наша злая нас загнула и массив тоже)
я смогу написать это на паскале но вот перевести в си++ нет((
AnreyKazakov
Заблокирован
07.10.2012, 00:04     Заполнить массив #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std;
int main(){
int size=20;
int array[size];
for(int i=0;i!=size;++i){
    array[i]=i+1;
    cout<<array[i]<<", ";
    }
    cout<<endl;
    return 0;
}
Будут по коду вопросы - задавай
ilyasfromkz
-1 / 1 / 0
Регистрация: 12.09.2012
Сообщений: 46
07.10.2012, 00:08  [ТС]     Заполнить массив #5
Цитата Сообщение от AnreyKazakov Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std;
int main(){
int size=20;
int array[size];
for(int i=0;i!=size;++i){
    array[i]=i+1;
    cout<<array[i]<<", ";
    }
    cout<<endl;
    return 0;
}
Будут по коду вопросы - задавай
как сделать чтобы границу массива вводить с клавиатуры ну заполнять до какогото числа n с клавы вводимого

Добавлено через 1 минуту
да и ты вывел через запятую -_- а надо по спирали изнутри

Добавлено через 50 секунд
*против часовой стрелки как на рисунке кароче
AnreyKazakov
Заблокирован
07.10.2012, 00:14     Заполнить массив #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
int main(){
int size;
cin>>size;
int* array = new int[size];
for(int i=0;i!=size;++i){
    array[i]=i+1;
    cout<<array[i]<<", ";
    }
    cout<<endl;
    return 0;
    delete [] array;
}
Так будет через запятую динамический массив, с клавиатуры размер задается...
Цитата Сообщение от ilyasfromkz Посмотреть сообщение
да и ты вывел через запятую -_- а надо по спирали изнутри
*против часовой стрелки как на рисунке кароче
Графически рисовать спираль или как?
ilyasfromkz
-1 / 1 / 0
Регистрация: 12.09.2012
Сообщений: 46
07.10.2012, 00:16  [ТС]     Заполнить массив #7
Цитата Сообщение от AnreyKazakov Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
int main(){
int size;
cin>>size;
int* array = new int[size];
for(int i=0;i!=size;++i){
    array[i]=i+1;
    cout<<array[i]<<", ";
    }
    cout<<endl;
    return 0;
    delete [] array;
}
Так будет через запятую динамический массив, с клавиатуры размер задается...

Графически рисовать спираль или как?
ну да, стал бы я просить если бы мне нужно было встрочку через запятую =___=
AnreyKazakov
Заблокирован
07.10.2012, 00:33     Заполнить массив #8
Цитата Сообщение от ilyasfromkz Посмотреть сообщение
ну да, стал бы я просить если бы мне нужно было встрочку через запятую =___=
Ну, сорри тогда, с графикой не помогу, все мои знания графики сводятся к канве =) Причем с канвой в lazarus е только работал, я бы точками рисовал, придумал бы функцию спирали и фигачил в определенных местах числа нужные, но это долго, думать еще надо.... Может на с++ есть какая нибудь фунция спирали? типа Spirl(x1,y1,.....)
ilyasfromkz
-1 / 1 / 0
Регистрация: 12.09.2012
Сообщений: 46
07.10.2012, 01:31  [ТС]     Заполнить массив #9
Цитата Сообщение от AnreyKazakov Посмотреть сообщение
Ну, сорри тогда, с графикой не помогу, все мои знания графики сводятся к канве =) Причем с канвой в lazarus е только работал, я бы точками рисовал, придумал бы функцию спирали и фигачил в определенных местах числа нужные, но это долго, думать еще надо.... Может на с++ есть какая нибудь фунция спирали? типа Spirl(x1,y1,.....)
http://25.media.tumblr.com/tumblr_m5...y0kko1_500.gif
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
07.10.2012, 06:18     Заполнить массив #10
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
#include<iostream>
using namespace std;
 
int main()
{
    int n, i, j, num=1, a[100][100], l, r, u, d;
    cout<<"N= ";
    cin>>n;
    l=r=j=(n-1)/2;
    u=d=i=n/2;  
    while(num<n*n)
    {
        while(j<=r && num<=n*n)
        {
            a[i][j++]=num++;
        }
        j--;
        if(r<n-1)       
            r++;
        i--;
 
        while(i>=u && num<=n*n)
        {
            a[i--][j]=num++;
        }
        i++;
        if(u>0)
            u--;
        j--;
 
        while(j>=l && num<=n*n)
        {
            a[i][j--]=num++;
        }
        j++;
        if(l>0)
            l--;
        i++;
    
        while(i<=d && num<=n*n)
        {
            a[i++][j]=num++;
        }
        i--;
        if(d<n-1)
            d++;
        j++;
    }
    for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
        {
            cout.width(3);
            cout<<a[i][j];
        }
        cout<<endl;
    }   
     return 0;
}
ilyasfromkz
-1 / 1 / 0
Регистрация: 12.09.2012
Сообщений: 46
07.10.2012, 13:39  [ТС]     Заполнить массив #11
Цитата Сообщение от valeriikozlov Посмотреть сообщение
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
#include<iostream>
using namespace std;
 
int main()
{
    int n, i, j, num=1, a[100][100], l, r, u, d;
    cout<<"N= ";
    cin>>n;
    l=r=j=(n-1)/2;
    u=d=i=n/2;  
    while(num<n*n)
    {
        while(j<=r && num<=n*n)
        {
            a[i][j++]=num++;
        }
        j--;
        if(r<n-1)       
            r++;
        i--;
 
        while(i>=u && num<=n*n)
        {
            a[i--][j]=num++;
        }
        i++;
        if(u>0)
            u--;
        j--;
 
        while(j>=l && num<=n*n)
        {
            a[i][j--]=num++;
        }
        j++;
        if(l>0)
            l--;
        i++;
    
        while(i<=d && num<=n*n)
        {
            a[i++][j]=num++;
        }
        i--;
        if(d<n-1)
            d++;
        j++;
    }
    for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
        {
            cout.width(3);
            cout<<a[i][j];
        }
        cout<<endl;
    }   
     return 0;
}
когда вводишь число он выводит числа не до него а до его квадрата, ну когда ввожу 10 он выводит числа до 100(((

Добавлено через 8 минут
Цитата Сообщение от valeriikozlov Посмотреть сообщение
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
#include<iostream>
using namespace std;
 
int main()
{
    int n, i, j, num=1, a[100][100], l, r, u, d;
    cout<<"N= ";
    cin>>n;
    l=r=j=(n-1)/2;
    u=d=i=n/2;  
    while(num<n*n)
    {
        while(j<=r && num<=n*n)
        {
            a[i][j++]=num++;
        }
        j--;
        if(r<n-1)       
            r++;
        i--;
 
        while(i>=u && num<=n*n)
        {
            a[i--][j]=num++;
        }
        i++;
        if(u>0)
            u--;
        j--;
 
        while(j>=l && num<=n*n)
        {
            a[i][j--]=num++;
        }
        j++;
        if(l>0)
            l--;
        i++;
    
        while(i<=d && num<=n*n)
        {
            a[i++][j]=num++;
        }
        i--;
        if(d<n-1)
            d++;
        j++;
    }
    for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
        {
            cout.width(3);
            cout<<a[i][j];
        }
        cout<<endl;
    }   
     return 0;
}
можете подробно пожалуйста расписать алгоритм решения хочу не тупо скатать а проникнуться
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
07.10.2012, 18:42     Заполнить массив #12
Цитата Сообщение от ilyasfromkz Посмотреть сообщение
когда вводишь число он выводит числа не до него а до его квадрата, ну когда ввожу 10 он выводит числа до 100(((
программа работает так: вводите число - размерность квадратного массива. Он заполняется так как на рисунке и выводится на экран.
ilyasfromkz
-1 / 1 / 0
Регистрация: 12.09.2012
Сообщений: 46
07.10.2012, 21:36  [ТС]     Заполнить массив #13
Можете подробно расписать алгоритм работы программы мне ее потом защищать))) ну а нельзя ли ее изменить чтобы вводили число и она выводила именно до него
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
08.10.2012, 10:12     Заполнить массив #14
Цитата Сообщение от ilyasfromkz Посмотреть сообщение
ну а нельзя ли ее изменить чтобы вводили число и она выводила именно до него
программа работает правильно только до 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
#include <iostream>
using namespace std;
 
int main()
{
    int n=2, i, j, num=1, a[100][100], l, r, u, d, N;
    cout<<"N= ";
    cin>>N;
    while(n*n<N)
        n++;
    l=r=j=(n-1)/2;
    u=d=i=n/2;  
    while(num<n*n)
    {
        while(j<=r && num<=n*n)
        {
            a[i][j++]=num++;
        }
        j--;
        if(r<n-1)       
            r++;
        i--;
 
        while(i>=u && num<=n*n)
        {
            a[i--][j]=num++;
        }
        i++;
        if(u>0)
            u--;
        j--;
 
        while(j>=l && num<=n*n)
        {
            a[i][j--]=num++;
        }
        j++;
        if(l>0)
            l--;
        i++;
    
        while(i<=d && num<=n*n)
        {
            a[i++][j]=num++;
        }
        i--;
        if(d<n-1)
            d++;
        j++;
    }
    for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
        {
            if(a[i][j]<=N)
            {
                cout.width(3);
                cout<<a[i][j];
            }
            else
                cout<<"   ";
        }
        cout<<endl;
    }   
     return 0;
}
ilyasfromkz
-1 / 1 / 0
Регистрация: 12.09.2012
Сообщений: 46
08.10.2012, 18:15  [ТС]     Заполнить массив #15
ну если не сложно распишите) распишите пожалуйста пошагово алгоритм)) просто хочу вникнуть если вам не сложно конечно

Добавлено через 2 часа 22 минуты
valeriikozlov, ну если не сложно распишите) распишите пожалуйста пошагово алгоритм)) просто хочу вникнуть если вам не сложно конечно
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
08.10.2012, 18:53     Заполнить массив #16
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
#include <iostream>
using namespace std;
 
int main()
{
    int n=2, i, j, num=1, a[100][100], l, r, u, d, N;
    cout<<"N= ";
    cin>>N;
    while(n*n<N)//ищем такое n (сторону квадратного массива), что бы все числа в массив вошли 
        n++;
    l=r=j=(n-1)/2;// l- текущая левая граница, r - текущая правая граница, j - текущая координата столбика
    u=d=i=n/2;// u- текущая верхняя граница, d - текущая нижняя граница, i - текущая координата строки
    while(num<n*n)// пока не заполним весь массив
    {
        while(j<=r && num<=n*n)
        {
            a[i][j++]=num++;// заполняем вправо
        }
        j--;// назад на один столбик
        if(r<n-1)       
            r++;// увеличиваем правую границу
        i--;// уменьшаем номер текущей строки
 
        while(i>=u && num<=n*n)
        {
            a[i--][j]=num++;// заполняем вверх
        }
        i++;// назад на одну строчку
        if(u>0)
            u--;// уменьшаем верхнюю границу
        j--;// уменьшаем номер текущего столбца
 
        while(j>=l && num<=n*n)
        {
            a[i][j--]=num++;// заполняем влево
        }
        j++;// назад на один столбик
        if(l>0)
            l--;// уменьшаем левую границу
        i++;// увеличиваем номер текущей строки
    
        while(i<=d && num<=n*n)
        {
            a[i++][j]=num++;// заполняем вниз
        }
        i--;// назад на одну строчку
        if(d<n-1)
            d++;// увеличиваем нижнюю границу
        j++;// увеличиваем номер текущего столбца
    }
    for(i=0; i<n; i++)// в этих циклах выводим те значения массива, которые меньше или равны введеному числу. Если число массива больше, то выводим вместо числа пробелы
    {
        for(j=0; j<n; j++)
        {
            if(a[i][j]<=N)
            {
                cout.width(3);
                cout<<a[i][j];
            }
            else
                cout<<"   ";
        }
        cout<<endl;
    }   
     return 0;
}
ilyasfromkz
-1 / 1 / 0
Регистрация: 12.09.2012
Сообщений: 46
08.10.2012, 19:02  [ТС]     Заполнить массив #17
Спасибо огромное!! Вы гений) я внииик)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.10.2012, 15:23     Заполнить массив
Еще ссылки по теме:

Заполнить массив - C++
Помогите... Заполнить массив: а) десятью первыми членами арифметической прогрессии (первый член прогрессии — а, ее разность — р); б)...

Заполнить массив - C++
Нужно заполнить массив 40 рандомными значениями, найти &quot;максимальное&quot; значение а все до &quot;максимального&quot; заполнить - 0 (нулями). Прошу...

Заполнить массив - C++
Заполнить массив из 15 элементов последовательными простыми числами.

заполнить массив - C++
Уже убедилась сегодня, что на форуме есть умнички, может поможете еще с одной задачкой? (Заполнить массив Y нарастающими произведениями...

Заполнить массив А - C++
Помогите пожалуйста сделать задание.. Заполните массив А с помощью датчика случайных чисел целыми числами из следующих интервалов: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Alex5
1040 / 703 / 102
Регистрация: 12.04.2010
Сообщений: 1,768
10.10.2012, 15:23     Заполнить массив #18
Если воспользоваться поиском по форуму cyberforum.ru (ключевые слова "массив", "спираль"),
то можно найти другие подобные примеры.

Добавлено через 8 минут
Вот ещё пример.
Заполнение матрицы
Yandex
Объявления
10.10.2012, 15:23     Заполнить массив
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru