Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
3 / 3 / 1
Регистрация: 25.12.2013
Сообщений: 11

Найти сумму элементов заштрихованной области таблицы А размером МхN для любого N > 1

25.12.2013, 13:16. Показов 2091. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам


Задание - Найти сумму элементов заштрихованной области таблицы А размером МхN для любого N > 1.

- - - - -
- x x x -
- x x x -
- x x x -
- - - - -

Ну т.е, M=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
74
75
76
77
78
79
80
81
82
83
84
#include <iostream>
#include <fstream>
#include <conio.h>
#include <iomanip>
 
using namespace std;
 
void outputm(double **a, int n, int m);
 
int main()
 
  { 
      int m, n, i, j, S=0;
 
      double** a = new double *[m];
    
      for(int i = 0; i < m; i++)
      a[i] = new double[n];
 
      fstream file;
      file.open("in.txt",ios::in);
 
 
      if(file==NULL)
        
            {
                  cout<<" Ошибка чтения файла. Проверьте файл в нужной директории.\n\n";
                  system("pause");
            }
 
      file >> n;
      file >> m;
 
      for(j=0;j<m;j++)
      for(i=0;i<n;i++)
 
      file >> a[i][j];
 
      for(i=1;i<n-1;i++)     
      for(j=1;j<m-1;j++)
         
          S+=a[i][j];
 
      outputm(a,n,m);
      _getch();
      return 0;
  }
 
void outputm(double **a, int n, int m)
 
  { 
      fstream fout;
      fout.open("out.txt",ios::out);
 
      int i, j, S;
 
      for(i=0; i<n; i++)
 
           {
               cout << "Исходная матрица:\n";
               for(j=0; j<m; j++)
               cout<< setw(10)<< a[i][j];
               fout << "Исходная матрица:\n";
               for(j=0; j<m; j++)
               fout<< setw(10)<< a[i][j];
 
           }
      
      for(i=1; i<n-1; i++)
 
           {
               cout << "Заштрихованная область:\n";
               for(j=1; j<m-1; j++)
               cout<< setw(10)<< a[i][j];
               fout << "Заштрихованная область:\n";
               for(j=1; j<m-1; j++)
               fout<< setw(10)<< a[i][j];
 
           }
            
      cout << endl << " Сумма: " << S;
      fout << endl << " Сумма: " << S;
 
  }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.12.2013, 13:16
Ответы с готовыми решениями:

Найти сумму элементов в заштрихованной области матрицы
Обшарил форум, но решения для данной задачи так и не нашел. Подскажите, каким способом перебрать двумерный массив? ЗАДАЧА: Дана...

Найти сумму элементов матрицы в заштрихованной области
Найти сумму элементов матрицы в заштрихованной области.Ввод и вывод матрицы оформить в виде процедур. Заранее спасибо!

Найти сумму элементов массива А с заштрихованной области
Дана матрица А чисел размером 5х5 элементов. Найти сумму элементов массива А с заштрихованной области :

12
3 / 3 / 1
Регистрация: 25.12.2013
Сообщений: 11
25.12.2013, 14:09  [ТС]
Вот такую штучку выдает.

0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
25.12.2013, 14:11
В четырнадцатой строке должна быть инициализирована переменная m - размер массива.
1
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
25.12.2013, 14:41
строки 15-18 перенести на 33 строку
1
3 / 3 / 1
Регистрация: 25.12.2013
Сообщений: 11
25.12.2013, 15:43  [ТС]
Спасибо

Еще вопросик.

На экране все чудесно, а в файлике беда. Что такое, в чем проблема ?

0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
25.12.2013, 17:20
Цитата Сообщение от ВСЕМ ПРИВЕТИК Посмотреть сообщение
На экране все чудесно, а в файлике беда. Что такое, в чем проблема ?
У Вас одна и та же ошибка по всему коду:
создаете массив строк -m , столбцов -n.
Цитата Сообщение от ВСЕМ ПРИВЕТИК Посмотреть сообщение
C++
1
2
3
double** a = new double *[m];
for(int i = 0; i < m; i++)
 a[i] = new double[n];
а затем везде работаете с массивом как будто у него n строк, m столбцов.
0
3 / 3 / 1
Регистрация: 25.12.2013
Сообщений: 11
25.12.2013, 18:16  [ТС]
Поправил. Матрица стала MxN, но в файле по-прежнему какая-то гадость.

0
3 / 3 / 1
Регистрация: 25.12.2013
Сообщений: 11
25.12.2013, 18:18  [ТС]
Мб код поможет.

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
98
99
100
#include <iostream>
#include <fstream>
#include <conio.h>
#include <iomanip>
 
using namespace std;
 
void OutPut(double **a, int n, int m);
 
int main()
 
  {   
      setlocale (0, "Rus");
 
      cout << " Автор:              . Версия - 1.0.\n";
      cout << " Вычисление заштрихованной области матрицы." << endl <<endl;
 
 
      int m, n, i, j, S=0;
 
      fstream file;
      file.open("in.txt",ios::in);
 
 
      if(file==NULL)
        
            {
                  cout<<" Ошибка чтения файла. Проверьте файл в нужной директории.\n\n";
                  system("pause");
            }
 
      file >> n;
      m=n;
 
      double** a = new double *[m];
    
      for(int i = 0; i < m; i++)
      a[i] = new double[n];
 
      for(i=0;i<m;i++)
      for(j=0;j<n;j++)
 
      file >> a[i][j];
 
      file.close();
 
      OutPut (a, n, m);
      system("pause");
      return 0;
  }
 
void OutPut(double **a, int n, int m)
 
  { 
 
      fstream fout;
      fout.open("out.txt",ios::out);
 
      int i, j, S=0;
 
      cout << " Исходная матрица:\n";
      fout << " Исходная матрица:\n";
      for(i=0; i<m; i++)
 
           { 
 
               cout << endl;
               fout << endl;
               for(j=0; j<n; j++)
               cout << setw(10)<< a[i][j];
               fout << setw(10) << a[i][j];
 
           }
 
      cout << " \n\n Заштрихованная область:\n";
      fout << " \n\n Заштрихованная область:\n";
      for(i=1; i<m-1; i++)
 
           {
 
               cout << endl;
               fout << endl;
               for(j=1; j<n-1; j++)
               cout << setw(10) << a[i][j];
               fout << setw(10) << a[i][j];
 
           }
            
      for(i=1;i<m-1;i++)     
      for(j=1;j<n-1;j++)
         
           S+=a[i][j];
 
 
      cout << endl << " \n Сумма: " << S << endl << endl;
      fout << endl << " \n Сумма: " << S << endl << endl;
 
      fout.close();
 
  }
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
25.12.2013, 19:48
тогда последний штрих:
в функции OutPut():
это:
Цитата Сообщение от ВСЕМ ПРИВЕТИК Посмотреть сообщение
C++
1
2
3
for(j=0; j<n; j++)
 cout << setw(10)<< a[i][j];
 fout << setw(10) << a[i][j];
замените на:
C++
1
2
3
4
5
            for(j=0; j<n; j++)
               {
               cout << setw(10)<< a[i][j];
               fout << setw(10) << a[i][j];
               }
и это:
Цитата Сообщение от ВСЕМ ПРИВЕТИК Посмотреть сообщение
C++
1
2
3
for(j=1; j<n-1; j++)
 cout << setw(10) << a[i][j];
 fout << setw(10) << a[i][j];
замените на:
C++
1
2
3
4
5
              for(j=1; j<n-1; j++)
               {
               cout << setw(10) << a[i][j];
               fout << setw(10) << a[i][j];
               }
0
3 / 3 / 1
Регистрация: 25.12.2013
Сообщений: 11
25.12.2013, 20:51  [ТС]
Валерий, спасибо огромное

Проблема решена.
0
3 / 3 / 1
Регистрация: 25.12.2013
Сообщений: 11
27.12.2013, 01:17  [ТС]
Снова я. Ребята, выручайте.

Мне нужно добавить проверку на кол-во значений.

То есть, я в файле задаю, что N=6, но вместо 36 элементов в файл пишу, например, только 16 элементов. Следовательно, 20 элементов заполняются каким-то мусором.

Пример:


Нужно чтобы такого не происходило

Я так понимаю надо что-то с while (!file.eof()) поколдовать, но у меня ничего не получается )
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
27.12.2013, 06:35
Цитата Сообщение от ВСЕМ ПРИВЕТИК Посмотреть сообщение
То есть, я в файле задаю, что N=6, но вместо 36 элементов в файл пишу, например, только 16 элементов. Следовательно, 20 элементов заполняются каким-то мусором.
считав N=6, вы создадите массив 6*6. Сразу после создания такого массива все 36 элементов заполнены "каким-то мусором". Считав 16 значений из файла и прекратив считывание, все равно в 20 элементах будет мусор.
0
Заблокирован
27.12.2013, 08:46
ВСЕМ ПРИВЕТИК, может быть немного коряво, но считайте n, потом обнулите массив, а после считывайте значения.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.12.2013, 08:46
Помогаю со студенческими работами здесь

Найти сумму элементов в заштрихованной области матрицы
Дана матрица А чисел размером 5х5 элементов. Найти сумму элементов массива А из заштрихованной области:

Найти сумму элементов матрицы расположенных в заштрихованной области
Дана квадратная матрица порядка n. Найти сумму ее элементов, расположенных в заштрихованной области. Размер матрицы и ее элементы...

Найти номер столбца массива размером МхN, в котором находится наибольшее количество элементов, кратных 5
Можете помочь. &quot;Найти номер столбца массива размером МхN, в котором находится наибольшее количество элементов, кратных 5. Элементы задаются...

Надо найти номер строки массива размером МхN, в котором находится наибольшее количество четных элементов
Помогите решить, надо найти номер строки массива размером МхN, в котором находится наибольшее количество четных элементов. Элементы...

В квадратной матрице размером n найти наименьший элемент, находящийся в заштрихованной области
В заданной квадратной матрице размером n найти наименьший элемент, находящийся в соответствующей заштрихованной области.


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru