С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/218: Рейтинг темы: голосов - 218, средняя оценка - 4.79
 Аватар для ilyasfromkz
-1 / 1 / 0
Регистрация: 12.09.2012
Сообщений: 46

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

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

Студворк — интернет-сервис помощи студентам
Заполнить массив таким вот образом

!Только пожалуйста не использую очень сложные функции. Проходим С++ 5 неделю и прошли недавно только массивы..
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.10.2012, 23:51
Ответы с готовыми решениями:

Заполнить массив первыми ста простыми числами, и вывести массив на экран
Объявите одномерный целочисленный массив в котором не более 100 элементов выполните генерацию массива первыми 100 простыми числами....

Массив: Случайным образом заполнить двумерный массив размерностью 3х4 цифрами от -20 до 10
Помогите пожалуйста с задачей Написать программу, которая случайным образом заполняет двумерный массив размерностью 3х4 цифрами от -20...

Заполнить динамический массив из файла и записать массив обратно в файл
Подскажите пожалуйста функцию которая будет заполнять Динамический массив из файла и обратную которая этот массив запишет в файл=)

17
Заблокирован
06.10.2012, 23:55
Даже не знаю, всегда представлял себе массив в виде прямой линии, за что ж его так загнули?
0
 Аватар для ilyasfromkz
-1 / 1 / 0
Регистрация: 12.09.2012
Сообщений: 46
06.10.2012, 23:57  [ТС]
Цитата Сообщение от AnreyKazakov Посмотреть сообщение
Даже не знаю, всегда представлял себе массив в виде прямой линии, за что ж его так загнули?
училка наша злая нас загнула и массив тоже)
я смогу написать это на паскале но вот перевести в си++ нет((
0
Заблокирован
07.10.2012, 00:04
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;
}
Будут по коду вопросы - задавай
0
 Аватар для ilyasfromkz
-1 / 1 / 0
Регистрация: 12.09.2012
Сообщений: 46
07.10.2012, 00:08  [ТС]
Цитата Сообщение от 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 секунд
*против часовой стрелки как на рисунке кароче
0
Заблокирован
07.10.2012, 00:14
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 Посмотреть сообщение
да и ты вывел через запятую -_- а надо по спирали изнутри
*против часовой стрелки как на рисунке кароче
Графически рисовать спираль или как?
0
 Аватар для ilyasfromkz
-1 / 1 / 0
Регистрация: 12.09.2012
Сообщений: 46
07.10.2012, 00:16  [ТС]
Цитата Сообщение от 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;
}
Так будет через запятую динамический массив, с клавиатуры размер задается...

Графически рисовать спираль или как?
ну да, стал бы я просить если бы мне нужно было встрочку через запятую =___=
0
Заблокирован
07.10.2012, 00:33
Цитата Сообщение от ilyasfromkz Посмотреть сообщение
ну да, стал бы я просить если бы мне нужно было встрочку через запятую =___=
Ну, сорри тогда, с графикой не помогу, все мои знания графики сводятся к канве =) Причем с канвой в lazarus е только работал, я бы точками рисовал, придумал бы функцию спирали и фигачил в определенных местах числа нужные, но это долго, думать еще надо.... Может на с++ есть какая нибудь фунция спирали? типа Spirl(x1,y1,.....)
0
 Аватар для ilyasfromkz
-1 / 1 / 0
Регистрация: 12.09.2012
Сообщений: 46
07.10.2012, 01:31  [ТС]
Цитата Сообщение от AnreyKazakov Посмотреть сообщение
Ну, сорри тогда, с графикой не помогу, все мои знания графики сводятся к канве =) Причем с канвой в lazarus е только работал, я бы точками рисовал, придумал бы функцию спирали и фигачил в определенных местах числа нужные, но это долго, думать еще надо.... Может на с++ есть какая нибудь фунция спирали? типа Spirl(x1,y1,.....)
http://25.media.tumblr.com/tum... o1_500.gif
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
07.10.2012, 06:18
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;
}
1
 Аватар для ilyasfromkz
-1 / 1 / 0
Регистрация: 12.09.2012
Сообщений: 46
07.10.2012, 13:39  [ТС]
Цитата Сообщение от 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;
}
можете подробно пожалуйста расписать алгоритм решения хочу не тупо скатать а проникнуться
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
07.10.2012, 18:42
Цитата Сообщение от ilyasfromkz Посмотреть сообщение
когда вводишь число он выводит числа не до него а до его квадрата, ну когда ввожу 10 он выводит числа до 100(((
программа работает так: вводите число - размерность квадратного массива. Он заполняется так как на рисунке и выводится на экран.
1
 Аватар для ilyasfromkz
-1 / 1 / 0
Регистрация: 12.09.2012
Сообщений: 46
07.10.2012, 21:36  [ТС]
Можете подробно расписать алгоритм работы программы мне ее потом защищать))) ну а нельзя ли ее изменить чтобы вводили число и она выводила именно до него
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
08.10.2012, 10:12
Цитата Сообщение от 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;
}
1
 Аватар для ilyasfromkz
-1 / 1 / 0
Регистрация: 12.09.2012
Сообщений: 46
08.10.2012, 18:15  [ТС]
ну если не сложно распишите) распишите пожалуйста пошагово алгоритм)) просто хочу вникнуть если вам не сложно конечно

Добавлено через 2 часа 22 минуты
valeriikozlov, ну если не сложно распишите) распишите пожалуйста пошагово алгоритм)) просто хочу вникнуть если вам не сложно конечно
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
08.10.2012, 18:53
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;
}
1
 Аватар для ilyasfromkz
-1 / 1 / 0
Регистрация: 12.09.2012
Сообщений: 46
08.10.2012, 19:02  [ТС]
Спасибо огромное!! Вы гений) я внииик)
0
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
10.10.2012, 15:23
Если воспользоваться поиском по форуму cyberforum.ru (ключевые слова "массив", "спираль"),
то можно найти другие подобные примеры.

Добавлено через 8 минут
Вот ещё пример.
Заполнение матрицы
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.10.2012, 15:23
Помогаю со студенческими работами здесь

Заполнить массив строк из файла. Массив заполняется, но выводится не корректно
Здравствуйте! Такая проблема. В файле имена записаны в столбик и разделены точкой с запятой. Массив заполняется, но выводится не корректно....

Массив: Не могу заполнить массив, только самое большое значения...
Не могу заполнить массив только самое большое значения #include &lt;iostream&gt; using namespace std; double...

Заполнить массив случайными числами и отобрать в другой массив все простые числа
заполнить массив случайными числами в интервале и отобрать в другой массив все простые числа. Используйте логическую функцию, которая...

Дан массив A[N]. заполнить массив В[N] элементами массива A[N], которые удовлетворяют двойному неравенству
Дан массив A. заполнить массив В элементами массива A, которые удовлетворяют двойному неравенству: A&lt; A или A&lt; A. Незаполненные...

Создать одномерный массив, заполнить его случайными значениями, отсортировать массив по убыванию
создать одномерный массив, заполнить его случайными значениями, отсортировать массив по убыванию. получилось вот что: #include...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru