Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/14: Рейтинг темы: голосов - 14, средняя оценка - 5.00
roux
0 / 0 / 0
Регистрация: 05.03.2009
Сообщений: 13
#1

задача на работу с файлами!

29.03.2009, 20:10. Просмотров 2479. Ответов 12
Метки нет (Все метки)

Если кому-то будет не сложно...я просто ничего в файлах практически не понимаю(

известные данные: название предприятий, плановый объем товара каждого их них, фактический объем товара каждого из них,количество работников каждого предприятия.

как я поняла, все эти данные хранятся в текстовом файле.

и вот что мне нужно найти: (используя процедуры)
-количество предприятий,выполнивших план
-предприятие с min плановым объемом товара
-прелприятие с Min количеством работников
-обеспечить вывод информации о предприятии по последний букве(строки??)
-упорядочить предприятия по убыванию разничного товарооборота( сортировка??)

Я не прошу делать это за меня,просто покажите на одном примере как формируется сама процедура...(( я заранее очень-очень благодарна!!!

Очень-очень!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.03.2009, 20:10
Ответы с готовыми решениями:

Написать программу, которая организует работу с типизированными файлами
Написать программу, которая организует работу с типизированными файлами (2...

Задача на работу с множеством
1.Дан текст, который состоит из слов. Слова в тексте отделяются одно от другого...

задача в паскале с файлами
я ни знаю как ее написать помогите пожалуйста : Дан файл f , элементы которого...

Задача на работу с модулем GRAPH
С помощью процедур и функций модуля GRAPH на экране изобразить декартовую...

Задача на работу с "текстом из файла"
Приветствую всех участников и участниц форума сего ;) Задача заключается в...

12
Puporev
Модератор
54221 / 41854 / 28923
Регистрация: 18.05.2008
Сообщений: 98,534
29.03.2009, 21:03 #2
Так полистайте этот раздел форума и найдете примеры работы с записями и примеры написания процедур.

Добавлено через 21 минуту 46 секунд
Вот например здесь гляньте.
http://www.cyberforum.ru/post115654.html
1
roux
0 / 0 / 0
Регистрация: 05.03.2009
Сообщений: 13
30.03.2009, 18:34  [ТС] #3
обязательно

Добавлено через 21 час 19 минут 41 секунду
люди,подскажите пожалуйста!...
0
romych2004
22 / 21 / 0
Регистрация: 29.03.2009
Сообщений: 69
30.03.2009, 18:36 #4
а запись в файл как происходит?
просто чтоб прочитать из файла, нужно в него сначала записать =)
0
Puporev
Модератор
54221 / 41854 / 28923
Регистрация: 18.05.2008
Сообщений: 98,534
30.03.2009, 19:36 #5
люди,подскажите пожалуйста!...
А что подсказать?
покажите на одном примере как формируется сама процедура.
Вам показали.
Я не прошу делать это за меня,
А может Вам все-таки надо всю программу написать, так Вы так и напишите, а не мудрите, типа я сама.
1
Sahib
0 / 0 / 0
Регистрация: 30.03.2009
Сообщений: 4
30.03.2009, 19:43 #6
//
int c=0;
for(1...n)
{
c++;
}write(c);
для подсчёта фирм //
//
int max=0; min;
for(1..n)
{
if(max>n)
{max=n;} ---> для max
else if(min<n)
{min=n;} --> для min
}

//
0
Puporev
Модератор
54221 / 41854 / 28923
Регистрация: 18.05.2008
Сообщений: 98,534
30.03.2009, 19:54 #7
int c=0;
for(1...n)
{
c++;
}write(c);
для подсчёта фирм //
//
int max=0; min;
for(1..n)
{
if(max>n)
{max=n;} ---> для max
else if(min<n)
{min=n;} --> для min
Крутой у тебя Паскаль!
1
Sahib
0 / 0 / 0
Регистрация: 30.03.2009
Сообщений: 4
30.03.2009, 19:56 #8
А чё?
0
romych2004
22 / 21 / 0
Регистрация: 29.03.2009
Сообщений: 69
30.03.2009, 20:18 #9
че, че.. это цпп

upd: ой нет, это не цпп)
0
roux
0 / 0 / 0
Регистрация: 05.03.2009
Сообщений: 13
30.03.2009, 22:07  [ТС] #10
Да,мне нужна вся программа,потому что я могу лишь только записать отдельные куски,которые не связать(.
0
Puporev
Модератор
54221 / 41854 / 28923
Регистрация: 18.05.2008
Сообщений: 98,534
30.03.2009, 22:10 #11
1. Создаете текстовый файл лучше в папке с программой,тогда не надо указывать путь, только имя. Сохраняете его, имя латинскими буквами, не более 8. Расширение файла в имя писать не надо, это только в программе вызов с расширением.
В файл записываете несколько строк такой структуры
Название_1000_1200_100 ('_' это пробел). Вообще-то в этой программе еще что-то типа меню надо, но это уже без меня, просили только процедуры.
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
uses crt;
type
Tpred=record {тип запись предприятие}
     naz:string[20];{название}
     pln:word; {план}
     fkt:word;{факт}
     kol:word;{кол. работников}
     end;
Tmas=array[1..100] of Tpred;{тип массив записей}
procedure Convert(var a:string);{процедура преобразования русских букв из кодировки Win в файле в кодировку Dos в программе}
var i:integer;
begin
for i:=1 to length(a) do
if ord(a[i]) in [192..239] then a[i]:=chr(ord(a[i])-64)
else if ord(a[i]) in [240..255] then a[i]:=chr(ord(a[i])-16)
else if ord(a[i])=168 then a[i]:=chr(ord(240))
else if ord(a[i])=184 then a[i]:=chr(ord(241));
end;
procedure Plan(m:Tmas;k:byte;var kp:byte);{выполнили план}
var i:byte;
begin
kp:=0;
for i:=1 to k do
if m[i].fkt>=m[i].pln then kp:=kp+1;{если факт больше или равен плану}
writeln('Выполнили план=',kp);
end;
procedure Min(m:Tmas;k:byte;var mnp,mnr:word;var imnp,imnr:byte);{нахождение минимальных}
var i:byte;
begin
mnp:=0;mnr:=0;imnp:=1;imnr:=1;
for i:=1 to k do
if m[i].pln<mnp then
  begin
   mnp:=m[i].pln;
   imnp:=i;
  end
else if m[i].kol<mnr then
  begin
   mnr:=m[i].kol;
   imnp:=i;
  end;
writeln('Минимальный плановый объем у ',m[imnp].naz);
writeln('Минимальное количество работников на ',m[imnr].naz);
readln;
clrscr;
end;
procedure PosBuk(var m:Tmas;d:byte;b:char);{вывод по последней букве}
var i,k:byte;
begin
write('Введите последнюю букву предприятия:');
readln(b);
k:=0;
writeln('Список предприятий оканчивающихся на букву ',b);
writeln('------------------------------------------');
writeln('|  Название  | План | Факт | Кол. работн.|');
writeln('------------------------------------------');
for i:=1 to d do
if m[i].naz[length(m[i].naz)]=b then {если последняя буква=запрошенной}
  begin
   k:=1; {фиксируем}
   gotoXY(1,whereY);write('| ',m[i].naz);{выводим в таблицу}
   gotoXY(14,whereY);write('| ',m[i].pln);
   gotoXY(21,whereY);write('| ',m[i].fkt);
   gotoXY(28,whereY);write('|     ',m[i].kol);
   gotoXY(42,whereY);write('|');
   writeln;
  end;
if k=0 then writeln('Таких предприятий нет!');{если нет, сообщаем}
writeln('------------------------------------------');
readln;
clrscr;
end;
procedure VyvSort(var m:Tmas;k:byte);{вывод в сортированном виде}
var i,j:byte;
    bf:Tpred;
begin
for i:=1 to k-1 do {сортировка пузырьком по полю факт}
for j:=i+1 to k do
if m[i].fkt<m[j].fkt then
  begin
    bf:=m[i];
    m[i]:=m[j];
    m[j]:=bf;
  end;
writeln('Список предприятий, упорядоченных по убыванию товарооборота');
writeln('------------------------------------------');
writeln('|  Название  | План | Факт | Кол. работн.|');
writeln('------------------------------------------');
for i:=1 to k do
  begin
   gotoXY(1,whereY);write('| ',m[i].naz);
   gotoXY(14,whereY);write('| ',m[i].pln);
   gotoXY(21,whereY);write('| ',m[i].fkt);
   gotoXY(28,whereY);write('|     ',m[i].kol);
   gotoXY(42,whereY);write('|');
   writeln;
  end;
writeln('------------------------------------------');
end;
var sp:Tmas; {массив записей}
    f:text; {текстовый файл}
    s,s1:string;{вспомогательные строки}
    t,c:integer;{переменные для перевода строки в число}
    n,kpr,iminp,iminr:byte;{количество записей, кол. предп. выполн. план, номера минимальных в массиве}
    minp,minr:word;{значения минимальных}
    ch:char;{последняя буква}
begin
clrscr;
assign(f,'file1.txt');{связываем переменную с файлом}
reset(f);{открываем его для чтения}
writeln('Список предприятий':30);
writeln('------------------------------------------');
writeln('|  Название  | План | Факт | Кол. работн.|');
writeln('------------------------------------------');
n:=0;
while not eof(f) do {пока не конец файла}
   begin
    n:=n+1;{считаем строки-записи}
    readln(f,s);{читаем строки}
    Convert(s);{конвертируем}
    sp[n].naz:=copy(s,1,pos(' ',s)-1);{первое слово до пробела-название}
    gotoXY(1,whereY);write('| ',sp[n].naz);{в таблицу}
    delete(s,1,pos(' ',s));{удаляем из строки}
    s1:=copy(s,1,pos(' ',s)-1);{второе слово-план}
    val(s1,t,c);{превращаем в число}
    sp[n].pln:=t;{заносим в запись}
    delete(s,1,pos(' ',s));
    gotoXY(14,whereY);write('| ',sp[n].pln);
    s1:=copy(s,1,pos(' ',s)-1);{третье слово-факт}
    val(s1,t,c);
    sp[n].fkt:=t;
    delete(s,1,pos(' ',s));
    gotoXY(21,whereY);write('| ',sp[n].fkt);
    val(s,t,c);{остаток строки-количество работников}
    sp[n].kol:=t;
    gotoXY(28,whereY);write('|     ',sp[n].kol);
    gotoXY(42,whereY);write('|');
    writeln;
  end;
writeln('------------------------------------------');
readln;
clrscr; {очищаем экран}
Plan(sp,n,kpr);{выводим выполнивших план}
Min(sp,n,minp,minr,iminp,iminr);{выводим минимальных}
PosBuk(sp,n,ch);{выводим по последней букве}
VyvSort(sp,n);{выводим в отсортированном виде}
readln
end.
0
roux
0 / 0 / 0
Регистрация: 05.03.2009
Сообщений: 13
30.03.2009, 22:15  [ТС] #12
romych2004,Как я поняла,записываешь все данные просто в блокноте,текстом.

Добавлено через 4 минуты 24 секунды
Cпасибо огромное!!!!!! Вы меня просто очень сильно выручили!!! Спасибо!!
Я очень благодарна!!!

C-п-а-с-и-б-о!
0
Puporev
Модератор
54221 / 41854 / 28923
Регистрация: 18.05.2008
Сообщений: 98,534
30.03.2009, 22:22 #13
Сразу бы написали правду, что не знаете как писать, раньше бы написал, думал сами хотите разобраться.
0
30.03.2009, 22:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.03.2009, 22:22

Задача на работу с файлами
Добрый день! Помогите, пожалуйста, решить следующую задачу: &quot;Дан текстовый файл...

Задача на работу с файлами
Помогите решить проблему! ________________________________________ В файле...

Задача на работу с файлами
Записать в С все положительные числа из А и В, указывая после каждого десятого...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru