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

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

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

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





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

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


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

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

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


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

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

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


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


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


Гость






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

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

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





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

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


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


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

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

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


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


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





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

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


да, конечно. я тут кое что прочел полезного на форуме, попытаюсь реализовать... заработает, кину код. не заработает-темболее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
CapFlint
сообщение 28.09.2007 15:07
Сообщение #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 
 К началу страницы 
+ Ответить 
volvo
сообщение 28.09.2007 15:14
Сообщение #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));

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





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

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


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

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

Сообщение отредактировано: CapFlint - 28.09.2007 16:04
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 28.09.2007 18:13
Сообщение #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.

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





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

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


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

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

 



- Текстовая версия 20.07.2025 10:31
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"