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

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

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

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


Пионер
**

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

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


Дело вот вобщем в чем- написал програму, которая в конечном итоге должна записать "записи" в типизированый файл при том соблюдая внешнее оформление текста(табуляцию-типо под таблицу).
Возникла следующая проблема: после записи в файл и при дальнейшем его просмотре(что сказано в условии задачи) появляются лишние знаки табуляции(#9) а цифры не отображаются, такое ошюшение, что записаны в другой кодировке.
Вобщем прикрепляю прогу и побочный файл(для чтения).
Хелп!
mega_chok.gif


Прикрепленные файлы
Прикрепленный файл  Proga.rar ( 971 байт ) Кол-во скачиваний: 267
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата
такое ошюшение, что записаны в другой кодировке.

Дык... Ты же пишешь в типизированный файл, а не в текстовый... В файл записывается внутреннее представление записи типа stri4ka. В частности, числа пишутся не символами (как в текстовых файлах), а просто пишется содержимое того байта, который представляет число. Естественно, никаких переносов строки, ибо данные хранятся последовательно...

Когда прочтешь информацию из типизированного файла в структуру типа stri4ka, все встанет на свои места...
Цитата
после записи в файл и при дальнейшем его просмотре(что сказано в условии задачи)
прямо так и сказано, просмотреть с помощью текстового редактора? Может быть, прочесть содержимое файла и показать его на экране?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

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

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


Цитата
прямо так и сказано, просмотреть с помощью текстового редактора? Может быть, прочесть содержимое файла и показать его на экране?

Да! так и сказано, почему я это и подчеркнул.
Блин, так не охота переводить вам условие. короче думаю поймете)
Код
5.Переглянути за допомогою вбудованого в'ювера або одного з текстових редакторів
структуру створеного типізованого файла. Записати розміри обох файлів: текстового і типізо¬
ваного, порівняти їх, зробити ВИСНОВКИ.

А вообще, если так посмотреть, то програма правильно написана? unsure.gif

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


Пионер
**

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

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


Большое кстати, забыл прочитать одно условие задачи, и сразу же запутался, вставляя это в задачу. wacko.gif
Мне нужно там вычеслить общее кол-во путевок, которые получила каждая школа. Вывести это все дело на экран.
Т.е. я понимаю что нужно сравнить tabl[i].nomer со всеми tabl[i].nomer, выводив на экран только разные №-ра а потом tabl[i].kst_p с теми же i просумировать и вывести?
Я пробовал начать это так:
...
tabl[i].vidp:= Copy(rad,1,length(rad));
delete(rad,1,length(rad));
Write(f2,tabl[i]);

for k:=0
{
а вот что будет стоять на месте этого элемента,
если он не существует? "мусор"?
} to j-1 do
if tabl[k].nomer <> tabl[i].nomer then write('№',i);
{
далее не придумал, т.к. даже не знаю
правильный ли у меня ход мыслей)
}

Inc(i);
Until seekeof(f1);
...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Alex7, ты знаешь, не у всех тут отличное знание украинского языка, а в твоей программе все по-украински, да и название kst_p мне лично ничего не говорит... Кроме того, я так и не видел задания, ты все время выдаешь только его куски, и то на непонятном языке. Возможно лм вообще присутствие одного и того же номера школы более одного раза в файле.

Извини, но если уж ты задаешь вопросы - задавай их как положено !!!
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Пионер
**

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

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


Цитата
Извини, но если уж ты задаешь вопросы - задавай их как положено !!!
Ну ладно, учту)
Цитата
Возможно лм вообще присутствие одного и того же номера школы более одного раза в файле.
А почему нет?
Разве одна школа не может получить путевки в разные лагеря (например Zonz и Veselka lol.gif ) ? cool.gif
Ладно, прийдется перевести полностью задание, ой, в падло то как wink.gif ...но мне ж надо! rolleyes.gif
Цитата
1.Создать в текстовом редакторе файл,данные которого должны соответствовать таблице(оформление необязательное) {т.е. как и у меня}. Файл должен иметь разширение *.inf
2. В програме организовать создание нового типизированного файла с разширением *.dat , который должен состоять из записей, каждый из которых должен соответствовать определ. полю таблици. Одновременно розпечатать данные на экран. бла,бла,бла,,, подсказки...4) Когда типизированный файл создано, закрыть текстовой и дальше продолжать работать с предыд. Запрограмировать действия, которые необходимо выполнить, чтобы реализовать задачу, обработки введенной инфы. 5) просмотреть с помощью встроенного вьювера, или одного из текстовых редакторов структуру типизированного файла. Записать размеры обоих файлов, Сделать выводы.
Индивидуальное задание:
"Разпределение путевок в оздоровительно- спортивные (конц lol.gif )лагеря по школам города!
<таблица>
Напечатать сумарное кол-во путевок, которое получила каждаю щкола.

Фуф, неужели енд? wacko.gif good.gif
Я буду горько смеятся, если теперь, после прочтения задачи, мне ктото предложит более умный и простой алгоритм решения задачи! nea.gif cool.gif

М
Ты нам одолжение чтоли делаешь ? mad.gif
klem4

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Пионер
**

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

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


Цитата
Ты нам одолжение чтоли делаешь ? mad.gif
Дык, volvo, ты чо?
Где это видано, чтобы кто-то просящий о помощи делал помогающему этим отдолжение? blink.gif
Я чото тебя совсем не понимаю! nea.gif

М
Это не Volvo был ...
klem4

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Пионер
**

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

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


Понял, но сути не меняет! give_rose.gif
Так кто-то может попробовать мне помочь именно с этим приколом?
(Подсчетом общего кол-ва путевок по школам.)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Пионер
**

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

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


Люди! ПЛИЗ! Хелп, ну!
Я не могу таки до конца грамотно разобраться!
Вот прога(та-же)
program tablizja(lab9_10);
Type stri4ka= record
nazva: string[20];
misze: string[20];
nomer: byte;
kst_p: byte;
vidp : string[50];
end;
Var tabl: array[1..25] of stri4ka;
sumkst_p,k,i,z: integer;
f1name,f2name: string[50];
rad: string;
f1: text;
f2: file of stri4ka;
Begin
Repeat
z:=0;
Writeln('‚ўҐ¤вм i¬''п д ©«г'); readln(f1name);
assign(f1,f1name);
{$I-}
reset(f1);
{$I+}
if ioresult<>0 then
begin
writeln('Џ®¬Ё«Є®ўҐ ўўҐ¤Ґ­­п! ” ©« ­Ґ §­ ©¤Ґ­®.');
Inc(z);
end;
Until z=0;
f2name:= Copy(f1name,1,pos('.',f1name))+'dat';
assign(f2,f2name); rewrite(f2);

for z:=1 to 80 do
Write(#196);
Writeln('’ Ўiа',#9,#9,'ЊiбжҐ §­-­­п',#9,'ь иЄ®«Ё'#9,#9,'Љ-бвм Їгв.',#9,'‚i¤Ї®ўi¤ «м­Ё©');
writeln;
i:=1;
Repeat
Readln(f1,rad); writeln(rad);
tabl[i].nazva:= Copy(rad,1,pos(#9,rad)-1); delete(rad,1,pos(#9,rad)+1);
tabl[i].misze:= Copy(rad,1,pos(#9,rad)-1); delete(rad,1,pos(#9,rad)+1);
Val(Copy(rad,1,pos(#9,rad)-1),tabl[i].nomer,z); delete(rad,1,pos(#9,rad)+1);
Val(Copy(rad,1,pos(#9,rad)-1),tabl[i].kst_p,z); delete(rad,1,pos(#9,rad)+1);
tabl[i].vidp:= Copy(rad,1,length(rad)); delete(rad,1,length(rad));
Write(f2,tabl[i]);
Inc(i);
Until seekeof(f1);
close(f1);
for z:=1 to 80 do
Write(#43);
Writeln(' Љi«мЄiбвм Їгвiў®Є, пЄг ®ваЁ¬ « Є®¦­ иЄ®« :');
Writeln('˜Є®« ь');
for z:=1 to 80 do
Write(#196);
{For k:=1 to i-1 do
With tabl[k] do
Writeln(k,' ',nazva,#9,misze,#9,nomer,#9,kst_p,#9,vidp);}
close(f2);
Writeln('„ ­­i § ­ҐбҐ­i г д ©« ''',f2name,'''');
Readln;
End.

для пояснения- переменные:
kst_p -это кол-во путевок, которые получила каждая школа
sumkst_p - это кол-во путевок, которые получила каждая школа вместе(ЭТО МНЕ И НАДО СЕЦЧАС НАЙТИ)
rad -рядок(который читаем)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Пионер
**

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

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


Сои за как-бы оффтоп, но вот вобщем чо я наполовину сделал,НО опять таки же условие не хочет работать! ХЕЛП! Мне на завтра нужно идеально закончить прогу!
Writeln('               Кол-во путевок, которые получила КАЖДАЯ школа« :');
Write('Школа',#9);
For z:=1 to i-1 do
If z=1 then
Write('№',tabl[z].nomer,#9) else
begin
sumkst_p:=0;
For k:=1 to z-1 do
If tabl[z].nomer=tabl[k].nomer then Inc(sumkst_p);
If sumkst_p=0 then Write('№',tabl[z].nomer,#9);
end;
writeln;
Write('Кол-во',#9);
For z:=1 to i-1 do
begin
sumkst_p:=0;
For k:=1 to i-1 do
If tabl[z].nomer=tabl[k].nomer then
begin
sumkst_p:=sumkst_p+tabl[k].kst_p;
tabl[k].nomer:=0;
end;
Write(sumkst_p,#9);
end;

Вот. условие подсчета кол-ва путевок не работает!!!! mega_chok.gif mega_chok.gif mega_chok.gif
 Write('Кол-во',#9);
For z:=1 to i-1 do
begin
sumkst_p:=0;
For k:=1 to i-1 do
If tabl[z].nomer=tabl[k].nomer then
begin
sumkst_p:=sumkst_p+tabl[k].kst_p;
tabl[k].nomer:=0;
end;
Write(sumkst_p,#9);
end;

Выводит простовсе числа подрят, не сумируя.

Сообщение отредактировано: Alex7 -


Прикрепленные файлы
Прикрепленный файл  myfile.rar ( 266 байт ) Кол-во скачиваний: 244
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Пионер
**

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

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


Ясно. norespect.gif
Вот, вобщем после пару часиков) я таки прогу доделал, если кому интирессно, то:
Цитата
Я не флужу!

program tablizja(lab9_10);
{Uses CRT;}
Type stri4ka= record
nazva: string[20];
misze: string[20];
nomer: byte;
kst_p: byte;
vidp : string[50];
end;
Var tabl: array[1..25] of stri4ka;
sumkst_p,k,i,z: integer;
f1name,f2name: string[50];
rad: string;
f1: text;
f2: file of stri4ka;
Begin
{ Clrscr;}
for z:=1 to 25 do
writeln;
for z:=1 to 80 do
Write(#205);

Repeat
z:=0;
Writeln('‚ўҐ¤вм i¬''п д ©«г'); readln(f1name);
assign(f1,f1name);
{$I-}
reset(f1);
{$I+}
if ioresult<>0 then
begin
writeln('Џ®¬Ё«Є®ўҐ ўўҐ¤Ґ­­п! ” ©« ­Ґ §­ ©¤Ґ­®.');
Inc(z);
end;
Until z=0;
f2name:= Copy(f1name,1,pos('.',f1name))+'dat';
assign(f2,f2name); rewrite(f2);

for z:=1 to 80 do
Write(#250);

Writeln('’ Ўiа',#9,#9,'ЊiбжҐ §­-­­п',#9,'ь иЄ®«Ё'#9,#9,'Љ-бвм Їгв.',#9,'‚i¤Ї®ўi¤ «м­Ё©');
writeln;
i:=1;
Repeat
If i=16 then
begin
writeln(#9,' Ќ вЁб­iвм ENTER ¤«п Їа®¤®ў¦Ґ­­п ўЁў®¤г в Ў«Ёжi ­ ҐЄа ­.');
writeln(#9,#9,#9,#9,'“ў Ј !');
write(' ЏаЁ Їа®¤®ў¦Ґ­­i i­д®а¬ ©iп, й® ­ Ї®з вЄг в Ў«Ёжi, Ўг¤Ґ §вҐав зҐаҐ§ бЄа®««i­Ј');
readln;
end;
Readln(f1,rad); writeln(rad);
tabl[i].nazva:= Copy(rad,1,pos(#9,rad)-1); delete(rad,1,pos(#9,rad)+1);
tabl[i].misze:= Copy(rad,1,pos(#9,rad)-1); delete(rad,1,pos(#9,rad)+1);
Val(Copy(rad,1,pos(#9,rad)-1),tabl[i].nomer,z); delete(rad,1,pos(#9,rad)+1);
Val(Copy(rad,1,pos(#9,rad)-1),tabl[i].kst_p,z); delete(rad,1,pos(#9,rad)+1);
tabl[i].vidp:= Copy(rad,1,length(rad)); delete(rad,1,length(rad));
Write(f2,tabl[i]);
Inc(i);
Until seekeof(f1);
close(f1);

for z:=1 to 80 do
Write(#250);

Writeln(' Љi«мЄiбвм Їгвiў®Є, пЄг ®ваЁ¬ « Є®¦­ иЄ®« :');
Write('˜Є®« ',#9);
For z:=1 to i-1 do
If z=1 then
Write('ь',tabl[z].nomer,#9) else
begin
sumkst_p:=0;
For k:=1 to z-1 do
If tabl[z].nomer=tabl[k].nomer then Inc(sumkst_p);
If sumkst_p=0 then Write('ь',tabl[z].nomer,#9);
end;
writeln;
Write('Љ-бвм',#9);
For z:=1 to i-1 do
begin
sumkst_p:=0;
For k:=1 to i-1 do
If (tabl[z].nomer=tabl[k].nomer)and(tabl[z].nomer<>0) then
begin
sumkst_p:=sumkst_p+tabl[k].kst_p;
if z<>k then tabl[k].nomer:=0;
end;
If sumkst_p<>0 then Write(sumkst_p,#9);
end;
Writeln;

for z:=1 to 80 do
Write(#250);

close(f2);
Writeln('„ ­­i § ­ҐбҐ­i г д ©« ''',f2name,'''');

for z:=1 to 80 do
Write(#205);

Readln;
End.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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