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

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

Восстановить пароль Регистрация
 
OffyGhost
 Аватар для OffyGhost
7 / 7 / 1
Регистрация: 04.03.2010
Сообщений: 107
09.03.2010, 14:01     Матрица; сумма крайних элементов #1
Помогите =)

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

Добавлено через 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
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vorona
Peace 2 all shining faces
 Аватар для Vorona
660 / 522 / 44
Регистрация: 05.03.2010
Сообщений: 1,256
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
 Аватар для 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
 Аватар для 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
2913 / 834 / 93
Регистрация: 30.04.2009
Сообщений: 2,613
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
 Аватар для Vorona
660 / 522 / 44
Регистрация: 05.03.2010
Сообщений: 1,256
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
2913 / 834 / 93
Регистрация: 30.04.2009
Сообщений: 2,613
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
 Аватар для 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
 Аватар для Vorona
660 / 522 / 44
Регистрация: 05.03.2010
Сообщений: 1,256
09.03.2010, 14:35     Матрица; сумма крайних элементов #9
ээ, извиняюсь, протупил
плохо задание прочитал)

2 раза k объявляешь, и ; забыл после printf
mamedovvms
2913 / 834 / 93
Регистрация: 30.04.2009
Сообщений: 2,613
09.03.2010, 14:38     Матрица; сумма крайних элементов #10
C
1
double k=0;
тип k должен быть такой же как и массив
OffyGhost
 Аватар для 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
 Аватар для Vorona
660 / 522 / 44
Регистрация: 05.03.2010
Сообщений: 1,256
09.03.2010, 14:42     Матрица; сумма крайних элементов #12
у тебя уже объявлена k в начале программы, просто присвой ей 0 и больше не нужно объявлять ее

тебе же mamedovvms написал правильный алгоритм, он работает
OffyGhost
 Аватар для 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
 Аватар для Vorona
660 / 522 / 44
Регистрация: 05.03.2010
Сообщений: 1,256
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
2913 / 834 / 93
Регистрация: 30.04.2009
Сообщений: 2,613
09.03.2010, 14:47     Матрица; сумма крайних элементов #15
переменную k надо объявить в начале программы но тип у нее должен быть double, а перед циклом можно убрать ее

Добавлено через 43 секунды
Vorona, да не будет так работать потому что тип массива и тип переменной k разные, надо что бы они были одного типа
OffyGhost
 Аватар для OffyGhost
7 / 7 / 1
Регистрация: 04.03.2010
Сообщений: 107
09.03.2010, 14:49  [ТС]     Матрица; сумма крайних элементов #16
Огромное спасибо!! вот этот код работает =)))

Добавлено через 1 минуту
Цитата Сообщение от mamedovvms Посмотреть сообщение
переменную k надо объявить в начале программы но тип у нее должен быть double, а перед циклом можно убрать ее

Добавлено через 43 секунды
Vorona, да не будет так работать потому что тип массива и тип переменной k разные, надо что бы они были одного типа
я разобрался, спасибо =) теперь все работает!
Vorona
Peace 2 all shining faces
 Аватар для Vorona
660 / 522 / 44
Регистрация: 05.03.2010
Сообщений: 1,256
09.03.2010, 14:49     Матрица; сумма крайних элементов #17
mamedovvms, у меня и c int k работало, для точности пусть double будет
mamedovvms
2913 / 834 / 93
Регистрация: 30.04.2009
Сообщений: 2,613
09.03.2010, 14:51     Матрица; сумма крайних элементов #18
ну вообще не должно было вот если бы наоборот тогда да, но лучше придерживаться такого правила, что тип массива и тип суммы должен быть одним и тем же за исключением некоторых случаев
Vorona
Peace 2 all shining faces
 Аватар для Vorona
660 / 522 / 44
Регистрация: 05.03.2010
Сообщений: 1,256
09.03.2010, 14:53     Матрица; сумма крайних элементов #19
дело не в типе массива, а в i и j, они элементы массива с которыми мы и работаем, а тип у них int)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.03.2010, 15:04     Матрица; сумма крайних элементов
Еще ссылки по теме:

C++ Задана матрица.ВЫполнить сортировку эл.по возрастанию в тех строках матрицы сумма элементов в которых положительная
C++ Матрица (сумма элементов, отличных от нуля)
C++ Найти все четырёхзначные числа, у которых сумма крайних цифр равна сумме средних цифр, а само число делится на 6 и 27

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

Или воспользуйтесь поиском по форуму:
Amarted
 Аватар для Amarted
157 / 19 / 2
Регистрация: 26.02.2010
Сообщений: 56
09.03.2010, 15:04     Матрица; сумма крайних элементов #20
Цитата Сообщение от 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 )
А так не проще?
C++
1
2
3
for ( j = 0; j<n; ++j )
k += mas[j][0] + mas[j][n-1];
printf( "%d", k );
Yandex
Объявления
09.03.2010, 15:04     Матрица; сумма крайних элементов
Ответ Создать тему
Опции темы

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