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

Скопировать первую матрицу во вторую - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вывод текста http://www.cyberforum.ru/cpp-beginners/thread729734.html
#include <iostream> #include <conio.h> using namespace std; void main() { setlocale(LC_ALL, "rus"); char a; char b;
C++ Из массива X(N) все положительные элементы записать в массив Y(K), а все отрицательные элементы - в массив Z(m) Из массива X(N) все положительные элементы записать в массив Y(K), а все отрицательные элементы - в массив Z(m).Найти в каждом массиве максимальный по модулю элемент.Удалить в каждом массиве первый элемент. В программе написать функцию формирования массивов Y и Z, определения максимального по модулю элемента,удаление элемента.Что делать,помогите дописать #include "stdafx" #include <iostream> ... http://www.cyberforum.ru/cpp-beginners/thread729733.html
нахождение делителей числа C++
Даны натуральные числа n, m. Получить наименьшее общее кратное (НОК) чисел n, m. НОК(n, m) = n*m / НОД(n, m).
цикл с условием (вычислить условную функцию в точках) C++
вычислить условную функцию в точках хi ε , хi = х0 + iΔх, i = 0,1,… Вывод результатов обеспечить в виде таблиц с указанием номера ветви, для которой он получен.
C++ Русский шрифт в консоли http://www.cyberforum.ru/cpp-beginners/thread729693.html
Как подключить русский шрифт в консоли?
C++ Написать программу, которая вычисляет значение функции от двух аргументов Х и У Помогите решить, пожалуйста. Написать программу, которая вычисляет значение функции от двух аргументов Х и У. подробнее

Показать сообщение отдельно
Xunnapb
1 / 1 / 0
Регистрация: 07.12.2012
Сообщений: 8
13.12.2012, 03: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
88
89
90
91
92
93
94
95
96
#include <stdio.h>
#include <process.h>
#include <locale.h>
#include <conio.h>
 
void main()
{
    setlocale(LC_CTYPE,"Russian");
    //Объявление переменных для размера массивов
    int m,k,m1,k1;
    //Объявление вспомогательных переменных
    int i,j;
    //Объявления указателей на указатели для динамического выделения памяти под массивы
    int **A,**B;
 
    //Ввод размеров первого массива
    puts("Введите размер первого массива (m x k): ");
    scanf_s("%d %d",&m,&k);
    //Очистка буфера ввода
    fflush(stdin);
    //Динамическое выделение памяти под первый массив
    if (!(A=new int*[m]))
    {
        printf_s("Недостаточно памяти!\n");
        exit(1);
    }
    for(i=0;i<k;i++)
        if (!(*(A+i)=new int[k]))
        {
            printf_s("Недостаточно памяти!\n");
            A=NULL;
            exit(1);
        }
    //Заполнение массива. Можно сделать случайными числами при необходимости.
    for (i=0;i<m;i++)
    {
        printf_s("\nВведите строку номер %d (%d элементов): ",i+1,k);
        for (j=0;j<k;j++)
            scanf_s("%d",*(A+i)+j);
        //Очистка буфера ввода
        fflush(stdin);
    }
 
    //Ввод размеров второго массива
    puts("");
    puts("Введите размер второго массива (m1 x k1): ");
    scanf_s("%d %d",&m1,&k1);
    //Динамическое выделение памяти под второй массив
    if (!(B=new int*[m1]))
    {
        printf_s("Недостаточно памяти!\n");
        exit(1);
    }
    for(i=0;i<m1;i++)
        if (!(*(B+i)=new int[k1]))
        {
            printf_s("Недостаточно памяти!\n");
            A=NULL;
            exit(1);
        }
    
    i=0;
    j=0;
    while (i<m1)
    {
        while (j<k1)
        {
            //Проверка. Если индекс элемента не превышает индекс первого
            //массива, то значение второго массива равно первому, иначе 0
            if (i<m&&j<k) *(*(B+i)+j)=*(*(A+i)+j);
            else *(*(B+i)+j)=0;
            j++;
        }
        i++;
        j=0;
    }
 
    //Вывод первого массива
    system("cls");
    printf_s("Первый массив размером %d строк x %d столбцов:\n",m,k);
    for (i=0;i<m;i++)
    {
        for (j=0;j<k;j++)
            printf_s("%d ",*(*(A+i)+j));
        printf_s("\n");
    }
    //Вывод второго массива
    printf_s("\nВторой массив размером %d строк x %d столбцов:\n",m1,k1);
    for (i=0;i<m1;i++)
    {
        for (j=0;j<k1;j++)
            printf_s("%d ",*(*(B+i)+j));
        printf_s("\n");
    }
    _getch();
}
PS Сделано динамическое выделение памяти под массивы (размеры ведь вводятся с клавиатуры). Поэтому в конце кода надо добавит освобождение памяти:
C++
1
2
3
4
5
6
7
8
    //Освобождение памяти первого массива
    for(i=0;i<m;i++)
        delete [](*(A+i));
    delete []A;
    //Освобождение памяти второго массива
    for(i=0;i<m1;i++)
        delete [](*(B+i));
    delete []B;
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru