Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Заполнение хитрой матрицы 
:(
    Опции темы
sembler
Дата 25.4.2005, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 25.4.2005

Репутация: нет
Всего: нет



Необходимо, заполнить матрицу, от левого нижнего угла по диагонали: влево - вверх.
Рисунок для наглядности прилагается...

Присоединённый файл ( Кол-во скачиваний: 30 )
Присоединённый файл  array.gif
PM MAIL   Вверх
IEZ
Дата 25.4.2005, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 10.2.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 3



Так, что нужно?
Прога которая хзаполняет эту матрицу?
Или совет с чего начать?


--------------------
"Нужно делать так, как нужно, а как не нужно, делать не нужно" (с) Винни-Пух.
PM MAIL WWW ICQ   Вверх
sembler
Дата 25.4.2005, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 25.4.2005

Репутация: нет
Всего: нет



Можно совет, чесно говоря вобще никаких идей нет как это сделать.
Да, это надо в сделать не на визуале, а на борланд си...

Это сообщение отредактировал(а) sembler - 25.4.2005, 19:16
PM MAIL   Вверх
Nuzur
Дата 25.4.2005, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 4.7.2004

Репутация: нет
Всего: 5



А какая тут разница визуал, борлонд....
С какого елемента нужно начать?

Если с нижнего левого, то....
Ну короче не сложно это, просто уточни.

Это сообщение отредактировал(а) Nuzur - 25.4.2005, 20:05


--------------------
Never again...
PM MAIL   Вверх
Dr.No_xXx
Дата 25.4.2005, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 215
Регистрация: 24.2.2005

Репутация: нет
Всего: нет



Ну и вопросики у тебя....Ну ладно.Утебя в каждом из рядов есть последовательность чисел.Ты бы мог либо сделать несколько матриц либо 1 но построчно.
PM MAIL   Вверх
Void
Дата 25.4.2005, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 40
Всего: 173



Нет, кажется я все-таки понял, чего хочет автор smile
Алгоритм заполнения таким образом квадратной матрицы n x n (первый индекс - строчки, нумерация 0..n - 1):
Код

        int i, j, k = 0;
        ...
        /* левый нижний угол */
    for (i = 0; i < n; ++i)
        for (j = 0; j <= i; ++j)
            m[n - j - 1][i - j] = ++k;
        /* правый верхний */
    for (i = n - 2; i >= 0; --i)
        for (j = 0; j < i + 1; ++j)
            m[i - j][n - j - 1] = ++k;



--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
sembler
Дата 25.4.2005, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 25.4.2005

Репутация: нет
Всего: нет



гы... сэнкс... чашка кофе и написал сам:
Код

#include<stdio.h>
#define s 9
int a[s][s];
int main(void){
    int x,y,tx,ty,diag,c;
    c=0;
    a[s-1][0]=c++;
    for(y=0; y<s;y++){
        x=s-1;
        ty=y;
        for(diag=0; diag<=y; diag++){
            a[x][ty]=c++;
            ty--;
            x--;
            }
        }
    for(x=s-2; x>=0; x--){
        y=s-1;
        tx=x;
        for(diag=x+2; diag>=2; diag--){
            a[tx][y]=c++;
            tx--;
            y--;
            }
        }
    printf("\n\n= = =\n");
    for(x=0; x<s; x++){
        for(y=0; y<s;  y++) printf("%4d", a[x][y]);
        printf("\n");
        }
    return 0;
    }


не элегантно, но работает smile
PM MAIL   Вверх
AISIN
Дата 26.4.2005, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 27.1.2005
Где: Пушкино

Репутация: нет
Всего: 1



sembler
И у меня работает
Код

#include<stdio.h>
int main()
{
    int s[9][9];
    int i,x,k,Temp;
    k=x=Temp=0;
    i=8;
    s[i][k]=++x;
    k++;
    while(x!=81)
    {
        s[i][k]=++x;
        k--;
        i--;
        Temp++;
        if(k<0 || i<0){
            i=Temp+i;
            k=k+Temp;
            Temp=0;
            if(k==8){
                i--;
            }
            else{
                k++;
            }

        }
    }
    printf("\n\n= = =\n");
    for(i=0;i<9;i++){
        for(k=0;k<9;k++) printf("%4d",s[i][k]);
        printf("\n");
    }
    return 0;
}

Немного попарился!
Зато вроде по компактней!!!

--------------------
Внимание!!! Внимание!!!Запущена программа по завоеванию мира!!!Выполненно 0,000000000000000000000000000000000000000000000000000002%
PM MAIL   Вверх
AISIN
Дата 27.4.2005, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 27.1.2005
Где: Пушкино

Репутация: нет
Всего: 1



sembler Посмотри сюда
Код

    a[s-1][0]=c++;

Если я за место этого напишу просто
Код

c++;

то результат не изменится. Так что оптимизировать надо!
Здесь еще есть пару мест которые нужно оптимизировать! smile
--------------------
Внимание!!! Внимание!!!Запущена программа по завоеванию мира!!!Выполненно 0,000000000000000000000000000000000000000000000000000002%
PM MAIL   Вверх
sembler
Дата 30.5.2005, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 25.4.2005

Репутация: нет
Всего: нет



А как быть вот с такой матрицей?
--Resize_Images_Alt_Text--
PM MAIL   Вверх
AISIN
Дата 31.5.2005, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 27.1.2005
Где: Пушкино

Репутация: нет
Всего: 1



sembler Могу попробывать решить, но ничего не обещаю. Сейчас сессия начилась!!! Курсовики горят!!
--------------------
Внимание!!! Внимание!!!Запущена программа по завоеванию мира!!!Выполненно 0,000000000000000000000000000000000000000000000000000002%
PM MAIL   Вверх
Амортизатор
Дата 31.5.2005, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 17.4.2005
Где: в Караганде

Репутация: 1
Всего: 8



Код рабочий

Код

#include "stdio.h"

const N=9;
int main(void)
{
    int i=(N+1)/2-1, j=(N+1)/2-1;
    int A[N][N];
    int nX=-1, nY=0;
    int nXcopy, nYcopy;
    int k=1;
    int e, g;

    for (e=0; e<=N-1; e++)
        for (g=0; g<=N-1; g++)
            A[e][g]=0;

    A[i][j]=1;
    
    while (i>=0 && j>=0 && i<=N && j<=N)
    {
        i=i+nX;
        j=j+nY;
        A[j][i]=++k;

        nXcopy=nX;
        nYcopy=nY;

        if (nX==-1 && nY==0)
        {
            nX=0;
            nY=1;
        }
        else
        {
            if (nX==0 && nY==1)
            {
                nX=1;
                nY=0;
            }
            else
            {

                if (nX==1 && nY==0)
                {
                    nX=0;
                    nY=-1;
                }
                else
                {

                    if (nX==0 && nY==-1)
                    {
                        nX=-1;
                        nY=0;
                    }
                }
            }
        }

        if (A[j+nY][i+nX]!=0)
        {
            nX=nXcopy;           
            nY=nYcopy;
        }
    }

    return 0;
}



--------------------
Поехали!
PM MAIL   Вверх
AISIN
Дата 31.5.2005, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 27.1.2005
Где: Пушкино

Репутация: нет
Всего: 1



Амортизатор МолодеЦ!!!
--------------------
Внимание!!! Внимание!!!Запущена программа по завоеванию мира!!!Выполненно 0,000000000000000000000000000000000000000000000000000002%
PM MAIL   Вверх
sembler
Дата 31.5.2005, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 25.4.2005

Репутация: нет
Всего: нет



Спасибо, Амортизатор!
PM MAIL   Вверх
Амортизатор
Дата 31.5.2005, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 17.4.2005
Где: в Караганде

Репутация: 1
Всего: 8



Спасибо и незачто. Мне матрицы еще долго будут сниться - все таки бывший физик-теоретик, столько повидал этих старух (у нас так называют матрицы ) на своем веку... smile

Это сообщение отредактировал(а) Амортизатор - 31.5.2005, 20:59


--------------------
Поехали!
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0945 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.