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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.07.2015, 14:02   #1
dim43
Новичок
Джуниор
 
Регистрация: 09.07.2015
Сообщений: 8
По умолчанию Формирование матрицы по входным данным из текстового файла в С

Здравствуйте.
Помогите пожалуйста написать программу, позволяющую по входному описанию (список) сформировать матрицу. Строки матрицы соответствуют элементам схемы, столбцы – контактам элементов, на пересечении строк и столбцов находятся номера цепей, в которые входит элемент данным контактом.
Входные данные: (находятся в текстовом файле)
1 1 1
3 1 1
6 2 2
6 1 1
1 2 2
2 1 2
1 3 3
2 2 3
3 2 3
3 3 4
4 1 4
4 2 5
5 1 5
5 2 6
6 3 6
2 3 7
5 4 7
6 3 7
6 5 7
Первый столбец-это номер элемента, второй столбец-это номер контакта и третий столбец номер цепи, в которой данный элемент входит данным контактом.
dim43 вне форума Ответить с цитированием
Старый 09.07.2015, 14:36   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

А где пример выходных данных?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 09.07.2015, 14:59   #3
dim43
Новичок
Джуниор
 
Регистрация: 09.07.2015
Сообщений: 8
По умолчанию

Вот пример:

1 2 3 4 5
1 1 2 3 - -
2 2 3 7 - -
3 1 3 4 - -
4 4 5 - - -
5 5 6 7 - -
6 1 1 6 7 7
dim43 вне форума Ответить с цитированием
Старый 09.07.2015, 15:03   #4
dim43
Новичок
Джуниор
 
Регистрация: 09.07.2015
Сообщений: 8
По умолчанию

Тут матрица не много сместилась, вот посмотрите http://hostingkartinok.com/show-imag...139ecc58c3bb04

Последний раз редактировалось dim43; 09.07.2015 в 15:06.
dim43 вне форума Ответить с цитированием
Старый 09.07.2015, 15:10   #5
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Обозначим:
а) Source[i, j] - входная матрица (0 ≤ i < m; 0 ≤ j < n; m, n є N);
б) Dest[Row, Col] - выходная матрица (...)
Выводи формулы:
1. Зависимость размеров матрицы Dest от размеров и/или данных Source.
2. Зависимость значений элементов Dest от i, j, Row, Col.
Остальное можно поручить бабеклаве - уборщице с павелецкого вокзала.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 09.07.2015, 15:34   #6
dim43
Новичок
Джуниор
 
Регистрация: 09.07.2015
Сообщений: 8
По умолчанию

Можешь по подробнее объяснить, вот я считываю входные данные с текстового файла в 3 разные переменные, используя динамический массив. У меня возникает проблема построения матрицы, на основе этих чисел.
dim43 вне форума Ответить с цитированием
Старый 09.07.2015, 15:51   #7
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
вот я считываю входные данные с текстового файла в 3 разные переменные
Не надо тебе щас ничего из файла читать, особенно в 3 переменные.
Если у тебя Y столбцов (контактов каждого элемента) и Х строк (число елементов), сделай двумерный динмассив (или одномерный дин массив записей, если кол-во контактов элементов постоянное, что врядли). Затем напиши функцию формирования и заполнения такого массива случайными числами.
Код:
type
  TIA = array of array of Word;

procedure RandomInpMatrix(var IA: TIA; const ElementCount: Integer; 
  const ContCount: Integer = 0; const Range: Integer = 0);
var
  Row: Integer;
begin
  SetLength(IA, ElementCount);
  for Row:= 0 to ElementCount - 1 do
    begin
      if ContCount = 0
       SetLength(IA[Row], 2 + Random(Range))
       SetLength(IA[Row], ContCount);
      for Col:= 0 to Length(IA[Row]) - 1 do
        IA[Row, Col]:= Random(Range);
    end;
end;
ВНИМАНИЕ!
УВАГА!!
АХТУНГ!!!
АТТЕНШН!!!!

Shit-code detected!
Код не отлаживал. Писал на заборе!


На основе этих данных будешь отлаживать основную функцию, а ввод из файла и вывод - это дело десятое, делается в последнюю очередь.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 09.07.2015, 15:56   #8
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Сделал как описал min@y™:
Цитата:
Сообщение от min@y™ Посмотреть сообщение
Обозначим:
а) Source[i, j] - входная матрица (0 ≤ i < m; 0 ≤ j < n; m, n є N);
б) Dest[Row, Col] - выходная матрица (...)
Выводи формулы:
1. Зависимость размеров матрицы Dest от размеров и/или данных Source.
2. Зависимость значений элементов Dest от i, j, Row, Col.
Остальное можно поручить бабеклаве - уборщице с павелецкого вокзала.
Код:
int matrix[][3]={
 {1,1,1}
,{3,1,1}
,{6,2,2}
,{6,1,1}
,{1,2,2}
,{2,1,2}
,{1,3,3}
,{2,2,3}
,{3,2,3}
,{3,3,4}
,{4,1,4}
,{4,2,5}
,{5,1,5}
,{5,2,6}
,{6,3,6}
,{2,3,7}
,{5,4,7}
,{6,3,7}
,{6,5,7}
};


int main()
{
    int rows = sizeof(matrix)/(3*sizeof(int));

    for(int i=0;i<rows;i++){
        printf("%3d %3d %3d\n",matrix[i][0], matrix[i][1], matrix[i][2]);
    }

    int newRows=0;
    int newCols=0;

    for(int i=0;i<rows;i++){
        if(newRows < matrix[i][0]) newRows = matrix[i][0];
        if(newCols < matrix[i][0]) newCols = matrix[i][1];
    }
    newRows++;
    newCols++;

    int** newMatrix = new int*[newRows];
    for (int i = 0; i < newRows; i++){
        newMatrix[i]= new int[newCols];
    }

    for (int i = 1; i < newRows; i++){
        for (int j = 1; j < newCols; j++){
            newMatrix[i][j]=-1;
        }
    }
    newMatrix[0][0]=0;
    for (int i = 1; i < newRows; i++){
        newMatrix[i][0] = i;
    }

    for (int i = 1; i < newCols; i++){
        newMatrix[0][i] = i;
    }

    for(int i=0;i<rows;i++){
        newMatrix[ matrix[i][0] ][ matrix[i][1] ]=matrix[i][2];
    }

    printf("New matrix:");
    for (int i = 0; i < newRows; i++){
        printf("\n");
        for (int j = 0; j < newCols; j++){
            if(newMatrix[i][j]==-1)
            printf("%3c",'-');
            else printf("%3d",newMatrix[i][j]);
        }
    }

    for(int i = 0; i < newRows; i++){
        delete[] newMatrix[i];
    }
    delete[] newMatrix;
}
Вот только выходные данные не сошлись .
matrix.png
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Старый 09.07.2015, 15:58   #9
dim43
Новичок
Джуниор
 
Регистрация: 09.07.2015
Сообщений: 8
По умолчанию

Спасибо большое)
dim43 вне форума Ответить с цитированием
Старый 09.07.2015, 15:59   #10
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Вот только выходные данные не сошлись
Это я виноватЪ!!!
Вали всё на меня!
Позор на мои седые йайцы!
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Формирование массива простых чисел из текстового файла Vitalyas Паскаль, Turbo Pascal, PascalABC.NET 11 16.12.2014 15:38
Расчет по формуле по данным из текстового файла CrOsP Общие вопросы Delphi 4 25.11.2012 10:15
формирование линейного списка целых чисел, элементы которого считываются из текстового файла kalosha-stepa Паскаль, Turbo Pascal, PascalABC.NET 10 21.10.2012 22:02
формирование матрицы из файла Олег093 Помощь студентам 1 24.04.2011 19:56
Формирование запроса по данным, взятым из формы kaizer131 Microsoft Office Access 5 07.04.2009 15:15