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

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

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

 
 Ответить  Открыть новую тему 
> Работа с БД, прошу помощи
сообщение
Сообщение #1


ыыыыщщщщщщыыыы
**

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

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


Сведения о ученике состоят из имени, фамилии, названии класса (год обучениия, буква). Дан файл f содержащий данные об учениках этой школы. Пусть в каждой строке через пробел даны сведения о каждом ученике. Выяснить в каких классах больше 35 человек.
то что сделано:
uses crt;
procedure WrRec(s:string; var f,i,k:string; var b:char);
var j,t,code:integer;
s1:string;
begin
for j:=1 to length(s) do
begin
if s[j]=' ' then begin t:=j+1; break; end
else f[j]:=s[j];
end;
for j:=t to length(s) do
begin
if s[j]=' ' then begin t:=j+1; break; end
else i[j-t+1]:=s[j];
end;
for j:=t to length(s) do
begin
if s[j]=' ' then begin t:=j+1; break; end
else k[j-t+1]:=s[j]
end;
b:=s[t];
end;
type pupil=record
fam:string;
ima:string;
klas:string;
bukva:char;
end;
var a:array[1..100] of pupil;
f:text;
i,j:integer;
s:string;
begin
clrscr;
i:=0;
assign(f,'d:\1234.dat');
reset(f);
while not eof(f) do
begin
writeln;
inc(i);
readln(f,s);
writeln(s);
WrRec(s,a[i].fam,a[i].ima,a[i].klas,a[i].bukva);

end;

close(f);
writeln(length(a[1].fam));
readkey;
end.


капитально не врубаюсь почему функция length неработает
writeln(length(a[1].fam));


Добавлено через 1 мин.
в принципе надо разобраться почему не раскладывает по массиву данные, дальше с подсчетом уж как-нить разберусь


--------------------
Никогда не задавайте вопрос, если не уверены, что хотите получить ответ...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


для начала убедись что твоя процедура разбиения строки на отдельные куски работает верно, выглядит она странновато если честно smile.gif Можно сделать намного короче, буквально в несколько строк.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


ыыыыщщщщщщыыыы
**

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

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


2 klem4 ну как умею, я и подозреваю что с ней что-то не то можешь что-то другое предложить, буду рад!


--------------------
Никогда не задавайте вопрос, если не уверены, что хотите получить ответ...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Feagor, а все данные гарантированно разделены только одним пробелом? Тогда вот тут есть функция get_str, которая выделяет токен по его номеру, при условии, что ВСЕ токены в строке разделены одним символом: Заполнение полей записи из файла
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


или то-же, но рекурсивно:
function get_part(s: String; part: Byte): String;
var
p: Byte;
begin
p := pos(' ', s);
p := byte(p = 0) * 255 + p;

if part = 1 then
get_part := copy(s, 1, p - 1)
else
get_part := get_part(copy(s, p + 1, 255), part - 1);
end;

var
s: String = 'Ivanov Petr Petrovich 10 A';

var
i: Byte;

begin
for i := 1 to 5 do writeln(get_part(s, i));
end.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


ыыыыщщщщщщыыыы
**

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

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


спасибо volvo классный метод, не то, что мое извращение lol.gif +1

Добавлено через 1 мин.
обоим +1, спасибо, помогли))) щас доделаю, рабочий исходник выложу...

Добавлено через 3 мин.
извиняюсь, за оффтоп, туплю, но где тут +1 сделать smile.gif у нас просто уже 3 час ночи


--------------------
Никогда не задавайте вопрос, если не уверены, что хотите получить ответ...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


smile.gif Чтобы самому плюсы/минусы ставить, надо иметь > 25 мессаджей на форуме smile.gif Ну или можешь попросить кого-нить из модераторов в ПМ smile.gif volvo от тебя сейчас плюсану smile.gif


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Цитата
volvo от тебя сейчас плюсану
yes2.gif Взаимно...
 К началу страницы 
+ Ответить 

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

 





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