XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Общение> Трактир
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
Warden
:::...
offline
Опыт: 26,106
Активность:
Помогите решить задачу
не могу решить простую задачу... Уже полчаса сижу и немогу ниче придумать =)
Как найти позицию ячейки массива по двум осям?
Как к примеру найти, что число 20 - это 3;4 а число 0 это 1;1???
Перестраивать матрицу я не буду, я знаю как можно решить эту задачу если расположить числа по-другому, помогите мне с этой.
Нужна формула...
00 01 02 03 04 05
06 07 08 09 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
Заранее спасибо.
Старый 07.04.2008, 15:53
DFlyer
<3 MJ
offline
Опыт: 42,879
Активность:
Тебе на каком языке?
Просто сравниваешь в массиве каждую ячейку с нужным числом и всё. В чём проблема?

» by Pascal

Код:
{ XX - нужное число для поиска }
  { nI,nJ - куда записать координаты (i,j соотв.) найденого числа}
  for i:=1 to N do
    for j:=1 to M do
      if a[i,j]=XX then
        begin
          nI:=i;
          nJ:=j;
        end;

Отредактировано DFlyer, 07.04.2008 в 16:34.
Старый 07.04.2008, 16:29
Warden
:::...
offline
Опыт: 26,106
Активность:
Не врубил я ф паскаль...
Зачем тут цикл?
Мне надо к примеру я отправил функции число 20, функция должна вернуть мне координату X или Y относительно последовательности чесел от 0 до 35, разбитые на матрицу 5x5...
p.s - мне на vb, но тут язык не нужен, мне нужна лишь формула...
Старый 07.04.2008, 17:39
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
это как посчитать сдвиг. Идут странички, т.е. целые числа... ну вобщем так
поскольку в строке - 6 элементов то координата по y находится так:
number/6. Дальше, если есть остаток - то +1, если без остатка, то +0 к получившемуся. Остаток считать координатой по х или сдвигом.. в случае если остаток нулевой, то координата по х = 6.

FellGuard добавил:
отсчет надо вести с 1 а не с 0 - важен порядковый номер.

FellGuard добавил:
т.е. к примеру, 19/6= 3 целых, 1/6. Остаток отличен от нуля, значит у=4, х=1. 19 - девятнадцатый слот, т.е. в твоей таблице 19 соответствует числу 18.
Старый 07.04.2008, 17:59
ShadoW DaemoN

offline
Опыт: 37,078
Активность:
Собственно вот:
>> x = value mod width (mod - остаток от деления)
>> y = value div height (div - целочисленное деление)
где:
- value - значение массива; (20)
- width - ширина таблицы; (6)
- height - высота таблицы. (6)
Индексы x и y будут нумероваться с нуля. Если нужно с (1;1), просто добавь +1.
Старый 07.04.2008, 18:07
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
» сишная реализация
Код:
// c

struct mpoint
{
  int xcor;
  int ycor;
};

#define incr 1 //сдвиг на 1 - примем как данное, что нумерация с нуля...
mpoint FindPosition(int width, int height, int slotnum)
{
  mpoint result = {-1,-1};
  int k;
  slotnum+=incr;
  if(width>0 && height>0 && slotnum>0 && slotnum<=width*height)
  {
     result.ycor = slotnum/width;
     if((k=slotnum%width)!=0)
     {
        result.xcor=k;
        result.ycor++;
     } else {
        result.xcor=width;
     }
  }
  return result;
}
#undef incr

// --- тестовый main, параметры задаем в FindPosition(x,y,num); ---
#include <stdio.h>
#include <conio.h>
void main(void)
{
  clrscr();
  mpoint mmp = FindPosition(6,6,20);
  printf("Result = (%d,%d)",mmp.xcor,mmp.ycor);
  getch();
}

Отредактировано FellGuard, 07.04.2008 в 19:17.
Старый 07.04.2008, 18:43
Warden
:::...
offline
Опыт: 26,106
Активность:
Спасибо всем, буду разбирацо =)

Warden добавил:
Воспользовался советом ShadoW DaemoN-а, ему отдельное спасибо.
Хотя начинал с примера Гуарда и Адольфа, но ниче не вышло...
Старый 08.04.2008, 13:06
adic3x

offline
Опыт: 108,439
Активность:
Цитата:
но ниче не вышло...

ятп, у мну все пашет
Цитата:
Воспользовался советом ShadoW DaemoN

иначе имхо и низя, и у мну и у фелла такой же принцип, реализованный ток по разному)
Старый 08.04.2008, 18:25
Warden
:::...
offline
Опыт: 26,106
Активность:
Для тех кто юзает Visual Basic:

Код:
Public Type POINTAPI
    X As Long
    Y As Long
End Type

Public Function FindArrayCoords(Index As Integer, Cols As Integer, Rows As Integer) As POINTAPI
    Dim xy As POINTAPI
    xy.X = Index Mod Rows + 1
    xy.Y = Int(Index / Cols) + 1
    FindArrayCoords = xy
End Function


Задача была по программированию, смотрите аттач =)
Прикрепленные файлы
Тип файла: rar Кроссворд v1.0.rar (62.0 Кбайт, 12 просмотров )
Старый 09.04.2008, 15:04
Krol

offline
Опыт: 17,884
Активность:
тут есть информатики-математики? помогите решить хоть что-нибудь плиз
Цитата:
Задача 2. Разработайте таблицы сложения и умножения для систем счисления с основаниями 3 и 4 (т.е. для троичной и четверичной систем счисления). Пользуясь 100%-ной аналогией ариф-метических действий для всех систем счисления, обобщите процедуры перевода из 4-ной в троичную систему и из 3-чной в четверичную систему, выполните операции, записанные ниже. ОБЯЗАТЕЛЬНО сделайте проверку (переводом в 10-чную систему). БЕЗ ПРОВЕРКИ РЕШЕНИЕ НЕ ЗАСЧИТЫВАЕТСЯ!!!.
• Переведите число 10304 (т.е. записанное в 4-чной системе) в троичную систему. Число разрядов для записи результатов не ограничивается.
• Переведите число 2203 в четверичную систему. Число разрядов для записи результатов не ограничивается.
• Выполните умножение в 4-чной системе: 33334×124. Число разрядов для записи резуль-татов не ограничивается.
• Выполните деление в 3-чной системе: 2213 : 123. Число разрядов для записи результатов не ограничивается.
Старый 04.10.2008, 17:45
J
expert
offline
Опыт: 48,447
Активность:
Цитата:
Переведите число 10304 (т.е. записанное в 4-чной системе)
сдесь ошибка 10304 это как минимум 5-чная система
Цитата:
Переведите число 2203 в четверичную систему
а в какой оно изначально?

Jon добавил:
Цитата:
Выполните умножение в 4-чной системе: 33334×124
and
Выполните деление в 3-чной системе: 2213 : 123

тажа ошибка, кто эти глупые задания писал?
[+] 1 пункт от Кет: Мат

Отредактировано Кет, 04.10.2008 в 20:47.
Старый 04.10.2008, 17:56
akkolt

offline
Опыт: 13,826
Активность:
мб там 22223*13, ну это очень грубое предположение )

akkolt добавил:
Krol, перепроверь, мб пятиричная система? или эти числа изначально нужно перевести в четвиричную?
Старый 04.10.2008, 17:58
Krol

offline
Опыт: 17,884
Активность:
Тут не видно цифр снизу под числом, блин.
Старый 04.10.2008, 18:23
akkolt

offline
Опыт: 13,826
Активность:
ааа... это же индекс системы счисления ))) ну тогда всё верно.

akkolt добавил:
2 * 3^2 + 2 * 3 = 18 + 6 = 24 (в 10-тичной)
теперь зная степени четверки переводим в 4-ричную.

akkolt добавил:
аналогично с троичной, умножения в 4ричной выполняются так же, как и в десятичной, только с основанием не 10, а 4 (на сколько я помню...)

akkolt добавил:
Krol, ну а таблицы делать лень, сорри, но там очень нудно... Хотя есть шанс найти их в интернете ;)
Старый 04.10.2008, 18:39
Krol

offline
Опыт: 17,884
Активность:
Цитата:
2 * 3^2 + 2 * 3 = 18 + 6 = 24 (в 10-тичной)

это зачем ты делал? просто перевел какое то число в десятичное? это я знаю как делать, а вот как перевести 1030 в четверичной в троичную понятия не имею
Старый 04.10.2008, 18:52
akkolt

offline
Опыт: 13,826
Активность:
Krol, из троичной в четверичную перевести нереально, тоесть реально, но ты должен свободно владеть этой системой (как десятичной) а таких людей на свете пока нет...
Ну зная степени четверки мы раскладываем 24 на числа:
24 = 1*16 + 2*4 + 0 = 120 (в 4-ичной)
Старый 04.10.2008, 18:56
Krol

offline
Опыт: 17,884
Активность:
если бы это было нереально нам бы этого не задавали
220 в троичной = 40 в четверичной или я не прав?
Старый 04.10.2008, 19:46
akkolt

offline
Опыт: 13,826
Активность:
Krol, нее это реально, но изначально нужно перевести в десятичную систему, а из неё уже в четверичную.
А откуда ты взял 40?
220 (в троичной) = x(в четвирчной)
2 * 3^2 + 2 * 3 = 18 + 6 = 24 (в 10-тичной)
24 = 1*16 + 2*4 + 0 = 120 (в 4-ичной)

akkolt добавил:
Ответ: 120

akkolt добавил:
Krol, почитай лекцию, если ты конечно записывал... мб там есть эта тема?

Отредактировано akkolt, 04.10.2008 в 20:00.
Старый 04.10.2008, 19:54
akkolt

offline
Опыт: 13,826
Активность:
а по физике здесь вопросы задают?
Если да, то вот:
1) Почему в холодную погоду запотевают только те стороны стекол, которые обращены внутрь комнаты?
2) Почему при понижении температуры воздуха в комнате ощущается сырость
3) Какой должна быть точка росы, чтобы появился иней
4) Определите абсолютную и относительную влажность воздуха, если парциальное давление пара в нем 1.9 кПа, а температура 20'С

akkolt добавил:
Видно физиков здесь нет...
Старый 05.10.2008, 19:25
Dr

offline
Опыт: 48,871
Активность:
  1. Потому что за стеклом уже давно холодно всё сконденсировалось (осенью =), а внутри тепло и много паров воды, которые и конденсируются.
  2. То же самое - конденсация водяных паров.
Старый 05.10.2008, 19:28
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 08:09.