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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Евгений Саныч
Сообщений: n/a
#1

Преобразование двумерного массива - C++

16.12.2010, 23:33. Просмотров 494. Ответов 1
Метки нет (Все метки)

Добрый вечер.
Сегодня передо мной поставили задачу следующего содержания:

Даны 2 двумерных массива X[4][4] и Y[4][4]. Необходимо найти одномерные массивы X1[4] и Y1[4], соблюдая следующие условия: - X1[i] - среднее арифметическое максимального и минимального значений элементов строки в массиве X; - Y1[i] - аналогично по массиву Y.

Пол головы сломал и никак не пойму что куда. Может кто подсказать.

Добавлено через 1 час 5 минут
Цитата Сообщение от Евгений Саныч Посмотреть сообщение
Добрый вечер.
Сегодня передо мной поставили задачу следующего содержания:

Даны 2 двумерных массива X[4][4] и Y[4][4]. Необходимо найти одномерные массивы X1[4] и Y1[4], соблюдая следующие условия: - X1[i] - среднее арифметическое максимального и минимального значений элементов строки в массиве X; - Y1[i] - аналогично по массиву Y.

Пол головы сломал и никак не пойму что куда. Может кто подсказать.
Вот мой код программы... что-то там намудрил...

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
#include <iostream.h>
#define I 4
#define J 4
 
void vvodmas( int [I][J], char );
int preobr( int [I][J] );
void pech ( int [I][J], char, int);
void main()
{
  int X[I][J],Y[I][J],X1[4],Y1[4];
  vvodmas(X,'X');
  vvodmas(Y,'Y');
  X1[4] = preobr(X);
  Y1[4] = preobr(Y);
  pech(X,'X',X1[4]);
  pech(Y,'Y',Y1[4]);
}
void vvodmas(int m[I][J], char im)
{
  int i,j;
  cout << "\nВводим массив " << im << "\n";
  for (i=0; i<I; i++)
    for ( j=0; j < J; j++)
    {
      cout << im << "[" << i << "][" << j << "] = ";
      cin >> m[i][j];
    }
}
int preobr (int x[I][J])
{
  int i, j, str, min, max;
  min = x[0][0];
  max = x[0][0];
    for (i=0; i<I; i+=1)
    if ( x[i][j] < min )
    min = x[i][j];
    {
    if ( x[i][j] > max )
    max = x[i][j];
    }
  str=i;
  return (str);
}
void pech(int x[I][J], char immas, int preobr)
{
  int i,j;
  cout <<"\n\nИсходный массив " << immas << "\n";
  for (i=0; i<I; i++)
    {
      cout << "\n";
      for (j=0; j<J; j++)
        {
    cout.width(7);     
    cout << x[i][j];
        }
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2010, 23:33     Преобразование двумерного массива
Посмотрите здесь:

C++ Преобразование двумерного массива.Подскажите пжл!
Преобразование двумерного массива C++
залить из двумерного массива данные в одномерный длиной, равной количеству всех элементов исходного массива C++
Преобразование двумерного массива в одномерный C++
Найти номер строки и столбца двумерного массива для минимального элемента этого массива C++
C++ Заменить все элементы массива, попадающие в интервал, нулем. Выполнить двумя способами: с помощью одномерного и двумерного массива.
1. Написать функцию проверяющую есть ли отрицательные элементы в указанной строке двумерного массива. Удалить из массива все строки с отрицательными э C++
Преобразование нединамического двумерного массива через указатели C++
Внутреннее устройство многомерного массива и неявное преобразование массива в указатель C++
Преобразование двумерного массива в одномерный C++
C++ Преобразование двумерного массива
C++ Удалить из двумерного массива элементы другого массива

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4819 / 3239 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
17.12.2010, 04:46     Преобразование двумерного массива #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
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
#include <stdio.h>
 
void randomizing(int arr[4][4]);
void print4x4(int arr[4][4]);
void count(double dest[4], int arr[4][4]);
void print(double arr[4]);
 
int main(void)
{
    int x[4][4], y[4][4];
    double x1[4], y1[4];
    
    randomizing(x);
    randomizing(y);
    
    print4x4(x);
    putchar('\n');
    print4x4(y);
    
    count(x1, x);
    count(y1, y);
    
    print(x1);
    print(y1);
    
    return 0;
}
 
#include <stdlib.h>
 
void randomizing(int arr[4][4])
{
    int i, j;
    
    for (i = 0; i < 4; i++)
        for (j = 0; j < 4; j++)
            arr[i][j] = rand() % 100;
}
 
void print4x4(int arr[4][4])
{
    int i, j;
    
    for (i = 0; i < 4; i++) {
        for (j = 0; j < 4; j++)
            printf(" %4d", arr[i][j]);
        putchar('\n');
    }
}
 
void count(double dest[4], int arr[4][4])
{
    int i, j;
    
    for (i = 0; i < 4; i++) {
        int min, max;
        min = max = arr[i][0];
        for (j = 0; j < 4; j++) {
            if (arr[i][j] < min)
                min = arr[i][j];
            if (arr[i][j] > max)
                max = arr[i][j];
        }
        dest[i] = (min + max) / 2.0;
    }
}
 
void print(double arr[4])
{
    int i;
    
    for (i = 0; i < 4; i++)
        printf(" %f", arr[i]);
    putchar('\n');
}
Код
[guest@localhost tests]$ ./t
   83   86   77   15
   93   35   86   92
   49   21   62   27
   90   59   63   26

   40   26   72   36
   11   68   67   29
   82   30   62   23
   67   35   29    2
 50.500000 64.000000 41.500000 58.000000
 49.000000 39.500000 52.500000 34.500000
[guest@localhost tests]$

один результат всегда показывает
Yandex
Объявления
17.12.2010, 04:46     Преобразование двумерного массива
Ответ Создать тему
Опции темы

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