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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.04.2011, 13:37   #1
ShadowNecros
 
Регистрация: 08.04.2011
Сообщений: 6
По умолчанию Не придумать условие для элементов массива

Здравствуйте, нужна помощь в решении следующей задачи:
Надо построить матрицу размера nxn
|g1+g2+gc1_ |_______-g2_____|_____0__________|_____ 0____|
|___-g2_____|___ g2+g3+gc2__|____ -g3_________|_____ 0___|
|____0______|______-g3______|_____ g3+g4+gc3 |_____-g4__|
|____0______|_______ 0 ______| ______-g4______ |___ g4+gc4|

Условие для главной диагонали я написал, а для нулей и -gn не получается.
Вроде ничего сверх сложного, но не получается придумать формулу.
Вот код программы что я написал:
#include "stdafx.h"
#include "conio.h"
#define n 4 // задаем количество узлов
int _tmain(int argc, _TCHAR* argv[])
{
int g[100],gc[100],i,j,gf[100];
//чтобы 100 раз не вбивать в консоли используйте эти значения
/*
g[1]=1;
g[2]=2;
g[3]=3;
g[4]=4;
gc[1]=1;
gc[2]=2;
gc[3]=3;
gc[4]=4;
*/
printf("Vvedite znacheni soprotivleni\n");
for(i=1;i<n+1;i++)
{
printf("g[%d]= ",i);
scanf("%d",&g[i]);
}

printf("Vvedite znacheni kondensatorov\n");
for(int i=1;i<n+1;i++)
{
printf("g[%d]= ",i);
scanf("%d",&gc[i]);
}

for(i=1;i<n+1;i++)
{
for(j=1;j<n+1;j++)
{
if(i==n && i==j) {gf[i,j]=g[i]+gc[i];}
else
{
if(i==j){
gf[i,j]=g[i]+g[i+1]+gc[i];
gf[i,j-1]=-g[i+1];
gf[i,j+1]=-g[i+1];
}
else {gf[i,j+1]=0;gf[i,j-1]=0;}

}
printf(" %2.1d ",gf[i,j]);
}
printf("\n");
}
getch();

return 0;
}

Похимичил и кое-что получилось, теперь надо разобраться со значениями ниже главной дигонали

Последний раз редактировалось ShadowNecros; 08.04.2011 в 15:25.
ShadowNecros вне форума Ответить с цитированием
Старый 13.04.2011, 15:12   #2
ShadowNecros
 
Регистрация: 08.04.2011
Сообщений: 6
По умолчанию

Эээ, так что, никто ничего не посоветует? Может все таки есть какие мысли у кого-нибудь?
ShadowNecros вне форума Ответить с цитированием
Старый 13.04.2011, 15:53   #3
malinoff
Форумчанин
 
Аватар для malinoff
 
Регистрация: 08.01.2010
Сообщений: 205
По умолчанию

http://programmersforum.ru/showpost....81&postcount=1
Если помог - кликни на значок весов под аватаром.
malinoff вне форума Ответить с цитированием
Старый 13.04.2011, 21:10   #4
ShadowNecros
 
Регистрация: 08.04.2011
Сообщений: 6
По умолчанию

Да, этот материал полезен, но вы наверно меня не правильно поняли. Поставить определенный элемент в определенное место я могу, искать элементы тоже. Меня интересует как сделать с диагональю(которая ниже главной), тоже самое,что я сделал с диагональю выше главной. Мне нужна помощь в составлении формулы, а подставить ее я смогу в программу.
ShadowNecros вне форума Ответить с цитированием
Старый 14.04.2011, 06:15   #5
malinoff
Форумчанин
 
Аватар для malinoff
 
Регистрация: 08.01.2010
Сообщений: 205
По умолчанию

Ок, идем по циклу
Код:
if(i==j){
gf[i,j]=g[i]+g[i+1]+gc[i];
gf[i,j-1]=-g[i+1];
gf[i,j+1]=-g[i+1];
i=1,j=1. Первая строка записывает на "хорошую" позицию то,что Вам нужно. Вторая строка записывает на позицию gf[1,0] элемент, если Вы начинаете отсчет индекса массива не с 0 а с 1, то gf[1,0] - "выход за рамки".
Код:
else {gf[i,j+1]=0;gf[i,j-1]=0;}
i = 1, j = 2. Ваши условия не выполняются, программа доходит до этой строки.
gf[1,3] = 0; - все хорошо. gf[1,1] = 0; - зануляете первый первый элемент массива.
Для размещения элементов используйте условие
Код:
Если X>Y Тогда элемент выше главной диагонали.
Если X=Y Тогда элемент на главной диагонали.
Eckb X<Y Тогда элемент ниже главной диагонали.
Если помог - кликни на значок весов под аватаром.
malinoff вне форума Ответить с цитированием
Старый 14.04.2011, 14:34   #6
ShadowNecros
 
Регистрация: 08.04.2011
Сообщений: 6
По умолчанию

Спс за подсказку, получилось числа поставить, а теперь никак излишек нулями не забить. Можешь подсказать еще что-нибудь

#include "stdafx.h"
#include "conio.h"
#define n 5 // задаем количество узлов
int _tmain(int argc, _TCHAR* argv[])
{
int g[100],gc[100],i,j,k,gf[100];
//чтобы 100 раз не вбивать в консоли используйте эти значения

g[1]=1;
g[2]=2;
g[3]=3;
g[4]=4;
g[5]=5;
gc[1]=1;
gc[2]=2;
gc[3]=3;
gc[4]=4;
gc[5]=5;
/*printf("Vvedite znacheni soprotivleni\n");
for(i=1;i<n+1;i++)
{
printf("g[%d]= ",i);
scanf("%d",&g[i]);
}

printf("Vvedite znacheni kondensatorov\n");
for(int i=1;i<n+1;i++)
{
printf("g[%d]= ",i);
scanf("%d",&gc[i]);
}
*/

for(i=1;i<n+1;i++)
{
for(j=1;j<n+1;j++)
{
if(i==n && i==j) {gf[i,j]=g[i]+gc[i];}
else
{
if(i==j) gf[i,j]=g[i]+g[i+1]+gc[i];
if(i>j) gf[i,j]=-g[i];

if(i<j) gf[i,j]=-g[j];

}



printf(" %2.1d ",gf[i,j]);
}
printf("\n");
}
getch();
return 0;
}
ShadowNecros вне форума Ответить с цитированием
Старый 14.04.2011, 15:09   #7
malinoff
Форумчанин
 
Аватар для malinoff
 
Регистрация: 08.01.2010
Сообщений: 205
По умолчанию

В начале программы массив нулями инициализируйте
Если помог - кликни на значок весов под аватаром.
malinoff вне форума Ответить с цитированием
Старый 14.04.2011, 22:12   #8
ShadowNecros
 
Регистрация: 08.04.2011
Сообщений: 6
По умолчанию

О отлично, получилось. Спс за направление на свет добрый друг. Если надо выложить рабочий вариант, напишите. Я Буду заглядывать на свою тему.
ShadowNecros вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
событие для массива созданных элементов areyoudead Общие вопросы Delphi 52 14.10.2014 19:25
Вывод элементов массива.Изменение элементов массива. Vesnushka18 Помощь студентам 6 09.06.2011 13:05
Для массива определить сумму всех элементов, стоящих после максимального HECTOR.A. Паскаль, Turbo Pascal, PascalABC.NET 4 17.06.2009 22:04
Определить сумму элементов массива, кратных трем (Не выполняется условие) Skrip Общие вопросы C/C++ 8 04.06.2009 13:56
В одномерном массиве, состоящем из n вещественных элементов, вычислить сумму элементов массива HazelHen Общие вопросы C/C++ 2 29.03.2009 15:16