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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C] матрицу, прочитать по столбцам 
:(
    Опции темы
Marisha
  Дата 14.12.2007, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Дан одномерный массив, в котором записаны элементы верхнего треугольника квадратной матрицы, прочитанные по строкам.Составить массив из этих же элементов, но прочмтанных по столбцам(не восстанавливая матрицы). smile Забыла написать. на языке Си надо








помогите, пожалуйста!! smile 

Это сообщение отредактировал(а) Marisha - 14.12.2007, 21:53
PM MAIL   Вверх
Dov
Дата 14.12.2007, 23:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

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



А что такое
Цитата(Marisha @  14.12.2007,  20:51 Найти цитируемый пост)
элементы верхнего треугольника квадратной матрицы


Если есть, например, такая матрица:
Код

2 3 5 6 8 
6 5 4 1 2 
9 8 4 5 2 
3 2 5 4 7 


то как выглядит твой массив сейчас и как он должен выглядеть потом?  smile 



--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
orthrus
Дата 15.12.2007, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 400
Регистрация: 30.10.2007
Где: г. Усть-Илимск(Ир кутская обл.)

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



Цитата(Dov @ 14.12.2007,  23:59)
Если есть, например, такая матрица:
Код

2 3 5 6 8 
6 5 4 1 2 
9 8 4 5 2 
3 2 5 4 7 


Это не квадратная матрица, а элементы верхнего треугольника это наверное элементы находящиеся выше главной диагонали.


--------------------
У того, кто ничего не делает, всегда много помощников.© Л.Н. Толстой
user posted image
PM MAIL ICQ   Вверх
zkv
Дата 15.12.2007, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


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

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



Цитата(Marisha @  14.12.2007,  21:51 Найти цитируемый пост)
smile Забыла написать. на языке Си надо

Не забывайте больше.
PM MAIL   Вверх
Dov
Дата 15.12.2007, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

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



Цитата(orthrus @  15.12.2007,  08:24 Найти цитируемый пост)
Это не квадратная матрица, а элементы верхнего треугольника это наверное элементы находящиеся выше главной диагонали.

Так что-ли?
Код

x 0 1 3 6 
x x 2 4 7
x x x 5 8 
x x x x 9
x x x x x 


Тогда вот:
Код
#include <stdio.h>

int main()
{
    int       src[] = {0,1,3,6, 2,4,7, 5,8, 9};
    const int len   = sizeof(src) / sizeof(src[0]);
    int       dst[len];   
    int       i, j, n, size, h, k, m = 0;
    char *    matr[] = {
                "x 0 1 3 6",
                "x x 2 4 7",
                "x x x 5 8",
                "x x x x 9",
                "x x x x x"
             };

    for(i = len, size = 0; i; i -= size++);

    puts("For matrix: ");
    for(i = 0; i < size; i++)
        printf("  %s\n", matr[i]);

    printf("\nSource:\n  ");
    for(i = 0; i < len; i++)
        printf("%d ", src[i]);
    
    for(i = 0, n = 1; i < size; n++, i++)
        for(j = 0, k = i, h = size - 2; j < n; k += h--, j++)
            dst[m++] = src[k];
        
    printf("\nResult:\n  ");
    for(i = 0; i < len; i++)
        printf("%d ", dst[i]);

    puts("");

    return 0;
}


Наверняка есть вариант лучше и проще, но что-то в бестолковку ничего путного не лезет.  smile 



--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Marisha
  Дата 15.12.2007, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



спасиб вам,  только надо включая главную диагональ...
PM MAIL   Вверх
Dov
Дата 15.12.2007, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

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



Цитата(Marisha @  15.12.2007,  17:43 Найти цитируемый пост)
только надо включая главную диагональ...

Ну, так что за проблема? Добавь элементы главной диагонали в свой массив и всё. Вот так:
Код
int  src[] = {1,2,4,7,11,  3,5,8,12,  6,9,13,  10,14,  15};


И для наглядности измени выводимую матрицу:
Код

    char *    matr[] = {
                "1  2  4  7  11",
                "x  3  5  8  12",
                "x  x  6  9  13",
                "x  x  x 10  14",
                "x  x  x  x  15"
             };


И в цикле её вывода нужно исправить так: 
Код
i < size - 1






--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Marisha
Дата 16.12.2007, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вообще спасибо большое, ты меня выручил очень-очень!!!!!!!!!!!!!!!!!!!!!!!!!!!!! smile  smile  smile 

Это сообщение отредактировал(а) Marisha - 17.12.2007, 00:04
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

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

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


 




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


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

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