Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.03.2010, 13:31   #1
OffyGhost
Пользователь
 
Аватар для OffyGhost
 
Регистрация: 09.03.2010
Сообщений: 12
По умолчанию

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

Заранее, благодарен очень сильно =)

вот код инициализации двумерного массива

Код:
[CPP]#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();
}[/CPP]
Крайние элементы, как я понимаю, это
Код:
a11 a12 ... a1M
a21           a2M 
a31           a3M
...              ...
aN1 aN2 ... aNM

Последний раз редактировалось Stilet; 09.03.2010 в 14:08.
OffyGhost вне форума Ответить с цитированием
Старый 09.03.2010, 14:11   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
потом осуществить обход только крайних ее элементов
Ну дык. Чего сложного? Четыре цикла
Код:
for(i=0;i<m;i++){sum+=a[0][i]}
for(i=0;i<N;i++){sum+=a[n][i]}
for(i=0;i<m;i++){sum+=a[m][i]}
for(i=0;i<N;i++){sum+=a[i][0]}
Делов то..
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.03.2010, 14:22   #3
OffyGhost
Пользователь
 
Аватар для OffyGhost
 
Регистрация: 09.03.2010
Сообщений: 12
По умолчанию

Код:
    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);
OffyGhost вне форума Ответить с цитированием
Старый 09.03.2010, 14:25   #4
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
for(i=0;i<m;i++){sum+=a[0][i]}
for(i=0;i<N;i++){sum+=a[n][i]}
for(i=0;i<m;i++){sum+=a[m][i]}
for(i=0;i<N;i++){sum+=a[i][0]}
Делов то..
Только угловые эл-ты по два раза учитывать не надо. И за границы массива выходить - тоже...
Vago вне форума Ответить с цитированием
Старый 09.03.2010, 14:27   #5
OffyGhost
Пользователь
 
Аватар для OffyGhost
 
Регистрация: 09.03.2010
Сообщений: 12
По умолчанию

Код:
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
так тоже не получается

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ну дык. Чего сложного? Четыре цикла
Код:
for(i=0;i<m;i++){sum+=a[0][i]}
for(i=0;i<N;i++){sum+=a[n][i]}
for(i=0;i<m;i++){sum+=a[m][i]}
for(i=0;i<N;i++){sum+=a[i][0]}
Делов то..
получается
в ответе минус милионное число, но картинку и лог прицепить не могу

Код:
#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" );
  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();
}
этот код работает как

Цитата:
Введите количество строчек: 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

Последний раз редактировалось Stilet; 09.03.2010 в 14:47.
OffyGhost вне форума Ответить с цитированием
Старый 09.03.2010, 14:47   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Только угловые эл-ты по два раза учитывать не надо.
Ну звиняйте... Не тестировал.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.03.2010, 14:54   #7
OffyGhost
Пользователь
 
Аватар для OffyGhost
 
Регистрация: 09.03.2010
Сообщений: 12
По умолчанию

Всем огромное спасибо!!
ВОт решение:

Код:
#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;
   int k=0;
  //Ввод данных
    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" );
  }
 //сумма только крайних ее элементов


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();
}
OffyGhost вне форума Ответить с цитированием
Старый 09.03.2010, 15:13   #8
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

1.
Цитата:
Сообщение от OffyGhost Посмотреть сообщение
ВОт решение:
Код:
#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;
   int k=0;
  //Ввод данных
    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" );
  }
 //сумма только крайних ее элементов


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();
}
Матрицу, в которой хотя бы одно число на границе имеет ненулевую дробную часть, не пробовали ради интереса?...

2. Если у Вас A будет размерностью тысяча x тысяча, будете делать без малого миллион пустых перемолачиваний ради четырёх тысяч нужных значений?...

Последний раз редактировалось Vago; 09.03.2010 в 15:18.
Vago вне форума Ответить с цитированием
Старый 09.03.2010, 19:09   #9
Himka
Пользователь
 
Регистрация: 09.03.2010
Сообщений: 14
По умолчанию

Код:
Код:
#include <iostream.h>
#include <stdlib.h>
#define N 20
 
int main(void)
{
  double mas[N] [N];
  int i, j, n;
  double sum;
  do
  { cout<<"razmer matritsy n = ";
    cin>>n;
  }while((n<1) || (n>N));
  cout<<"Vvod elementov:\n";
  for ( i = 0; i < n; i++ )
    for ( j = 0; j < n; j++ )
     cin>>mas[i] [j];
  cout<<"Matritsa:\n";
  for ( i = 0; i < n; i++ )
  {
    for ( j = 0; j < n ; j++ )
      cout<<mas[i][j]<<"\t";
    cout<<"\n";
  };
 sum=0;
 for(i=0, j=0; j<n; j++)
  sum=sum+mas[i][j];
 for(i=n-1, j=0; j<n; j++)
  sum=sum+mas[i][j];
 for(j=0, i=1; i<n-1; i++)
  sum=sum+mas[i][j];
 for(j=n-1, i=1; i<n-1; i++)
  sum=sum+mas[i][j];
 cout<<"Summa: "<<sum<<endl;
 system("pause");
 return 0;
}
Himka вне форума Ответить с цитированием
Старый 09.03.2010, 19:43   #10
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от Himka Посмотреть сообщение
Код:
Код:
...
 sum=0;
 for(i=0, j=0; j<n; j++)
  sum=sum+mas[i][j];
 for(i=n-1, j=0; j<n; j++)
  sum=sum+mas[i][j];
 for(j=0, i=1; i<n-1; i++)
  sum=sum+mas[i][j];
 for(j=n-1, i=1; i<n-1; i++)
  sum=sum+mas[i][j];
 cout<<"Summa: "<<sum<<endl;
...
}
"Если неприятность может случиться, она случится обязательно". Матрица размерностью 1 x 1 - это тоже матрица...
Vago вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычисление сумм элементов матрицы А размера n x n, лежащих выше, ниже и на главной диагонали Tomoa Microsoft Office Word 8 04.04.2010 20:18
Сумма четных элементов матрицы. Произведение элементов 3-го столбца. Минимальный элемент матрицы. renovare Помощь студентам 2 03.07.2009 21:13
Найти максимальный из положительных элементов матрицы и сумму отрицательных элементов. bessonov12 Microsoft Office Excel 7 04.05.2009 05:44
количество элементов матрицы, больших среднего арифмитического всех её элементов finch Помощь студентам 3 27.08.2007 15:48