1 Востаннє редагувалося reywwe95 (07.10.2013 19:04:51)

Тема: Перша літера в рядку

program alfa;
USES CRT;
type
E=record
kol,ves:real;
f:string;
  end;
var
r:array [1..30] of E;
a,b:real;
i,n,x,z,j:integer;
c:char;
Begin
writeln('Введите количество записей');
readln(n);
  for i:=1 to n do
  begin
  writeln('Введите Фамилию абонента');
readln(r[i].f);
writeln('Введите  кол  вещей');
readln(r[i].kol);
writeln('Введите вес  вещей');
readln(r[i].ves);
     end;
     for i:=1 to n do
writeln('#',i,'|',r[i].f,'|',r[i].kol,' |',r[i].ves);
writeln('Введите количество   для  сорт');
readln(a);
writeln('Введите  вес  вещей для сорт');
readln(b);
  for i:=1 to n do
if(a<r[i].ves)and(b<r[i].kol) then
begin
writeln('Фамилия пасажира');
writeln(r[i].f);

end;
    writeln('ВВедите  букву');
      readln(c);
      writeln('Фамилия  на  букву ',c);
for i:=1 to n do
 begin
   if r[i].f[1]=c then
   
 writeln(r[i].f);
  end;
End.

    Дано одновимірний масив з N елементів (N задається користувачем), що містить інформація про багаж пасажирів потягу. Багаж пасажира характеризується: прізвищем власника, кількістю речей і загальною вагою речей.
      1. Вивести список пасажирів, що мають більше N речей, загальна вага яких перевершує M кілограм.
      2. Вивести список пасажирів фамілія   яких   починається  з  заданої  букви 
може  кому  знадобиться

2

Re: Перша літера в рядку

Так, AnsiCompareStr та AnsiCompareText

3

Re: Перша літера в рядку

мені  потрібно   ввести   одну   букву і   з  структури   вивести всіх   людей   наприклад  на   А не   підскажете  алгоритм ??

4 Востаннє редагувалося Chemist-i (04.10.2013 12:21:16)

Re: Перша літера в рядку

for .... do
  if AnsiCompareText( passenger[1], 'A' ) = 0 then
    ...//do something

де, passenger це String Вашого і-того пасажира, 1 - Номер першої букви;

Подякували: Torbins1

5

Re: Перша літера в рядку

спасибо

6

Re: Перша літера в рядку

reywwe95
Соррі, щось я набидлокодив, заглянув у мануал, та виправив попереднє повідомлення

7

Re: Перша літера в рядку

AnsiCompareText   відмовляється  працювати   ошибика  неизвестный идентификатор  AnsiCompareText

8

Re: Перша літера в рядку

Пане, я перепрошую, ви взагалі колись чули про бібліотеки і середовища розробки? Якщо так - то, може, ви в курсі, що між ними є певна різниця? То, може, не примушуватимете нас відгадувати, яке саме середовище з якими бібліотеками встановлене у вас - і не змушуватимете людей гуглити за вас, щоб дізнатися, де саме є потрібна вам функція?
Ну і зовсім не розумію, що вам заважає порівнювати перші літери напряму:

if FirstPassngerSurname[1]=SecondPassangerSurname[1] then ...

9

Re: Перша літера в рядку

koala написав:

Ну і зовсім не розумію, що вам заважає порівнювати перші літери напряму:

if FirstPassngerSurname[1]=SecondPassangerSurname[1] then ...

Регістрочуттєвість даної операції з виповзаючими граблями.

10

Re: Перша літера в рядку

AnsiCompareText  це  операція         наскільки я   зрозумів  для  делфі

11

Re: Перша літера в рядку

Bartash написав:
koala написав:

Ну і зовсім не розумію, що вам заважає порівнювати перші літери напряму:

if FirstPassngerSurname[1]=SecondPassangerSurname[1] then ...

Регістрочуттєвість даної операції з виповзаючими граблями.

Ви колись бачили людей, в яких прізвище починається з маленької літери? Познайомите?

12

Re: Перша літера в рядку

порівнювати перші літери напряму як це   зробити   не   розумію     допоможіть   будь  ласка 

program alfa;
USES CRT;
type
E=record
kol,ves:real;
f:string;
end;
var
r:array [1..30] of E;
a,b:real;
i,n,x,z,j:integer;
f:boolean;
Begin
writeln('Ââåäèòå êîëè÷åñòâî çàïèñåé');
readln(n);
for i:=1 to n do
begin
writeln('Ââåäèòå Ôàìèëèþ àáîíåíòà');
readln(r[i].f);
writeln('Ââåäèòå  êîë  âåùåé');
f:=true;
while(f)do
begin
readln(r[i].kol);
if(r[i].kol>0) and (r[i].kol<1000) then f:=false
else writeln('Íåêîðåòíûå äàííûå');
end;
writeln('Ââåäèòå âåñ  âåùåé');
readln(r[i].ves);
end;
for i:=1 to n do
writeln('#',i,'|',r[i].f,'|',r[i].kol,' |',r[i].ves);
writeln('Ââåäèòå êîëè÷åñòâî   äëÿ  ñîðò');
readln(a);
writeln('Ââåäèòå  âåñ  âåùåé äëÿ ñîðò');
readln(b);

for i:=1 to n do
if(a<r[i].ves)and(b<r[i].kol) then
begin
writeln('Ôàìèëèÿ ïàñàæèðà');
writeln(r[i].f);

end;
for i:=1 to n do

 writeln(r[i].f);

End.

13

Re: Перша літера в рядку

Прихований текст
reywwe95 написав:

порівнювати перші літери напряму як це   зробити   не   розумію     допоможіть   будь  ласка 

program alfa;
USES CRT;
type
E=record
kol,ves:real;
f:string;
end;
var
r:array [1..30] of E;
a,b:real;
i,n,x,z,j:integer;
f:boolean;
Begin
writeln('Ââåäèòå êîëè÷åñòâî çàïèñåé');
readln(n);
for i:=1 to n do
begin
writeln('Ââåäèòå Ôàìèëèþ àáîíåíòà');
readln(r[i].f);
writeln('Ââåäèòå  êîë  âåùåé');
f:=true;
while(f)do
begin
readln(r[i].kol);
if(r[i].kol>0) and (r[i].kol<1000) then f:=false
else writeln('Íåêîðåòíûå äàííûå');
end;
writeln('Ââåäèòå âåñ  âåùåé');
readln(r[i].ves);
end;
for i:=1 to n do
writeln('#',i,'|',r[i].f,'|',r[i].kol,' |',r[i].ves);
writeln('Ââåäèòå êîëè÷åñòâî   äëÿ  ñîðò');
readln(a);
writeln('Ââåäèòå  âåñ  âåùåé äëÿ ñîðò');
readln(b);

for i:=1 to n do
if(a<r[i].ves)and(b<r[i].kol) then
begin
writeln('Ôàìèëèÿ ïàñàæèðà');
writeln(r[i].f);

end;
for i:=1 to n do

 writeln(r[i].f);

End.

Цей код, н.м.д., є прямим виявом неповаги до читача.

Подякували: reywwe951

14

Re: Перша літера в рядку

ну   вибачайте    в  мене   запис  в  якому  зберігаеться   фамілія 

 r[i].f 

r  я  не   розумію  як  тут    працювати  с  першим  символом   строки  поясніть    ??

15

Re: Перша літера в рядку

reywwe95 написав:

ну   вибачайте    в  мене   запис  в  якому  зберігаеться   фамілія 

 r[i].f 

r  я  не   розумію  як  тут    працювати  с  першим  символом   строки  поясніть    ??

r[i].f[1] - це перший символ строки
Подякували: koala1

16

Re: Перша літера в рядку

koala написав:
Bartash написав:
koala написав:

Ну і зовсім не розумію, що вам заважає порівнювати перші літери напряму:

if FirstPassngerSurname[1]=SecondPassangerSurname[1] then ...

Регістрочуттєвість даної операції з виповзаючими граблями.

Ви колись бачили людей, в яких прізвище починається з маленької літери? Познайомите?

Я достатньо бачив баз даних, у яких ПІБ містили помилки і створювали такі граблі. Звісно, для бурситетської лаби підійде і пряме порівняння, але ж далі це відкладеться у моторній пам'яті і набереться у коді якогось робочого проекту - от там і вилізе. ;)

17

Re: Перша літера в рядку

поясни  як   зробиты    щоб  лаба     не  була бурситетська ??

18

Re: Перша літера в рядку

reywwe95 написав:

поясни  як   зробиты    щоб  лаба     не  була бурситетська ??

поставити печатку "Made in China"

19 Востаннє редагувалося koala (13.11.2013 16:54:51)

Re: Перша літера в рядку

reywwe95 написав:

поясни  як   зробиты    щоб  лаба     не  була бурситетська ??

Мати повагу до майбутніх читачів. Є така порада: пишіть код так, ніби підтримувати його буде психічно неврівноважена особа, що знає вашу домашню адресу :) Зокрема:
- давати зрозумілі і осмислені назви ідентифікаторам;
- не допускати граматичних помилок;
- розставляти відступи;
- ставити пробіли навколо операторів (=, +, -, : і т.д.);
- вирівнювати схожі рядки;
- витримувати стиль.
Почну за вас:
[code=Pascal]
program LabaPassengers;{зрозуміла назва програми}
{USES CRT; - не потрібно, тим більше КАПСОМ}
type Passenger = record {назви типів - з великої літери; можна й інакше,
але стиль треба витримувати}
{те, що далі, стосується тільки цього запису - тому до end ставимо відступи}
  belongingNumber, totalBelongingWeight : real;
  surname                               : string; {назви змінних - з маленької,
кожне наступне слово - з великої; в принципі, можна було б назвати їх
і KilkistRechey, ZahalnaVahaRechey та Prizvysche чи ще якось - але стиль
треба витримувати! Відступи після surname підкреслюють, що його тип
відрізняється від типу попереднього рядка}
end;{відступ закінчився}
[/code]

В новачків часто виникає ілюзія, що довгі назви важко набирати; тут слід зрозуміти, що абсолютну більшість роботи програміст робить в голові, а час на набір коду - це дрібниця порівняно із часом на читання коду. Необхідність десять разів переглядати весь код назад, щоб згадати, що x - це перша літера, а y - висота вокзалу, повністю з'їдають економію від написання три рази pershaLitera і чотири vysotaVokzalu.
В ідеалі код має бути таким, щоб сам код читався, як коментар до коду.

Подякували: Torbins2

20

Re: Перша літера в рядку

koala написав:
reywwe95 написав:

поясни  як   зробиты    щоб  лаба     не  була бурситетська ??

Мати повагу до майбутніх читачів. Є така порада: пишіть код так, ніби підтримувати його буде психічно неврівноважена особа, що знає вашу домашню адресу :) Зокрема:
- давати зрозумілі і осмислені назви ідентифікаторам;
- не допускати граматичних помилок;
- розставляти відступи;
- ставити пробіли навколо операторів (=, +, -, : і т.д.);
- вирівнювати схожі рядки;
- витримувати стиль.
Почну за вас:

program LabaPassengers;{зрозуміла назва програми}
{USES CRT; - не потрібно, тим більше КАПСОМ}
type Passenger = record {назви типів - з великої літери; можна й інакше, але стиль треба витримувати}
{те, що далі, стосується тільки цього запису - тому до end ставимо відступи}
  belongingNumber, totalBelongingWeight : real; 
  surname                                          : string; {назви змінних - з маленької, кожне наступне слово - з великої;
в принципі, можна було б назвати їх і KilkistRechey, ZahalnaVahaRechey та Prizvysche чи ще якось - але стиль треба витримувати! Відступи після surname підкреслюють, що його тип відрізняється від типу попереднього рядка}
end;{відступ закінчився}

В новачків часто виникає ілюзія, що довгі назви важко набирати; тут слід зрозуміти, що абсолютну більшість роботи програміст робить в голові, а час на набір коду - це дрібниця порівняно із часом на читання коду. Необхідність десять разів переглядати весь код назад, щоб згадати, що x - це перша літера, а y - висота вокзалу, повністю з'їдають економію від написання три рази pershaLitera і чотири vysotaVokzalu.
В ідеалі код має бути таким, щоб сам код читався, як коментар до коду.

І трохи про надмірне захоплення вказаними принципами гарного коду:

1. VeryLongNamesThatDescribesObjectOrEntityQuiteALot - змістовно, але не здивуйтеся, коли до вас постукають увечері :).
2. "char bukva" і т.п. - за транслітні речі взагалі молотком по пальцях.
3. По можливості писати код простіше. Звісно, за

for(int i=0; i<size; arr[i]=0, i++);

навряд чи битимуть, а от

if  ( (_gen_statP==tm_Manual)  ||  (_gen_statP==tm_OK)  && (_cur_statP!=tm_Manual)  || (_gen_statP==tm_ValidTM) && (_cur_statP!=tm_Manual)  &&  (_cur_statP!=tm_OK) ||      (_gen_statP==tm_Rejected)    && (_cur_statP!=tm_Manual)  &&  (_cur_statP!=tm_OK) && (_cur_statP!=tm_ValidTM) || (_gen_statP==tm_Bad)         && (_cur_statP!=tm_Manual)  &&  (_cur_statP!=tm_OK) && (_cur_statP!=tm_ValidTM) && (_cur_statP!=tm_Rejected) ||
 (_gen_statP==tm_Statistic)   && (_cur_statP!=tm_Manual)  &&  (_cur_statP!=tm_OK) && (_cur_statP!=tm_ValidTM) && (_cur_statP!=tm_Rejected)  && (_cur_statP!=tm_Bad) )
{ _cur_statP = _gen_statP; }

у карму буде шкідливо додавати. :)
4. Якщо працюватимете у конторі, де корпоративний стиль передбачає фараонів та рабство єгипетський стиль - не варто провадити свій код якось по-європейськи. :)