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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2013, 17:50   #1
East Undia Trading
Форумчанин
 
Регистрация: 02.10.2013
Сообщений: 231
По умолчанию Двумерные массивы: Преобразовать матрицу: поэлементно вычесть последнюю строку из всех столбцов, кроме последнего. ( на C )

Прикрепленную тему читал, поиском пользовался.
Задание: Дана вещественная матрица А (8х8). Преобразовать матрицу: поэлементно вычесть последнюю строку из всех столбцов, кроме последнего.
Решение:
Код:
#include <stdio.h>
int main(void)
{
int t,i, num[8][8];
for(t=0; t<8; ++t)
for (i=0; i<8; ++i)
num[t][i] = (t*4)+i+1;

for (t=0; t<8; ++t)
{
for (i=0; i<8; ++i)
printf("%d  ",num[t][i]);
printf ("\n");
}
return 0;
}
Это не решение, но пример того как я умею работать с двумерными матрицами.И так, как решать?Берем последнюю строку, к которой надо как то обратиться, и в цикле от первой строки до предпоследней вычитаем, как это сделать?
East Undia Trading вне форума Ответить с цитированием
Старый 12.12.2013, 22:08   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

1. Перенеси значения элементов 8-ой строки матрицы в одномерный массив, что-бы потом не мучаться.
2. В цикле по столбцам i (второй индекс для матрицы)
3. В цикле по строкам j (первый индекс для матрицы)
4. Элемент матрицы[j][i] = Элемент матрицы[j][i] - элемент массива[j];

....


Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 12.12.2013, 23:10   #3
East Undia Trading
Форумчанин
 
Регистрация: 02.10.2013
Сообщений: 231
По умолчанию

А, может кто-нибудь примером разбавить тему?Я что-то вообще не курю...
East Undia Trading вне форума Ответить с цитированием
Старый 21.12.2013, 20:39   #4
East Undia Trading
Форумчанин
 
Регистрация: 02.10.2013
Сообщений: 231
По умолчанию

Программисты, как взять последнюю строку и вычесть ее из чего-либо?
East Undia Trading вне форума Ответить с цитированием
Старый 21.12.2013, 20:51   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Её нужно не брать, а верно перебирать индексы. Условие верное? Строку вычесть именно из столбцов?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 21.12.2013, 21:07   #6
East Undia Trading
Форумчанин
 
Регистрация: 02.10.2013
Сообщений: 231
По умолчанию

BDA,
Цитата:
Её нужно не брать, а верно перебирать индексы.
Да, верно перебирать индексы - это понятно.То есть сами столбцы - это циклы for?Например цикл с i - это строка, а цикл с j - столбец, так ведь?
Цитата:
Условие верное? Строку вычесть именно из столбцов?
Да, задание именно такое
East Undia Trading вне форума Ответить с цитированием
Старый 21.12.2013, 21:23   #7
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Цитата:
Сообщение от East Undia Trading Посмотреть сообщение
То есть сами столбцы - это циклы for?Например цикл с i - это строка, а цикл с j - столбец, так ведь?
Неважно какая буква в цикле, важно только, как интерпретировать массив.
Первый индекс обычно считается индексом строки, второй - столбца.
Примерный код (не проверял):
Код:
n = 8;
for (j = 0; j < n - 1; ++j)
  for (i = 0; i < n; ++i)
    a[i][j] -= a[n - 1][i];
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 21.12.2013, 21:46   #8
East Undia Trading
Форумчанин
 
Регистрация: 02.10.2013
Сообщений: 231
По умолчанию

Либо я неправильно переменные поставил, либо считать не умею.А может и формула не верна.

Прошу прощение за этого монстра, не вижу кнопки спойлера.
East Undia Trading вне форума Ответить с цитированием
Старый 21.12.2013, 22:20   #9
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Сравните индексы в моей и Вашей формулах.
Кстати, понял, что код работает не верно. Нельзя вычитать из последних элементов столбцов сразу в цикле, иначе последняя строка изменится. Поэтому VictorR советовал перенести значения в отдельный массив.
Код:
n = 8;
for (j = 0; j < n - 1; ++j)
  for (i = 0; i < n - 1; ++i)
    a[i][j] -= a[n - 1][i];
for (i = 0; i < n - 1; ++i)
    a[n - 1][i] -= a[n - 1][n - 1];
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 21.12.2013 в 22:58.
BDA на форуме Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как преобразовать строку в двоичную матрицу? (Delphi) foxii Помощь студентам 0 27.09.2012 14:46
Преобразовать файл, удалив из каждой матрицы последнюю строку и последний столбец. teem Помощь студентам 4 24.05.2012 00:19
Матрица A состоит из 8 строк и 6 столбцов. вычесть из всех её строк, начиная со второй, первую строку Dimak24 Помощь студентам 1 19.12.2008 15:45