Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
18 / 18 / 6
Регистрация: 14.11.2010
Сообщений: 87
1

ввод из файла

29.01.2011, 21:23. Показов 909. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
всем доброго времени суток..
есть вопрос...
можно ли из таблицы

Амельченко Гомель Победы 35 95
Тарасов Гомель Минская 128 256
Командирова Брест Лесная 12 65

ввести данные поэлементно, или все нужно распределять таким образом..

Амельченко
Гомель
Победы
35
95
Тарасов
Гомель
Минская
128
256
Командирова
Брест
Лесная
12
65
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.01.2011, 21:23
Ответы с готовыми решениями:

Что работает быстрее, ввод с консоли или ввод с файла?
вводятся множество списков программа удаляет первое число списка и удаляет все числа в этом списке...

Переделать ввод с консоли на ввод из файла
Здравствуйте! Написала программу, но результат таков: я брала информацию из строки. Мне нужно,...

Переделать ввод из файла на ввод с клавиатуры
void openfile(int**a) { std::ifstream file("input.txt", std::ios_base::binary); file.seekg(0,...

ввод из файла
подскажите как делать ввод из файла

6
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
30.01.2011, 08:38 2
Можно.
У нас объявлен тип
Pascal
1
2
3
4
5
6
7
8
9
10
pers=record
        fam:string[20];
        gor:string[20];
        dm:integer;
        kw:integer;
        end;
var a:array[1..50] of pers;
      s,s1:string;
      f:text;
      c:integer;
Читаем строку
Pascal
1
readln(f,s);
Амельченко Гомель Победы 35 95
выбираем из строки значения
Pascal
1
2
3
4
5
6
7
8
a[i].fam:=copy(s,1,pos(' '),s)-1;//первое слово
delete(s,1,pos(' '),s);//удаляем
a[i].gor:=copy(s,1,pos(' '),s)-1;//второе слово
delete(s,1,pos(' '),s);
s1:=copy(s,1,pos(' '),s)-1;//третье слово
delete(s,1,pos(' '),s);
val(s1,a[i].dm,c);//преобразуем в число
val(s,a[i].kw,c);//четвертое слово-последнее
В строках между словами 1 пробел, в конце строк никакого мусора типа пробелов и табуляций.
1
18 / 18 / 6
Регистрация: 14.11.2010
Сообщений: 87
30.01.2011, 22:53  [ТС] 3
спасибо))) я в принципе уже и сам разобрался как строку разбить на части,
вот только если начинаю преобразовывать например '1.23' в число, то мне выдает код ошибки 2
вот что у меня вышло..проверял ее по частям - работает, собираешь в кучу...
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
PROGRAM VVOD;
uses crt;
type element=record
             naz:string;      {название улицы}
             dom:integer;     {количество домов на улице}
             dl:real;         {длина улиц}
           end;
var
  a:array[1..3] of string;    {массив (буфер), в который записываются
                              элементы после того как строка будет разбита
                              на составляющие, так как начальные данные
                              заданы в виде таблицы с N строками по три
                              элемента в каждой}
  b:array[1..43] of element;  {основной массив, в который запишутся
                              данные просле первой обрботки}
  c:string;                   {переменная (буфер), которая будет принимать
                              значения целой стоки из вводной таблицы}
  d:byte;                     {задает место положение первого
                              пробела}
  i:byte;                     
  j:byte;                     {индекс}
  k:byte;                     {индекс}
  n:integer;                  {переменная, которой присваивается числовое
                                 значени, изображонное строкай}
  cod:integer;                {код процедуоной ошибки, если строка
                              преобраэована в число равен 0}
  f:text;
  g:text;
begin
  assign(f,'d:\123\vvod.txt');
  reset(f);
  assign(g,'d:\123\vivod.txt');
  rewrite(g);
  for j:=1 to 43 do begin
    readln(f,c);
    {разделение строки на элементы}
    i:=1;
    while length(c)>0 do begin
      d:=pos(' ',c);
      a[i]:=copy(c,1,d-1);
      delete(c,1,d);
      inc(i);
      if i=3 then begin
      a[i]:=copy(c,1,length(c));
      delete(c,1,length(a[i]));
      break;
      end;{if}
    end;{while}
    b[j].naz:=a[1];
    val(a[2],n,cod);
    b[j].dom:=n;
    val(a[3],n,cod);
    b[j].dl:=n;
  end;{for}
  for j:=1 to 43 do begin
    write(g,b[j].naz,' ');
    write(g,b[j].dom,' ');
    writeln(g,b[j].dl:1:2);
  end;{for}
  close(f);
  close(g);
  readln;
end.
вот что на вводе...
Авиационная_2-я 32 1.25
Ауэрбаха 125 3.88
Бакунина 160 4.51
Барыкина 214 6.95
Бочкина 267 7.06
Весенняя 173 4.88
Витебская 87 2.96
Гагарина 46 2.00
Гайдара 6 0.62
Давыдовская 9 0.50
Докутович 64 2.87
Ефремова 29 1.51
Жарковского 35 2.10
Западная 30 1.88
Западный_блокпост 41 2.61
Иванова 18 1.30
Июля_11 26 2.16
Каменщикова 8 1.35
Конечная 25 0.82
Лазо 29 2.37
Лещинская 185 4.70
Мира 35 1.54
Набережная 1 1.98
Нагорная 88 3.60
Огаренко 21 2.09
Песина 39 2.74
Победы 40 0.85
Речицкое_шоссе 130 5.69
Связи 25 2.81
Советская 166 5.94
Тимофеенко 13 1.77
Украинская 26 1.03
Федюнинского 10 1.35
Фрунзе 5 0.60
Хатаевича 20 1.00
Царикова 37 2.30
Чапаева 15 0.52
Широкая 28 2.00
Щорса 53 3.48
Электронная 134 3.71
Юбилейная 29 2.16
Ягодная 29 1.35
Ясная 35 2.99

а на выходе получаю....

Авиационная_2-я 32 0.00
Ауэрбаха 125 0.00
Бакунина 160 0.00
Барыкина 214 0.00
Бочкина 267 0.00
Весенняя 173 0.00
Витебская 87 0.00
Гагарина 46 0.00
Гайдара 6 0.00
Давыдовская 9 0.00
Докутович 64 0.00
Ефремова 29 0.00
Жарковского 35 0.00
Западная 30 0.00
Западный_блокпост 41 0.00
Иванова 18 0.00
Июля_11 26 0.00
Каменщикова 8 0.00
Конечная 25 0.00
Лазо 29 0.00
Лещинская 185 0.00
Мира 35 0.00
Набережная 1 0.00
Нагорная 88 0.00
Огаренко 21 0.00
Песина 39 0.00
Победы 40 0.00
Речицкое_шоссе 130 0.00
Связи 25 0.00
Советская 166 0.00
Тимофеенко 13 0.00
Украинская 26 0.00
Федюнинского 10 0.00
Фрунзе 5 0.00
Хатаевича 20 0.00
Царикова 37 0.00
Чапаева 15 0.00
Широкая 28 0.00
Щорса 53 0.00
Электронная 134 0.00
Юбилейная 29 0.00
Ягодная 29 0.00
Ясная 35 0.00

прикол в том, что если выводить значения (g,b[j].dl:1:2) в отдельный файл, то проблема отпадает..
но никак не могу найти косяк..правда там черт ногу сломит..
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
31.01.2011, 07:56 4
Pascal
1
2
val(a[3],n,cod);
    b[j].dl:=n;
Естественно ошибка, вещественное число пишете в целочисленную переменную, нужно просто, как я писал
Pascal
1
val(a[3],b[j].dl,cod);
И зачем вообще массив заводить? Все же проще делается, и я Вам написал как. А раз шибка умный, то нефиг спрашивать и время отнимать.
1
18 / 18 / 6
Регистрация: 14.11.2010
Сообщений: 87
01.02.2011, 10:42  [ТС] 5
ОЙ Я ЛОШАРА......

Добавлено через 9 минут
а по поводу шибкой умности..так я хоть не прошу сделать все за меня..
вроде завтра курсовая, а я полный ноль в паскале, препод дурак, только орет и ничего не обьясняет..поэтому сделайте все за меня, а я потом все пойму..
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
01.02.2011, 11:04 6
Цитата Сообщение от bezprizornik Посмотреть сообщение
поэтому сделайте все за меня
Во первых не написано что делать. То что ты спросил, я ответил. А если полностью всю работу то это вряд ли. Если только за деньги здесь.
https://www.cyberforum.ru/freelance/
0
18 / 18 / 6
Регистрация: 14.11.2010
Сообщений: 87
03.02.2011, 10:34  [ТС] 7
а дело было так..нужно организовать ввод из файла..одна строка состоит из трех разных элементов..
оказывается если разделить их запятыми, то можно написать просто
Pascal
1
readln(a,b,c);
но с пробелом оказалось поинтересней))
мой косяк в том, что я не указал еще одну переменную,
которой будет присваиваться значение :real;
за помощь огромное спасибо)))

Добавлено через 4 минуты
а если заказывать на стороне курсовые и контрольные, то я как ничерта не знал, так ничерта и не узнаю..
0
03.02.2011, 10:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.02.2011, 10:34
Помогаю со студенческими работами здесь

Ввод из файла (C++)
Есть текстовый файл с некоторым двумерным массивом, например: BBBBB BSBSB BSSSB BSBSB BBBBB ...

Ввод файла F
Помогите составить код программы: Ввести с клавиатуры файл F с числовыми компонентами и выдать...

Ввод из файла.
дана программа. в ней нужно ввести данные из файла. при выводе их на экран выводит не той...

Ввод из файла
Есть ввод из файла, но при запуске программы ничего не происходит - черный экран с мигающим...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru