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

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

06.10.2012, 23:51. Показов 43181. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru