Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2008, 12:23   #1
ShnapS
Пользователь
 
Регистрация: 15.05.2008
Сообщений: 44
По умолчанию Помогите дописать

Сформировать массив из 10 записей следуйщей структуры:
1. Строка из 50 случайных символов.
2. Два вещественных поля X,Y (заполнить случаными числами).
Рассортировать массив в порядке убывания поля Х. Для каждого компоненты: если количество латинских символов в строке превышает количество русских символов, удвоить значение поля Y. Вывести исходный и преобразованый массивы.

Код:
program zad6;
uses crt;
const n=10;
type
 MS=record
 stroka:string[50];
 X:real;
 Y:real;
end;

 var
 A:array[1..n] of MS;
 B:array[1..n] of MS;
 f:text;
 i,j:integer;
 r:real;
 kil_lat,kil_rus:integer;

begin
clrscr;
assign(f,'C:\zapisi.txt');
reset(f);
writeln ('Массив до:');

for i:=1 to n do begin
with A[i] do
readln(f,stroka,x,y);
writeln('',A[i].stroka,' ',A[i].x:2:2,' ',A[i].y:2:2);
end;

writeln;
for i:=1 to 9 do
for j:=i+1 to n do
if A[i].x<=A[j].x then begin
r:=A[i].x;
A[i].x:=A[j].x;
A[j].x:=r;

end;
{kil_lat:=0;
kil_rus:=0;

for j:=1 to n do

with A[j] do begin

for i:=1 to 50 do begin

if stroka>='a' and stroka<='z' then kil_lat:=kil_lat+1

else

if stroka>='а' and stroka<='я' then kil_rus:=kil_rus+1;

end;
writeln('Количество латинских букв=',kil_lat);
writeln('Количество русских букв=',kil_rus);

if kil_lat>kil_rus then y:=y*2;

end;}
writeln;
writeln('Массив после:');
writeln;
for i:=1 to n do writeln(A[i].stroka,' ',A[i].x:2:2,' ',A[i].y:2:2);
close(f);
end.
Немогу сообразить как правильно подщитать количество букв в строках и рассортировать ВЕСЬ массив по полю Х.
Помогите исправить ошибки и подсказать что можно зделать.
ShnapS вне форума Ответить с цитированием
Старый 28.05.2008, 12:54   #2
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Ну сортировка у тебя написана, за исключением того, что нам надо не значения x переставлять, а весь элемент
Код:
var r: MS;

for i:=1 to 9 do  
  for j:=i+1 to n do  
    if A[i].x<=A[j].x then 
      begin  
      r:=A[i];   
      A[i] := A[j];   
      A[j] := r;
      end;
А про буквы
Код:
for j := 1 to n do
  begin
  kil_lat:=0;  
  kil_rus:=0;    
 
  with A[j] do 
    begin  
    for i:=1 to 50 do 
      begin  
      if stroka[i]>='a' and stroka[i]<='z' then kil_lat:=kil_lat+1  
      else  
        if stroka[i]>='а' and stroka[i]<='я' then kil_rus:=kil_rus+1;  
      end;
    if kil_lat>kil_rus then y:=y*2;
    end;
  end;
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 28.05.2008, 13:13   #3
ShnapS
Пользователь
 
Регистрация: 15.05.2008
Сообщений: 44
По умолчанию

Тебе цены нету, Спасибо.
Возникает у меня вопрос, почему я не могу зделать с буквами, так как у меня пишет вот здесь ошибку:

Код:
 if stroka[i]>='a' and stroka[i]<='z' then kil_lat:=kil_lat+1     
      else     
 if stroka[i]>='а' and stroka[i]<='я' then kil_rus:=kil_rus+1;
Именно вот здесь stroka[i]ТУТ<='z' и stroka[i]ТУТ<='я' говорит оно так:
Error 41: Operand types do not match operator.
Не подскажите в чём может быть дело.
ShnapS вне форума Ответить с цитированием
Старый 28.05.2008, 17:01   #4
nikleb
Форумчанин
 
Регистрация: 04.04.2007
Сообщений: 131
По умолчанию

Скобки поставь.

if (stroka[i]>='a') and (stroka[i]<='z') then kil_lat:=kil_lat+1
else
if (stroka[i]>='а') and (stroka[i]<='я') then kil_rus:=kil_rus+1;
nikleb вне форума Ответить с цитированием
Старый 28.05.2008, 21:08   #5
ShnapS
Пользователь
 
Регистрация: 15.05.2008
Сообщений: 44
По умолчанию

Всё огромное спасибо, задачу решил так:

Код:
program zad6;
uses crt;
const n=10;
type
MS=record
stroka:string[50];
X:real;
Y:real;
end;
var
A:array[1..n] of MS;
f:text;
i,j:integer;
kil_lat,kil_rus:integer;
r:MS;
begin
clrscr;
assign(f,'C:\zapisi.txt');
reset(f);
writeln ('Массив до:');
for i:=1 to n do begin
readln(f,A[i].stroka,A[i].x,A[i].y);
writeln('',A[i].stroka,' ',A[i].x:2:2,' ',A[i].y:2:2);
end;
writeln;
for i:=1 to 9 do
for j:=i+1 to n do
if A[i].x<=A[j].x then
begin
r:=A[i];
A[i]:=A[j];
A[j]:=r;
end;
for j:=1 to n do begin
kil_lat:=0;
kil_rus:=0;
with A[j] do begin
for i:=1 to 50 do begin
if stroka[i]<='z' then kil_lat:=kil_lat+1
else
if stroka[i]<='я' then kil_rus:=kil_rus+1;
end;
if kil_lat>kil_rus then y:=y*2;
end;
end;
writeln;
writeln('Массив после:');
writeln;
for i:=1 to n do writeln(A[i].stroka,' ',A[i].x:2:2,' ',A[i].y:2:2);
close(f);
end.
PS: Куда там клацать что б Вам репутацию поднять ?
ShnapS вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите дописать программу starry_night Помощь студентам 0 04.06.2008 19:24
Помогите дописать программу. ShnapS Паскаль, Turbo Pascal, PascalABC.NET 5 17.05.2008 19:50
Помогите дописать пояснение RECREATOR Помощь студентам 4 10.12.2007 09:07
Помогите дописать Klyan Общие вопросы C/C++ 8 22.06.2007 01:55
Помогите дописать компонент Mickle Компоненты Delphi 0 28.05.2007 19:41