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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2011, 01:40   #1
Honey Bear
Пользователь
 
Регистрация: 28.10.2011
Сообщений: 11
По умолчанию ввод-вывод строчного массива.

Здравствуйте! Имеется задание: массив (10,25). Фамилии+ инициалы. Необходимо представить как 10 стрингов. В дальнейшем по заданию идет процедура сортировки, но это дело десятое. Мне не удается написать код, что бы паскаль хотя бы выводил это добро из файла. Получается либо выводит только одну строку, либо вообще только 10 символов вместо 25(длина стринга).
Код:
program strng;
var
    s: array [1..25] of string;
    t: string;
    i, j: integer;
    f, g: text;
begin
       assign (f, 'DAN2.INP');
       reset (f);
       assign (g, 'RES2.OUT');
       rewrite (g);
       for i:=1 to 10 do
begin
       read (f, s[i]);
       write (g, s[i]);
end;
       readln (f);
       writeln (g);
       for i:=1 o 10 do
begin
       write (g, s[i]);
end;
       close (f);
       close (g);
end.
В интернете задачи на стринги такого плана не нашел. Один знакомый сказал, что я не загнал их в массив. Но помочь разобраться у него времени нет. Умнее кода придумать пока не удалось, ввиду слабого понимания данной темы. Буду благодарен, если кто направит в нужную сторону мой, уже воспаленный, моск.
Honey Bear вне форума Ответить с цитированием
Старый 28.10.2011, 10:05   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Дык для записи в файл используйте writeln, чтобы не в 1 строку. Или что? В первом файле как записаны они?
Цитата:
(10,25)
почему 10, 25?oO У вас, кстати, не [10, 25], а одномерный из 25 элементов. Или что это означает?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 28.10.2011 в 10:13.
Alex11223 вне форума Ответить с цитированием
Старый 28.10.2011, 10:58   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

или я не совсем понял задание, или это полнейший бред!

но, если я правильно понял, что требуется (хоть это и безумное задание), тогда попробуйте так:
Код:
var
  s: array[1..10] of string[25];
  i, j: integer;
  f, g: text;
begin
  assign(f, 'DAN2.INP');
  reset(f);
  assign(g, 'RES2.OUT');
  rewrite(g);
  for i := 1 to 2 do
  begin
    s[i] := '';
    for j:=1 to 25 do begin
      s[i] := s[i] + ' ';
      read(f, s[i][j]);
    end;
    Readln(f);
    writeln(g, s[i]);
  end;
  close(f);
  close(g);
  WriteLn('Done. Press Enter to quit.');
  Readln
end.

p.s. если я ошибся в своих предположениях, тогда расскажите подробнее, что у Вас дано и что нужно в итогое получить. Ну и пример исходного файла выложите. Не помешает...

Последний раз редактировалось Serge_Bliznykov; 28.10.2011 в 11:01.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.10.2011, 14:04   #4
Honey Bear
Пользователь
 
Регистрация: 28.10.2011
Сообщений: 11
По умолчанию

Задание:
Дан список группы в 10 человек в виде
ФАМИЛИЯ И.О.
20 симв. 4 симв.
Данные в одной строке отделяются друг от друга пробелами.
Отсортировать список по алфавиту с учетом инициалов методом сравнения “один со всеми”.

вариант решения:
С массивами STRING.

До этого был вариант с обычным двумерным массивом. Его я сделал, но вот как то же самое выполнить со стрингами, точнее ввод-вывод, для меня пока темный лес.
Honey Bear вне форума Ответить с цитированием
Старый 28.10.2011, 14:09   #5
Honey Bear
Пользователь
 
Регистрация: 28.10.2011
Сообщений: 11
По умолчанию

Я думаю исходя из условия задания исходный файл - не проблема, я думаю. =Р
Honey Bear вне форума Ответить с цитированием
Старый 28.10.2011, 14:11   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А где этот список дан? Из файла читать? В каком виде?
Код:
Иванов И.А.
Петров Б.В.
Сидоров Е.Ф.
...
?
Тогда читать строку из файла и потом это строку разделять на 2 (до пробела и после) и т.д. до конца файла. Или куда это вы записать хотите? В двухмерный массив?
http://pascal.guti.ru/files.html (текстовые файлы)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 28.10.2011, 15:17   #7
Honey Bear
Пользователь
 
Регистрация: 28.10.2011
Сообщений: 11
По умолчанию

Alex11223 честно скажу, вот тот текст задания, какой я выложил - есть оригинал. Т.е. я от себя добавить ни чего не могу, т.к. обладаю только данным условием.
Сами исходные данные находятся в текстовом файле DAN2.INP, он фигурирует в моем псевдокоде.)) Указанный Вами пример - есть правильный, т.к. При выполнении предыдущего варианта, файл ввода именно так и выглядел. Только заметьте, что инициалы должны быть по правому краю (условие).
Honey Bear вне форума Ответить с цитированием
Старый 28.10.2011, 15:31   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Только заметьте, что инициалы должны быть по правому краю (условие).
А где они у меня?оО

Дык я так и не понял, что не получается. Записать в двухмерный массив [1..25, 1..2] строк эти данные из файла?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 28.10.2011, 16:17   #9
Honey Bear
Пользователь
 
Регистрация: 28.10.2011
Сообщений: 11
По умолчанию

Разобрался.
Код:
program strng;
type
    t=string [25] ;
    tt=array [1..10] of t;

var
   A: tt;
   i: integer;
   f, g: text;

{procedure sort}

begin
     assign (f, 'DAN2.INP');
     reset (f);
     assign (g, 'RES2.OUT');
     rewrite (g);
     for i:=1 to 10 do

begin
     readln (f, A[i]);
     writeln (g, A[i]);

end;
     readln (f);
     writeln (g);
     {begin
          SORT (A);
     end;}
               writeln (g, 'result======================');
for i:=1 to 10 do
begin
     writeln (g, A[i]);
end;
    close (f);
    close (g);
end.

Последний раз редактировалось Honey Bear; 28.10.2011 в 23:01. Причина: разобрался
Honey Bear вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввод-вывод Granus Общие вопросы C/C++ 1 29.05.2011 15:15
программа на СИ: вывести случайный треугольник, осуществить заполнение алгоритмом строчного сканирования Aлия Помощь студентам 0 25.05.2011 09:14
[C++] Ввод - вывод AquaticSoul Помощь студентам 0 18.04.2010 20:02
Ввод-вывод Sparky Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 04.10.2009 13:15
Ввод и вывод Mihael-Vlz Паскаль, Turbo Pascal, PascalABC.NET 3 19.01.2009 18:00