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

Обработка массивов - C++

Восстановить пароль Регистрация
 
VitaliyH
3 / 3 / 0
Регистрация: 05.09.2012
Сообщений: 41
04.02.2013, 19:52     Обработка массивов #1
Даны две вещественные квадратные матрицы N-го порядка. Вы-
ведите на экран квадрат той из них, в которой наименьший след
(сумма диагональных элементов). Считайте, что такая матрица одна.

Как в данном решении организовать ввод данных с клавиатуры?

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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
void fill(int **array, int n)
{
    int i, j;
    for(i = 0; i < n; i++)
        for(j = 0; j < n; j++)
            array[i][j] = rand() % 20;
}
 
void show(int **array, int n)
{
    int i, j;
    for(i = 0; i < n; i++)
    {
        for(j = 0; j < n; j++)
            printf("%4d", array[i][j]);
        printf("\n");
    }
}
 
int sum_of_diag(int **array, int n)
{
    int sum = 0, i;
    for(i = 0; i < n; sum += array[i][i], i++);
    return sum;
}
 
int main(int argc, char **argv)
{
    int n = 4;
    int **a, **b;
    int i;
    int sum_a, sum_b;
    a = (int**) malloc(sizeof(int*) * n);
    b = (int**) malloc(sizeof(int*) * n);
    srand(time(NULL));
    for(i = 0; i < n; i++)
    {
        a[i] = (int*) malloc(sizeof(int) * n);
        b[i] = (int*) malloc(sizeof(int) * n);
    }
    fill(a, n);
    fill(b, n);
    printf("Array a: \n");
    show(a, n);
    printf("Array b: \n");
    show(b, n);
    
    printf("Sum of a diag: %d\n", sum_a = sum_of_diag(a, n));
    printf("Sum of b diag: %d\n", sum_b = sum_of_diag(b, n));
    if (sum_a < sum_b)
    {
        printf("A:\n");
        show(a, n);
    }
    else
    {
        printf("B:\n");
        show(b, n);
    }
    for(i = 0; i < n; i++)
    {
        free(a[i]);
        free(b[i]);
    }
    free(a);
    free(b);
    system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2013, 19:52     Обработка массивов
Посмотрите здесь:

C++ Обработка массивов
Обработка массивов C++
C++ обработка массивов
C++ Обработка массивов
C++ Обработка массивов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Михан
 Аватар для Михан
8 / 8 / 1
Регистрация: 05.11.2009
Сообщений: 74
04.02.2013, 20:10     Обработка массивов #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
 printf ("Введите 1 матрицу %i x %i  \n", N, N);
    for ( i = 0; i < N; i++)
    {
        printf ("Элементы  %i -й строки ",  i+1);
        for  ( j = 0; j < N; j++)
     scanf ("%i", &m [i] [j] );
    printf ("Введите 2 матрицу %i x %i  \n", M, M);
    for ( i = 0; i < M; i++)
    {
        printf ("Введите элементы  %i - строки",  i+1);
        for  ( j = 0; j < M; j++)
     scanf ("%i", &m [i] [j] );
В самом начале написать нужно
C++
1
2
# define  N  3  
# define  N  3
И да, буквы на свои поменяй и название массивов
VitaliyH
3 / 3 / 0
Регистрация: 05.09.2012
Сообщений: 41
04.02.2013, 20:38  [ТС]     Обработка массивов #3
Цитата Сообщение от Михан Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
 printf ("Введите 1 матрицу %i x %i  \n", N, N);
    for ( i = 0; i < N; i++)
    {
        printf ("Элементы  %i -й строки ",  i+1);
        for  ( j = 0; j < N; j++)
     scanf ("%i", &m [i] [j] );
    printf ("Введите 2 матрицу %i x %i  \n", M, M);
    for ( i = 0; i < M; i++)
    {
        printf ("Введите элементы  %i - строки",  i+1);
        for  ( j = 0; j < M; j++)
     scanf ("%i", &m [i] [j] );
В самом начале написать нужно
C++
1
2
# define  N  3  
# define  N  3
И да, буквы на свои поменяй и название массивов
# define N 3 это к библиотекам?
немного не вкуриваю как удалить авто создание и заполнение массивов, и вставить ваш код. Чтобы прога еще работала.
Михан
 Аватар для Михан
8 / 8 / 1
Регистрация: 05.11.2009
Сообщений: 74
04.02.2013, 20:50     Обработка массивов #4
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
# define  N  3  
# define  M  3
 
 
int show(int **array, int n)
{
     int i, j;
     printf ("Ââåäèòå 1 Г¬Г*òðèöó %i x %i  \n", N, N);
    for ( i = 0; i < N; i++)
    {
        printf ("ÝëåìåГ*ГІГ»  %i -Г© ñòðîêè ",  i+1);
        for  ( j = 0; j < N; j++)
     scanf ("%i", &array  [i] [j] );
    printf ("Ââåäèòå 2 Г¬Г*òðèöó %i x %i  \n", M, M);
    for ( i = 0; i < M; i++)
    {
        printf ("Ââåäèòå ýëåìåГ*ГІГ»  %i - ñòðîêè",  i+1);
        for  ( j = 0; j < M; j++)
     scanf ("%i", &array [i] [j] ); 
     
    for(i = 0; i < n; i++)
    {
        for(j = 0; j < n; j++)
            printf("%4d", array[i][j]);
        printf("\n");
    }
}
 
int sum_of_diag(int **array, int n);
 
int sum = 0, i;
    for(i = 0; i < n; sum += array[i][i], i++);
    return sum;
}
 
int main(int argc, char **argv);
 
    n = 4;
    int **a, **b;
    
    int sum_a, sum_b;
    a = (int**) malloc(sizeof(int*) * n);
    b = (int**) malloc(sizeof(int*) * n);
    srand(time(NULL));
    for(i = 0; i < n; i++)
    {
        a[i] = (int*) malloc(sizeof(int) * n);
        b[i] = (int*) malloc(sizeof(int) * n);
    }
    fill(a, n);
    fill(b, n);
    printf("Array a: \n");
    show(a, n);
    printf("Array b: \n");
    show(b, n);
    
    printf("Sum of a diag: %d\n", sum_a = sum_of_diag(a, n));
    printf("Sum of b diag: %d\n", sum_b = sum_of_diag(b, n));
    if (sum_a < sum_b)
    {
        printf("A:\n");
        show(a, n);
    }
    else
    {
        printf("B:\n");
        show(b, n);
    }
    for(i = 0; i < n; i++)
    {
        free(a[i]);
        free(b[i]);
    }
    free(a);
    free(b);
    system("pause");
    return 0;
 
}
VitaliyH
3 / 3 / 0
Регистрация: 05.09.2012
Сообщений: 41
04.02.2013, 20:59  [ТС]     Обработка массивов #5
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
# define  N  3  
# define  M  3
 
int show(int **array, int n)
{
     int i, j;
     printf ("Введите 1 матрицу %i x %i  \n", N, N);
    for ( i = 0; i < N; i++)
    {
        printf ("Элементы  %i -й строки ",  i+1);
        for  ( j = 0; j < N; j++)
     scanf ("%i", &array  [i] [j] );
    printf ("Введите 2 матрицу %i x %i  \n", M, M);
    
    for ( i = 0; i < M; i++)
    {
        printf ("Введите элементы  %i - строки",  i+1);
        for  ( j = 0; j < M; j++)
     scanf ("%i", &array [i] [j] ); 
     
    for(i = 0; i < n; i++)
    {
        for(j = 0; j < n; j++)
            printf("%4d", array[i][j]);
        printf("\n");
    }
}
 
int sum_of_diag(int **array, int n)
{
    int sum = 0, i;
    for(i = 0; i < n; sum += array[i][i], i++);
    return sum;
}
 
int main(int argc, char **argv)
{
    int n = 4;
    int **a, **b;
    int i;
    int sum_a, sum_b;
    a = (int**) malloc(sizeof(int*) * n);
    b = (int**) malloc(sizeof(int*) * n);
    srand(time(NULL));
    for(i = 0; i < n; i++)
    {
        a[i] = (int*) malloc(sizeof(int) * n);
        b[i] = (int*) malloc(sizeof(int) * n);
    }
    fill(a, n);
    fill(b, n);
    printf("Array a: \n");
    show(a, n);
    printf("Array b: \n");
    show(b, n);
    
    printf("Sum of a diag: %d\n", sum_a = sum_of_diag(a, n));
    printf("Sum of b diag: %d\n", sum_b = sum_of_diag(b, n));
    if (sum_a < sum_b)
    {
        printf("A:\n");
        show(a, n);
    }
    else
    {
        printf("B:\n");
        show(b, n);
    }
    for(i = 0; i < n; i++)
    {
        free(a[i]);
        free(b[i]);
    }
    free(a);
    free(b);
    system("pause");
    return 0;
}

1>------ Построение начато: проект: 4, Конфигурация: Debug Win32 ------
1>Компиляция...
1>4.cpp
1>c:\users\administrator\documents\visual studio 2008\projects\4\4\4.cpp(17) : warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(306): см. объявление 'scanf'
1>c:\users\administrator\documents\visual studio 2008\projects\4\4\4.cpp(23) : warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(306): см. объявление 'scanf'
1>c:\users\administrator\documents\visual studio 2008\projects\4\4\4.cpp(34) : error C2601: sum_of_diag: недопустимые локальные определения функций
1> c:\users\administrator\documents\visual studio 2008\projects\4\4\4.cpp(10): эта строка содержит '{', которая пока не имеет парной
1>c:\users\administrator\documents\visual studio 2008\projects\4\4\4.cpp(41) : error C2601: main: недопустимые локальные определения функций
1> c:\users\administrator\documents\visual studio 2008\projects\4\4\4.cpp(10): эта строка содержит '{', которая пока не имеет парной
1>c:\users\administrator\documents\visual studio 2008\projects\4\4\4.cpp(83) : fatal error C1075: конец файла обнаружен ранее, чем левая фигурная скобка '{' в "c:\users\administrator\documents\visual studio 2008\projects\4\4\4.cpp(10)"
1>Журнал построения был сохранен в "file://c:\Users\Administrator\Documents\Visual Studio 2008\Projects\4\4\Debug\BuildLog.htm"
1>4 - ошибок 3, предупреждений 2
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Yandex
Объявления
04.02.2013, 20:59     Обработка массивов
Ответ Создать тему
Опции темы

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