Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
138 / 138 / 39
Регистрация: 26.02.2011
Сообщений: 545
1

Нахождение суммы элементов матрицы, оба индекса которых четные

03.03.2012, 20:51. Показов 837. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите подкорректировать следующие функции

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int sum(int **math,int m, int n)
{
    int x1,x2,summa=0;
    for(x1=0;x1<m;x1++)
      {
          for(x2=0;x2<n;x2++)
             {
                 if ((x1 % 2 ==0)&&(x2 % 2 == 0))
                 {
                      summa=summa+math[x1][x2];
                 }
             }
      }
                          printf("Summa: %d",summa);
}
Данная функция по идее писал для нахождения Суммы элементов, оба индекса которых четные.Например элемент
[2][4] подходит, а [1][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
int sort(int **math,int m, int n) 
{
    int x1,x2,k,s=0;
    printf("\n");
    printf("\tNew Matrix:\n\n");
for (x1=0; x1<m; x1++)
{
  for (k=n-1; k>0; k--)
  {
    for (x2=0; x2<k; x2++)
    {
      if (math[x1][x2] >math[x1][x2+1]) 
      {
                       s=math[x1][x2]; 
                           math[x1][x2]=math[x1][x2+1];
                             math[x1][x2+1]=s;
      }
    }
  }
}
for (x1=0; x1<m; x1++)          
             {
             for (x2=0; x2<n; x2++)
             {
             printf(" %d",math[x1][x2]);    
             }
             printf("\n");
             }
}
Сортировка строк в матрице по не убыванию их наибольших элементов.Она сортирует эллементы в самих строках,но не сортирует строки,надо чтобы строки только сортировала,например

Пример

Код
1 2 7 
4 3 5
2 0 9
Должно выдать

Код
4 3 5 //наибольший элемент 5
1 2 7 //наибольший элемент 7
2 0 9 //наибольший элемент 9
А сейчас выдает

Код
1 2 7 
3 4 5
0 2 9
Помогите доделать
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.03.2012, 20:51
Ответы с готовыми решениями:

Вычислить сумму элементов матрицы, оба индекса которой четные
Дана целочисленная квадратная матрица. Вычислить сумму элементов, оба индекса которой четные

Найти среднее арифметическое чисел, оба индекса которых четные
Заполнить матрицу m*n с клавиатуры. Найти среднее арифметическое чисел, оба индекса которых четные

Определить в массиве среднее геометрическое элементов, у которых оба индекса нечетные
1) Ввести двумерный массив А 3х5. Определить в нём среднее геометрическое элементов, у которых оба...

Массивы: найти сумму всех элементов, у которых оба индекса нечетны
1. Создайте двумерный массив целочисленный массив А, и найдите сумму всех его элементов имеющие...

2
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
03.03.2012, 22:59 2
Цитата Сообщение от a.n.o.n.i.m Посмотреть сообщение
По идее берем по остатку от деления и если ноль то считаем число если нет то отбрасываем,но не так как надо работает(некорректно).Помогите подправить
Делать проверки необязательно, можно перемещаться непосредственно по каждому второму элементу строки\столбца
C
1
2
3
4
5
6
7
8
9
10
int sum(int** math, int m, int n)
{
   int x1, x2;
   int s = 0;
 
   for(x1 = 0; x1 < m; x1+= 2)
      for(x2 = 0; x2 < n; x2+= 2)        
     s+= math[x1][x2];
   return s;
}
Цитата Сообщение от a.n.o.n.i.m Посмотреть сообщение
Сортировка строк в матрице по не убыванию их наибольших элементов.Она сортирует эллементы в самих строках,но не сортирует строки,надо чтобы строки только сортировала,например
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
int max(int* a, int n)
{
   int i;
   int res = a[0];
   for(i = 1; i < n; ++i)   
      if(a[i] > res) res = a[i];
   return res;
}
 
void sort_rows_by_max(int** math, int m, int n) 
{
   int* t;
   int k, i;  
   
   for(k = 1; k < m; k++)
   {
      for(i = n-1; i >= k; i--)
      {         
     if(max(math[i-1], n) > max(math[i], n))
     {
        t = math[i]; 
        math[i] = math[i-1];
        math[i-1] = t;
     }   
      }
   }
}
1
138 / 138 / 39
Регистрация: 26.02.2011
Сообщений: 545
05.03.2012, 10:42  [ТС] 3
Где искать сумму четных индексов разобрался,весь гемор был в том что нумерация с нуля идет поэтому не тот ответ выдавало я в циклах нумерацию поставил с единицы,тоесть x1=1, x2=1,стало корректно выдавать ответ

Вот со вторым кодом пока не разобрался

Добавлено через 18 часов 43 минуты
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
int sort_rows(int **math,int m, int n) 
{
 int x1, x2, k, s = 0, *maxelems, notfin;
    printf("\n");
    maxelems = (int*)malloc(m*sizeof(int));//выделяем память под масив для строки
    for(x1=0; x1 < m; x1++) {
        maxelems[x1] = math[x1][0];//Начинаем с налача строки двигаться
        for(x2=1; x2 < n; x2++)//далее идем по столбцам строки
            if(maxelems[x1]  < math[x1][x2]) //и если елемент строки больше прдедущего
            maxelems[x1] = math[x1][x2];//то макимальный элемент строки присваеваем ему
    }
    printf("\n");
    printf("\tNew Matrix\n\n");
    notfin = 1;
    while(notfin) {
        notfin = 0;
        for (x1 = 0; x1 < m-1; x1++)
            if(maxelems[x1] > maxelems[x1+1]) {//если максимальный эл-т в строке больше следующего
                int *w = math[x1];
                int w1 = maxelems[x1];
                math[x1] = math[x1+1];
                math[x1+1] = w;
                maxelems[x1] = maxelems[x1+1];
                maxelems[x1+1] = w1;
                notfin = 1;
            }
    }
    for (x1 = 0; x1 < m; x1++){
        for (x2 = 0; x2 < n; x2++) {
            printf(" %d", math[x1][x2]);//вывод результата на консоль
        }
        printf("\n");}
    free(maxelems);//очищение памяти
}
Вообщем нашел вот код,он делает то что нужно,но до конца не разобрался,помогите разобраться.Запутался я,распутайте)закоментируйте пожалуйста
0
05.03.2012, 10:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.03.2012, 10:42
Помогаю со студенческими работами здесь

Найти в двумерном массиве среднее геометрическое элементов у которых оба индекса нечетные
как определить в двумерном массиве среднее геометрическое элементов у которых оба индекса нечетные

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

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

Подсчитать количество элементов массива, у которых оба соседа - четные числа
Задан массив из 100 элементов целых чисел. Подсчитать кол-во элементов у которых оба соседа четные...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru