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

Продублировать элементы массива, сохраняя порядок следования - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.75
Greaple
1 / 1 / 0
Регистрация: 07.06.2012
Сообщений: 17
07.06.2012, 23:54     Продублировать элементы массива, сохраняя порядок следования #1
1.Дан массив из n целых чисел. Продублировать все элементы, сохраняя порядок следования. Например, для массива X=(3, 8, 4, ...) получить X=(3, 3, 8, 8, 4, 4, …).

2.Дана квадратная целочисленная матрица. Определить, является ли она магическим квадратом. В магическом квадрате сумма чисел по всем горизонталям, вертикалям и двум диагоналям должна быть одна и та же.

в задачах нужно использовать функции
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.06.2012, 23:54     Продублировать элементы массива, сохраняя порядок следования
Посмотрите здесь:

Описать процедуру, меняющую порядок следования элементов массива C++
одномерный массив. Все его элементы, не равные нулю, переписать, сохраняя их порядок в начало массива, а нулевые элементы в конец массива in c++ C++
C++ поменять порядок следования массива
C++ Изменить порядок следования элементов массива
C++ Изменить порядок следования элементов массива
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rinat_w
89 / 85 / 4
Регистрация: 13.11.2011
Сообщений: 183
08.06.2012, 00:07     Продублировать элементы массива, сохраняя порядок следования #2
1)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<iostream>
using namespace std;
int main(){
    int n;
    cout<<"n="; cin>>n;
    int *a=new int[n];
    int *b=new int[2*n];
    cout<<"Massive :\n";
    for (int i=0; i<n; i++){
        cin>>a[i];
        b[2*i]=a[i];
        b[2*i+1]=a[i];
        cout<<b[2*i]<<" "<<b[2*i+1]<<" ";
    }
    cout<<endl;
    system("pause");
    return 0;
}
Greaple
1 / 1 / 0
Регистрация: 07.06.2012
Сообщений: 17
08.06.2012, 00:16  [ТС]     Продублировать элементы массива, сохраняя порядок следования #3
спасибо! а как мне с помощью функций написать?
rinat_w
89 / 85 / 4
Регистрация: 13.11.2011
Сообщений: 183
08.06.2012, 00:26     Продублировать элементы массива, сохраняя порядок следования #4
2)

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
#include<iostream>
using namespace std;
int main(){
    int sum,n;
    cout<<"n="; cin>>n;
    int **a=new int*[n];
    bool flag=false;
    cout<<"Enter matrix : \n";
    for (int i=0; i<n; i++){
        a[i]=new int[n];
        sum=0;
        for (int j=0; j<n; j++){
            cin>>a[i][j];
            sum+=a[i][j];
        }
    }
    for (int i=0; i<n; i++){
        int sum1=0,sum2=0,sum3=0,sum4=0;
        for (int j=0; j<n; j++){
            sum1+=a[i][j];
            sum2+=a[j][i];
            sum3+=a[j][n-1-j];
            sum4+=a[n-1-j][j];
        }
        if (sum1==sum && sum2==sum && sum3==sum && sum4==sum) flag=true;
        else flag=false;
    }
    if (flag) cout<<"Magic!!!\n";
    else cout<<"Not magic\n";
    system("pause");
    return 0;
}
а как с функциями не знаю, алгоритм запомни это главное
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4928 / 2671 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
08.06.2012, 00:44     Продублировать элементы массива, сохраняя порядок следования #5
память то освободи, жадина
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
08.06.2012, 01:47     Продублировать элементы массива, сохраняя порядок следования #6
1 задача через функции:
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
#include <iostream>
using namespace std;
void Input(int* a,int n)
{
    for (int i=0; i<n; i++)
        cin>>a[i];
}
void Output(int* a,int n)
{
    for (int i=0; i<n; i++)
        cout<<a[i]<<" ";
}
void Fun(int* a,int* b,int n)
{
    for(int i=0;i<n;i++)
    {
        b[2*i]=a[i];
        b[2*i+1]=a[i];
    }
}
int main()
{
    int n;
    cout<<"n="; cin>>n;
    int *a=new int[n];
    int *b=new int[2*n];
    Input(a,n);
    cout<<"Massive :\n";
    Output(a,n);
    Fun(a,b,n);
    cout<<"\nNew mas: "<<endl;
    Output(b,n*2);
    cout<<endl;
    delete[] a;
    delete[] b;
    system("pause");
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2012, 02:35     Продублировать элементы массива, сохраняя порядок следования
Еще ссылки по теме:

C++ Записать в данный массив сначала все отрицательные числа и нули, затем все положительные, сохраняя порядок их следования
В массиве, все элементы которого различны, найти и удалить n наименьших элементов, «поджимая» массив к началу и сохраняя порядок следования C++
C++ Изменить порядок следования элементов массива на противоположный

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

Или воспользуйтесь поиском по форуму:
rinat_w
89 / 85 / 4
Регистрация: 13.11.2011
Сообщений: 183
08.06.2012, 02:35     Продублировать элементы массива, сохраняя порядок следования #7

Не по теме:

MrGluck, блин ну всегда забываю освобождать, бесит



Добавлено через 13 минут
во с функциями:
1)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<iostream>
using namespace std;
void func(){
    int n;
    cout<<"n="; cin>>n;
    int *a=new int[n];
    int *b=new int[2*n];
    cout<<"Massive :\n";
    for (int i=0; i<2*n; i++){
        if (i%2==0) cin>>a[i/2];
        b[i]=a[i/2];
    }
    for (int i=0; i<2*n; i++) cout<<b[i]<<" ";
    cout<<endl;
    delete []a;
    delete []b;
    system("pause");
}
int main(){
    func();
    return 0;
}
2)
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>
using namespace std;
void func(){
    int sum,n;
    cout<<"n="; cin>>n;
    int **a=new int*[n];
    bool flag=false;
    cout<<"Enter matrix : \n";
    for (int i=0; i<n; i++){
        a[i]=new int[n];
        sum=0;
        for (int j=0; j<n; j++){
            cin>>a[i][j];
            sum+=a[i][j];
        }
    }
    for (int i=0; i<n; i++){
        int sum1=0,sum2=0,sum3=0,sum4=0;
        for (int j=0; j<n; j++){
            sum1+=a[i][j];
            sum2+=a[j][i];
            sum3+=a[j][n-1-j];
            sum4+=a[n-1-j][j];
        }
        if (sum1==sum && sum2==sum && sum3==sum && sum4==sum) flag=true;
        else flag=false;
    }
    if (flag) cout<<"Magic!!!\n";
    else cout<<"Not magic\n";
    delete []a;
    system("pause");
}
int main(){
    func();
    return 0;
}
Yandex
Объявления
08.06.2012, 02:35     Продублировать элементы массива, сохраняя порядок следования
Ответ Создать тему
Опции темы

Текущее время: 15:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru