IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Создание двумерного массива из строки..., создание вумерного массива из строки состоящей из последовательности д
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 6
Пол: Мужской

Репутация: -  0  +


Зрасти всем!)
Не буду выклаывать всю задачу целиком, тк кое что знаю как делать... а вот что не знаю... Думаю вы мне в этом поможете, надеюсь очень smile.gif
В текстовом файле содержится последовательность действительных чисел. ...зделать это, зделать то и так далее...
Хочу представить ету последовательность в виде массива (и вывести его на экран), но не простого, а двумерного, дабы в дальнейшем накручивать на него то что требует задача. Как это зделать? Я не понимаю((.
(нашел решенную заачу в инету, похожую). Но там применена сверх логика, не моего уровня(( Ни че не понял кроме того что крюто все там завернуто wub.gif
Каким образом превратить задуманное в действительлность? буду рад, если хотябы покажите как это будет выглядеть с ономерным массивом.
Спасибо за внимание.

ЗЫ яндех юзал если чо. ни чего более привлекатеьного как задать вопрос тут не нашел

Сообщение отредактировано: CapFlint -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


А что ты хочешь видеть в двумерном массиве? Одна строка - эти твои действительные числа, а вторая? Пока пустые ячейки, которые потом будешь использовать?


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Что именно непонятно? Как реализовать массив, размеры которого будут задаваться при выполнении программы? Или как прочитать в него данные из файла?

По первому варианту читай здесь: FAQ: Динамические массивы и матрицы

По второму - пользуйся поиском, я где-то на форуме выкладывал несколько вариантов чтения данных из файла (с разными разделителями)...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4





Группа: Пользователи
Сообщений: 6
Пол: Мужской

Репутация: -  0  +


1 в двумерном массиве я хочу видеть эти самые числа из стоки из файла... тоесть и первая и вторая строка будут одинаковы и буут содержать числа из заданной последовательности
2 непонятно как реализовать массив. количество элементов в стоке соответствует количеству элементов послеовательности из файла.
3 Или как прочитать в него данные из файла? максимум чего я пока добился это вывод на экран последнено элемента последовательности, остальные ге то теряются, я даже краешком мозга понимаю где и в чем дело, но ни как не соображу как и что поправить((
4 ага, спасибо) щас ознакомлюсь со ссылочкой.
Извините что сразу так невнятно накалякал...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


Раз какой-то код уже есть - может, выложишь его?


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6





Группа: Пользователи
Сообщений: 6
Пол: Мужской

Репутация: -  0  +


да, конечно. я тут кое что прочел полезного на форуме, попытаюсь реализовать... заработает, кину код. не заработает-темболее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7





Группа: Пользователи
Сообщений: 6
Пол: Мужской

Репутация: -  0  +


Ниже приписан код.
всегда ссылается на mxArr^[i] := Number; выдавая вот такую ошибку
[Error] Var_5_Zad_03.dpr(39): Incompatible types: 'Real' and 'PVector'
Старался делать как тут - Работа с динамическими матрицами Подскажите пожалуйста в чем я ошибаюсь!


program mxArr;

{$APPTYPE CONSOLE}
{$R-}
uses
SysUtils,
Russian;

type
TType = Real;
type
PVector = ^TVector;
TVector = array[1..1] of TType;
PDynMatrix = ^TDynMatrix;
TDynMatrix = array[1..1] of PVector;

var
TextFile : Text;
TextName : string;
mxArr : PDynMatrix;
Number : Real;
i, j, N : byte;

begin
Writeln; Write(Rus(' Имя Файла: ')); Readln(TextName); Writeln;
Write('N = '); Readln(N); Writeln; // кол-во чисел в послеовательности

Assign(TextFile, TextName);
Reset(TextFile);
GetMem(mxArr, N * SizeOf(PVector));

for i := 1 to N do
while not Eof (TextFile) do
begin
Read(TextFile, Number);
mxArr^[i] := Number;
GetMem(mxArr^[i], N * SizeOf(TType));
end;

for i := 1 to N do
begin
Writeln;
for j := 1 to N do
Write(mxArr^[i]^[j]:3);
end;

for i := 1 to N do
FreeMem(mxArr^[i], N * SizeOf(TType));
FreeMem(mxArr, N * SizeOf(PVector));
Close(TextFile);
Readln;
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






А модуль Russian мы должны сами написать?

Добавлено через 8 мин.
Цитата
Старался делать как тут
Ты бы написал наконец, ЧТО ты получить-то хочешь? А то пишешь что

Цитата
и первая и вторая строка будут одинаковы и буут содержать числа из заданной последовательности
, а выделить память пытаешься как минимум для N строк? Если тебе надо двумерный массив из N столбцов и 2-х строк, то вот так:

  Assign(TextFile, TextName);
Reset(TextFile);
GetMem(mxArr, 2 * SizeOf(PVector)); // выделяешь память под указатели 2 строки

for i := 1 to 2 do
GetMem(mxArr^[i], N * SizeOf(TType)); // это - собственно выделение памяти под 2 строки

i := 1;
while not Eof (TextFile) do begin
Read(TextFile, Number);
mxArr^[1]^[i] := Number; // пишешь одно и то же и в первую
mxArr^[2]^[i] := Number; // .. и во вторую строку
inc(i);
end;

for i := 1 to 2 do
begin
Writeln;
for j := 1 to N do
Write(mxArr^[i]^[j]:3);
end;

for i := 1 to 2 do
FreeMem(mxArr^[i], N * SizeOf(TType));
FreeMem(mxArr, 2 * SizeOf(PVector));

 К началу страницы 
+ Ответить 
сообщение
Сообщение #9





Группа: Пользователи
Сообщений: 6
Пол: Мужской

Репутация: -  0  +


Для начала мне было бы здорово понять как из заданной строки создать матрицу с одинаковыми строками и вывести ее на экран. Сколько строк, две или три, не столь вашно, главное что не одна...
volvo, попробывал ваш пример. но на строке mxArr^[2]^[i] := Number; получаю
[Error] Var_5_Zad_03.dpr(44): Constant expression violates subrange bounds

может я что то напутал в разделах TYPE и VAR ? чотя ни чего вроде не забыл.

Сообщение отредактировано: CapFlint -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Вот этот код только что отработал так, как ты хотел (Delphi 6):

program arr;
{$APPTYPE CONSOLE}
uses
SysUtils;

{$R-}
type
TType = Real;
type
PVector = ^TVector;
TVector = array[1..1] of TType;
PDynMatrix = ^TDynMatrix;
TDynMatrix = array[1..1] of PVector;

var
TextFile : Text;
TextName : string;
mxArr : PDynMatrix;
Number : Real;
i, j, N, count : byte;

begin
// Writeln; Write(Rus(' ??? ?????: ')); Readln(TextName); Writeln;
TextName := 't.txt'; // Поменяй на ввод имени файла
Write('N = '); Readln(N); Writeln;

Assign(TextFile, TextName);
Reset(TextFile);
GetMem(mxArr, 2 * SizeOf(PVector));

for i := 1 to 2 do
GetMem(mxArr^[i], N * SizeOf(TType));

i := 1;
while not SeekEof (TextFile) do begin
Read(TextFile, Number);
j := 1; mxArr^[j]^[i] := Number; // Обманываем компилятор - с переменными это работает
j := 2; mxArr^[j]^[i] := Number;
inc(i);
end;
count := i - 1; // Это - количество чисел, прочитанных из файла, если N вводилось "с запасом"

writeln('count = ', count);
for i := 1 to 2 do
begin
Writeln;
for j := 1 to count do // Печатаем столько, сколько прочли
Write(mxArr^[i]^[j]:6:2);
end;

for i := 1 to 2 do
FreeMem(mxArr^[i], N * SizeOf(TType));
FreeMem(mxArr, 2 * SizeOf(PVector));
Close(TextFile);
Readln;
end.

Это тебе нужно было?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11





Группа: Пользователи
Сообщений: 6
Пол: Мужской

Репутация: -  0  +


Да, именно то! smile.gif И количество строк в коде можно увеличивать! blink.gif
Благодарю!! Буду разбираться дальше.. Спасибо
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 20.04.2024 17:33
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name