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

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

Войти
Регистрация
Восстановить пароль
 
 
OffyGhost
7 / 7 / 1
Регистрация: 04.03.2010
Сообщений: 107
#1

Матрица; сумма крайних элементов - C++

09.03.2010, 14:01. Просмотров 904. Ответов 19
Метки нет (Все метки)

Помогите =)

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

Добавлено через 27 минут
вот код инициализации двумерного массива опять же)

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
#include <stdio.h>
#include <stdafx.h>
#include <conio.h>
#include <clocale>
#include <math.h>
#define N 10
#define M 10
 
int main( void )
{
  setlocale(LC_ALL, "Russian");
  double mas[N] [M];
  int i, j, k, n, m;
  //Ввод данных
    printf( "Введите количество строчек: " );
    scanf( "%d", & n );
        printf( "Введите количество столбцов: " );
    scanf( "%d", & m );
 
//n строчек, m столбцов, забивание массива
  printf( "Введите значения:\n" );
  for ( i = 0; i < n; i++ )
    for ( j = 0; j < m; j++ )
      scanf( "%lf", & mas[i] [j] );
 
    //Вывод на экран матрицы
  printf( "Матрица:\n" );
  for ( i = 0; i < n; i++ )
  {
    for ( j = 0; j < m ; j++ )
      printf( "%7.2f ", mas[i][j] );
    printf( "\n" );
  }
 
 
  getchar();
  getchar();
}
Добавлено через 12 минут
Крайние элементы, как я понимаю, это

C++
1
2
3
4
5
a11 a12 ... a1M
a21               a2M 
a31               a3M
...                  ...
aN1 aN2    ...   aNM
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.03.2010, 14:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Матрица; сумма крайних элементов (C++):

Матрица! Сумма элементов строки - C++
Под С В данной действительной матрице порядка n найти сумму элементов строки, в которой располагается элемент с наименьшим значением. ...

Матрица. Перестановка и сумма элементов - C++
Задача, состоящая из двух частей: 1) Характеристикой столбца целочисленной матрицы назовем сумму модулей его отрицательных нечетных...

Матрица (сумма элементов, отличных от нуля) - C++
Данная целочисленная квадратная матрица. Определить сумму элементов отличных от нуля.

Сумма элементов, минимум... Квадратная матрица - C++
не понимаю как справиться с данной задачей

Матрица. Сумма элементов в строках, не содержащих отрицательные элементы. - C++
Дана целочисленная квадратная матрица. Определить: 1) сумму элементов в тех строках, которые не содержат отрицательных эле- ментов; ...

Задана матрица.ВЫполнить сортировку эл.по возрастанию в тех строках матрицы сумма элементов в которых положительная - C++
Задана матрица.Выполнить сортировку эл.по возрастанию в тех строках матрицы сумма элементов в которых положительная. Помогите с...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Vorona
Peace 2 all shining faces
668 / 530 / 45
Регистрация: 05.03.2010
Сообщений: 1,277
09.03.2010, 14:22 #2
C++
1
2
3
4
5
6
7
8
k = 0;
....
for ( i = 0; i < (n*2); i++ )
    k++;
for ( j = 0; j < ((m*2)-4); j++ )
    k++;
 
printf( "%d", k );
OffyGhost
7 / 7 / 1
Регистрация: 04.03.2010
Сообщений: 107
09.03.2010, 14:22  [ТС] #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
#include <stdio.h>
#include <stdafx.h>
#include <conio.h>
#include <clocale>
#include <math.h>
#define N 10
#define M 10
 
int main( void )
{
  setlocale(LC_ALL, "Russian");
  double mas[N] [M];
  int i, j, k, n, m;
 
  //Ввод данных
    printf( "Введите количество строчек: " );
    scanf( "%d", & n );
        printf( "Введите количество столбцов: " );
    scanf( "%d", & m );
 
//n строчек, m столбцов, забивание массива
  printf( "Введите значения:\n" );
  for ( i = 0; i < n; i++ )
    for ( j = 0; j < m; j++ )
      scanf( "%lf", & mas[i] [j] );
 
    //Вывод на экран матрицы
  printf( "Матрица:\n" );
  for ( i = 0; i < n; i++ )
  {
    for ( j = 0; j < m ; j++ )
      printf( "%7.2f ", mas[i][j] );
    printf( "\n" );
  }
 //сумма только крайних ее элементов
 
    double sum=0;
for(i=0;i<m;i++)
{
    sum+=mas[0][i];
}
 
for(i=0;i<n;i++)
{
    sum+=mas[n][i];
}
 
for(i=0;i<m;i++)
{
    sum+=mas[m][i];
}
 
for(i=0;i<n;i++)
{
    sum+=mas[i][0];
}
 
  printf( "Cумма крайних элементов: %7.2lf\n", sum);
 
  getchar();
  getchar();
}
получается
Матрица; сумма крайних элементов
OffyGhost
7 / 7 / 1
Регистрация: 04.03.2010
Сообщений: 107
09.03.2010, 14:26  [ТС] #4
Цитата Сообщение от Vorona Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
k = 0;
....
for ( i = 0; i < (n*2); i++ )
    k++;
for ( j = 0; j < ((m*2)-4); j++ )
    k++;
 
printf( "%d", k );
Введите количество строчек: 3
Введите количество столбцов: 3
Введите значения:
1 1 1
1 6 1
1 1 1
Матрица:
1,00 1,00 1,00
1,00 6,00 1,00
1,00 1,00 1,00

Сумма крайних элементов: 0
получается вот так вот
mamedovvms
2916 / 837 / 93
Регистрация: 30.04.2009
Сообщений: 2,627
09.03.2010, 14:29 #5
C
1
2
3
4
5
6
7
k=0;
for ( i = 0; i < n; i++ )
for ( j = 0; j < m; j++ )
 if (i==n-1||i==0||j==m-1||j==0)  k+=mas[i][j];
   
 
printf( "%d", k )
Vorona
Peace 2 all shining faces
668 / 530 / 45
Регистрация: 05.03.2010
Сообщений: 1,277
09.03.2010, 14:31 #6
не может быть
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
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define N 10
#define M 10
 
int main( void )
{
    double mas[N][M];
    int i, j, k = 0, n, m;
    printf( "Enter line quantity: " );
    scanf( "%d", & n );
    printf( "Enter column quantity: " );
    scanf( "%d", & m );
 
    printf( "Enter elements:\n" );
    for ( i = 0; i < n; i++ )
        for ( j = 0; j < m; j++ )
            scanf( "%lf", & mas[i][j] );
 
    printf( "Matrix:\n" );
    for ( i = 0; i < n; i++ )
    {
        for ( j = 0; j < m ; j++ )
            printf( "%.0f ", mas[i][j] );
        printf( "\n" );
    }
 
    for ( i = 0; i < (n*2); i++ )
        k++;
    for ( j = 0; j < ((m*2)-4); j++ )
        k++;
 
    printf( "%d", k );
 
    getch();
}
все работает
mamedovvms
2916 / 837 / 93
Регистрация: 30.04.2009
Сообщений: 2,627
09.03.2010, 14:34 #7
Цитата Сообщение от Vorona Посмотреть сообщение
все работает
так на сколько я понял оно у тебя считает количество крайних элементов, а не их сумму. Конечно если они единичные то их сумма будет совпадать с их количеством, но что делать если они не единичные

Добавлено через 48 секунд
Цитата Сообщение от Vorona Посмотреть сообщение
for ( i = 0; i < (n*2); i++ ) k++; for ( j = 0; j < ((m*2)-4); j++ ) k++; printf( "%d", k );
в этом коде нигде не используются элементы массива, как ты можешь найти их сумму???
OffyGhost
7 / 7 / 1
Регистрация: 04.03.2010
Сообщений: 107
09.03.2010, 14:35  [ТС] #8
Цитата Сообщение от mamedovvms Посмотреть сообщение
C
1
2
3
4
5
6
7
k=0;
for ( i = 0; i < n; i++ )
for ( j = 0; j < m; j++ )
 if (i==n-1||i==0||j==m-1||j==0)  k+=mas[i][j];
   
 
printf( "%d", k )

неудача

1>------ Build started: Project: spo_var21_1, Configuration: Debug Win32 ------
1>Compiling...
1>spo_var21_1.cpp
1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\spo_var21_1\spo_var21_1\spo_var21_1.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) : see declaration of 'scanf'
1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\spo_var21_1\spo_var21_1\spo_var21_1.cpp(19) : 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) : see declaration of 'scanf'
1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\spo_var21_1\spo_var21_1\spo_var21_1.cpp(25) : 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) : see declaration of 'scanf'
1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\spo_var21_1\spo_var21_1\spo_var21_1.cpp(37) : error C2086: 'int k' : redefinition
1> c:\documents and settings\admin\мои документы\visual studio 2008\projects\spo_var21_1\spo_var21_1\spo_var21_1.cpp(13) : see declaration of 'k'
1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\spo_var21_1\spo_var21_1\spo_var21_1.cpp(41) : warning C4244: '+=' : conversion from 'double' to 'int', possible loss of data
1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\spo_var21_1\spo_var21_1\spo_var21_1.cpp(45) : error C2146: syntax error : missing ';' before identifier 'getchar'
1>Build log was saved at "file://c:\Documents and Settings\Admin\Мои документы\Visual Studio 2008\Projects\spo_var21_1\spo_var21_1\Debug\BuildLog.htm"
1>spo_var21_1 - 2 error(s), 4 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
missing ; исправил
Vorona
Peace 2 all shining faces
668 / 530 / 45
Регистрация: 05.03.2010
Сообщений: 1,277
09.03.2010, 14:35 #9
ээ, извиняюсь, протупил
плохо задание прочитал)

2 раза k объявляешь, и ; забыл после printf
mamedovvms
2916 / 837 / 93
Регистрация: 30.04.2009
Сообщений: 2,627
09.03.2010, 14:38 #10
C
1
double k=0;
тип k должен быть такой же как и массив
OffyGhost
7 / 7 / 1
Регистрация: 04.03.2010
Сообщений: 107
09.03.2010, 14:41  [ТС] #11
Цитата Сообщение от Vorona Посмотреть сообщение
ээ, извиняюсь, протупил
плохо задание прочитал)

2 раза k объявляешь, и ; забыл после printf
исправил как только double k
Введите количество строчек: 3
Введите количество столбцов: 3
Введите значения:
1 1 1
1 6 1
1 1 1
Матрица:
1,00 1,00 1,00
1,00 6,00 1,00
1,00 1,00 1,00
0

Vorona
Peace 2 all shining faces
668 / 530 / 45
Регистрация: 05.03.2010
Сообщений: 1,277
09.03.2010, 14:42 #12
у тебя уже объявлена k в начале программы, просто присвой ей 0 и больше не нужно объявлять ее

тебе же mamedovvms написал правильный алгоритм, он работает
OffyGhost
7 / 7 / 1
Регистрация: 04.03.2010
Сообщений: 107
09.03.2010, 14:45  [ТС] #13
Цитата Сообщение от Vorona Посмотреть сообщение
у тебя уже объявлена k в начале программы, просто присвой ей 0 и больше не нужно объявлять ее

тебе же mamedovvms написал правильный алгоритм, он работает
1) объявил k перед циклом как double k=0;
2) его алгоритм может работает, но не у меня

этот код работает как

Введите количество строчек: 3
Введите количество столбцов: 3
Введите значения:
1 1 1
1 6 1
1 1 1
Матрица:
1,00 1,00 1,00
1,00 6,00 1,00
1,00 1,00 1,00

Сумма крайних элементов: 0
вот мой кот:
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
#include <stdio.h>
#include <stdafx.h>
#include <conio.h>
#include <clocale>
#include <math.h>
#define N 10
#define M 10
 
int main( void )
{
  setlocale(LC_ALL, "Russian");
  double mas[N] [M];
  int i, j, n, m;
 
  //Ввод данных
    printf( "Введите количество строчек: " );
    scanf( "%d", & n );
        printf( "Введите количество столбцов: " );
    scanf( "%d", & m );
 
//n строчек, m столбцов, забивание массива
  printf( "Введите значения:\n" );
  for ( i = 0; i < n; i++ )
    for ( j = 0; j < m; j++ )
      scanf( "\n%lf", & mas[i] [j] );
 
    //Вывод на экран матрицы
  printf( "\nМатрица:\n" );
  for ( i = 0; i < n; i++ )
  {
    for ( j = 0; j < m ; j++ )
      printf( "%7.2f ", mas[i][j] );
    printf( "\n" );
  }
 //сумма только крайних ее элементов
 
double k=0;
 
for ( i = 0; i < n; i++ )
    for ( j = 0; j < m; j++ )
    if (i==n-1||i==0||j==m-1||j==0)
k+=mas[i][j];
    
printf( "\nСумма крайних элементов: %d", k );
 
  getchar();
  getchar();
}
Vorona
Peace 2 all shining faces
668 / 530 / 45
Регистрация: 05.03.2010
Сообщений: 1,277
09.03.2010, 14:46 #14
вот вся програма
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
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define N 10
#define M 10
 
int main( void )
{
    double mas[N][M];
    int i, j, n, m;
        double k = 0;
        printf( "Enter number of horizontal strings: " );
        scanf( "%d", & n );
                printf( "Entre number of vertical strings: " );
        scanf( "%d", & m );
 
    printf( "Enter elements:\n" );
    for ( i = 0; i < n; i++ )
        for ( j = 0; j < m; j++ )
            scanf( "%lf", & mas[i][j] );
 
    printf( "Matrix:\n" );
    for ( i = 0; i < n; i++ )
    {
        for ( j = 0; j < m ; j++ )
            printf( "%.0f ", mas[i][j] );
        printf( "\n" );
    }
 
    for ( i = 0; i < n; i++ )
        for ( j = 0; j < m; j++ )
            if (i==n-1||i==0||j==m-1||j==0)  k+=mas[i][j];
 
        printf( "%d", k );
    getch();
}
mamedovvms
2916 / 837 / 93
Регистрация: 30.04.2009
Сообщений: 2,627
09.03.2010, 14:47 #15
переменную k надо объявить в начале программы но тип у нее должен быть double, а перед циклом можно убрать ее

Добавлено через 43 секунды
Vorona, да не будет так работать потому что тип массива и тип переменной k разные, надо что бы они были одного типа
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.03.2010, 14:47
Привет! Вот еще темы с ответами:

Найти все четырёхзначные числа, у которых сумма крайних цифр равна сумме средних цифр, а само число делится на 6 и 27 - C++
найти все четырёхзначные числа , у которых сумма крайних цифр равна сумме средних цифр , а само число делится на 6 и 27 . В С++

Найти позиции крайних отрицательных элементов массива - C++
Кто знает, как решается задача на С++, при помощи сортировки? Дан массив случайных чисел в диапазоне от -20 до +20. Необходимо найти ...

Проблема с массивом - найти позиции крайних отрицательных элементов - C++
Дан массив случайных чисел в диапазоне от -20 до +20. Необходимо найти позиции крайних отрицательных элементов (самого левого...

Определить, является ли заданная матрица N-го порядка магическим квадратом, т.е. такой, в которой сумма элементов во всех строках и столбцах одинакова - C++
Определить, является ли заданная матрица N-го порядка магическим квадратом, т.е. такой, в которой сумма элементов во всех строках и...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
09.03.2010, 14:47
Ответ Создать тему
Опции темы

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