Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
termit21
0 / 0 / 0
Регистрация: 20.03.2018
Сообщений: 6
1

Найти сумму элементов массива в области правого и левого сегмента двумерного массива

26.06.2018, 15:48. Просмотров 362. Ответов 1
Метки нет (Все метки)

Добрый день.Есть задание:Найти сумму элементов массива в области правого и левого сегмента двумерного массива. Массив задать с помощью датчика случайных чисел. Исходный массив и полученный результат поместить в файл.
Я написал программу,но она работает,только если Количество столбцов и строчек равно 3.В противном случае выдаются очень странные числа.
Помогите,пожалуйста
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
97
#include<stdio.h> 
#include<conio.h> 
#include <stdlib.h> 
#include <ctime> 
 
#define K 4
#define N 3
 
void Vvod(int i, int j, int A[K][N])
{
    FILE *file;
    int k = 0;
    file = fopen("asas.txt", "a");
    fprintf(file, "Исходный массив:\n");
    srand(time(0));
    for (i = 0; i < K; i++)
    {
        for (j = 0; j < N; j++)
        {
            A[i][j] = rand() % 11;
        }
    }
        for (i = 0; i < K; i++)
        {
        for (j = 0; j < N; j++)
        {
            k++;
            printf("A[%d][%d]=%2d;", i, j, A[i][j]);
            printf(" ");
            fprintf(file, "A[%d][%d]=%2d;", i, j, A[i][j]);
            fprintf(file, " ");
            if (k == N)
            { 
                printf("\n"); k = 0; fprintf(file, "\n"); 
            }
        }
    }
    fprintf(file, "\n \n \n");
    fclose(file);
}
void Summ(int i, int j, int A[N][N])
{
    int segm1 = 0, segm2 = 0;
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < N; j++)
        {
            if (j < N / 2)
            {
                segm1 += A[i][j];
            }
            else
            {
                if (((N / 2) % 2 == 1))
                { 
                    j++; 
                    segm2 += A[i][j];
                }
            }
        }
    }
    printf("%d\n", segm1);
    printf("%d\n", segm2);
    FILE *file;
    int k = 0;
    file = fopen("asas.txt", "a+");
    fprintf(file, "Полученные сегменты:\n");
    fprintf(file, "segm1[%d]\n segm2[%d]", segm1, segm2);
    fprintf(file, " ");
    if (k == N)
    {
        printf("\n"); k = 0; fprintf(file, "\n");
    }
    fprintf(file, "\n \n \n");
    fclose(file);
 
}
 
 
int main()
{
    system("chcp 1251");
    system("cls");
    printf("Исходный массив:\n");
    FILE *file;
    file = fopen("asas.txt", "w");
    int aver, z, segm1, segm2;
    int i = 0, j = 0, c = 0;
    int A[K][N];
    int B[K];
    Vvod(i, j, A);
    Summ(i, j, A);
    printf("\n");
 
    fclose(file);
    getch();
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.06.2018, 15:48
Ответы с готовыми решениями:

Найти сумму всех элементов двумерного массива
как найти сумму всех элементов двумерного массива заполненного рандомно? ...

Вычислить сумму левого и правого треугольников квадратной матрицы
Вычислить сумму элементов квадратной матрицы, помеченных сим-волом х.

Найдите сумму элементов из заштрихованной области массива
+++++++++ +=======+ +=======+ +=======+ +=======+ +=======+ +=======+...

Найти сумму элементов массива, расположенных до минимального элемента массива
В одномерном массиве n вещественных элементов. вычислить: -произведение...

Посчитать сумму элементов, находящихся в чётных строках двумерного массива
Доброго времени суток! Имеется некий код на C, который, к сожалению работает...

1
stake-k26
541 / 413 / 324
Регистрация: 25.04.2016
Сообщений: 1,197
27.06.2018, 16:10 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
37
38
39
40
#include <stdlib.h>     // srand, rand, exit
#include <stdio.h>      // printf, fprintf
#include <time.h>       // time
// размеры массива:
#define N 4
#define M 3
/* ******************************************************************
 * Найти сумму элементов массива в области правого и левого сегментов
 * двумерного массива
 * *****************************************************************/
int main (void)
{
    srand((unsigned int)time(NULL)/2);
    int a[N][M];
    // заполняем массив случайными и выводим на экран:
    int i, k;
    for (i=0; i<N; i++)
    {
        for (k=0; k<M; k++)
            printf("%3d", a[i][k] = rand()%11);
        printf("\n");
    }
    // найдем суммы правого и левого сегментов
    int b, sum_left, sum_right;
    sum_left = sum_right = 0;
    for (i=0; i<N; i++)
        for (k=0, b=M-1; k<b; k++, b--)
        {
            sum_left += a[i][k];
            sum_right += a[i][b];
        }
    // для теста выведем результат на экран:
    printf("Sum elements in left segment is %d\n", sum_left);
    printf("Sum elements in right segment is %d\n", sum_right);
 
    // все, что осталось сделать, открыть файл для записи ,заменить
    // все printf() на fprintf() и не забыть закрыть файл перед выходом
    // из программы...
    exit(EXIT_SUCCESS);
}
вопрос лишь в том, что если в массиве нечетное количество столбцов, то считать ли центральный столбец частью какого-то сегмента, и если да, то какого? В любом случае это поведение определяется условием в цикле for (k=0, b=M-1; k<b; k++, b--)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.06.2018, 16:10

Вычислить сумму четных элементов побочной диагонали двумерного массива
Составить программу в Си, которая вычисляет сумму четных элементов побочной ...

Описать функцию SumCol() вещественного типа, вычисляющую сумму элементов двумерного массива
не получается передать двумерный массив в функцию. да и вообще не знаю...

Найти произведение элементов двумерного массива
дана квадратная матрица с размернстью m*n,заполненная случайными числами в...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru