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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.01.2013, 15:35   #11
Niro
Форумчанин
 
Аватар для Niro
 
Регистрация: 23.09.2010
Сообщений: 682
По умолчанию

Цитата:
их же ещё нужно упорядочить по убыванию их удельного веса
конечно, т.е. сортируете вы записи (скажем так, переставляете целиком каждую запись), а параметром по которому производится сортировка служит удельный вес.
Например, у вас есть такой массив записей
Код:
a[1] - вещество (название1, проводимость1, уд_вес1)
a[2] - вещество (название2, проводимость2, уд_вес2)
a[3] - вещество (название3, проводимость3, уд_вес3)
a[4] - вещество (название4, проводимость4, уд_вес4)
и предположим уд_вес4 > уд_вес2, тогда вы переставляете местами целиком всю запись (т.к. - упорядочить их по убыванию удельного веса), т.е. новый массив будет выглядеть:
Код:
a[1] - вещество (название1, проводимость1, уд_вес1)
a[4] - вещество (название4, проводимость4, уд_вес4)
a[3] - вещество (название3, проводимость3, уд_вес3)
a[2] - вещество (название2, проводимость2, уд_вес2)
т.е. общая идея такая:
Код:
- считали запись
- если вещество является проводником - сортируем (по параметру  -  удельный вес)
Проще всего признать свою ошибку.
Гораздо труднее еЁ осознать и исправить.

Последний раз редактировалось Niro; 09.01.2013 в 15:41.
Niro вне форума Ответить с цитированием
Старый 09.01.2013, 17:58   #12
Jamguranga
Пользователь
 
Регистрация: 26.12.2012
Сообщений: 48
По умолчанию

как - то так всунул
Код:
uses crt;
type info=record;
     name,providnist:string;
     vaga:real;
          end;
var a: array[1..100] of info;
    f:text;
    i,n,v: integer;

Begin
 Clrscr;
 assign(f, 'd:\STUDENT\jamgur\lab7lobo\f.txt');
 reset(f);
  i:=1;
while not eof(f) do
 begin
  with a[i] do
    begin
      inc(n);
      read(f,name);
      readln(f,vaga);
      readln(f,providnist);
    end;
   inc(i);
  end;

     writeln('Vvedu variant zavdannia(1,2,3):');
     read(v);
     
if v=1 then
        BEGIN
 readln;
 write('Result:');
    for i:= 1 to n do
     with a[i] do
          if (providnist='n') then
           begin
            writeln;
            write('Nazva - ',name,' Vaga= ', vaga);
            writeln;
           end;
        END

 else if v=3 then

   begin
     readln;
 write('Result:');
    for i:= 1 to n do
     with a[i] do
          if providnist='i' then
           begin
            writeln;
            write('Nazva elementu - ',name,' Putoma vaga= ', vaga);
            writeln;
           end;
        END

  else if v=2 then


  close(f);
  readln
 end.
а как вывести потом вес?

/// что-то у меня голова вообще не варит сегодня

Последний раз редактировалось Jamguranga; 09.01.2013 в 20:08.
Jamguranga вне форума Ответить с цитированием
Старый 09.01.2013, 21:22   #13
Jamguranga
Пользователь
 
Регистрация: 26.12.2012
Сообщений: 48
По умолчанию

Ребята, помогиииите ;-(
Короче, всё, вроде бы и работает... но пункт б... выводит какие-то непонятные повторы... хм... файл с информацией я заполнял так:

Ba
0.3
n
_______ - это строка пропущеная(просто ентер, для лучшей видимости элементов)
где первое - название елем, второе - вес, третье - н - напивпровиднык(на русский это полупроводник)...
Помогите ^^
Код:
uses crt;
type info=record;
     name,providnist:string;
     vaga:real;

          end;
var a: array[1..100] of info;
    va: array[1..100] of integer;
    f:text;   tmp:real;
    i,n,v,j: integer;

Begin
 Clrscr;
 assign(f, 'd:\STUDENT\jamgur\lab7lobo\f.txt');
 reset(f);
  i:=1;
while not eof(f) do
 begin
  with a[i] do
    begin
      inc(n);
      read(f,name);
      readln(f,vaga);
      readln(f,providnist);
      readln(f);
    end;
   inc(i);
  end;

     writeln('Vvedu variant zavdannia(1,2,3):');
     read(v);

if v=1 then
        BEGIN
 readln;
 write('Result:');
    for i:= 1 to n do
     with a[i] do
          if (providnist='n') then
           begin
            writeln;
            write('Nazva - ',name,' Vaga= ', vaga);
            writeln;
           end;
        END

   else if v=2 then
   begin

    for i:=1 to n do
     with a[i] do
       if providnist='p' then
         begin
   for i:=1 to n-1 do
   for j:=i to n do
    begin
     if i=j then inc(j);
     if a[i].vaga<a[j].vaga then begin
       tmp := a[i].vaga;
       a[i] := a[j];
       a[j].vaga := tmp
     end;
    end;
   
               for j:= 1 to n do
                writeln(a[j].name, ' ', a[j].vaga);
    end;
      end

 else if v=3 then

   begin
     readln;
 write('Result:');
    for i:= 1 to n do
     with a[i] do
          if providnist='i' then
           begin
            writeln;
            write('Nazva elementu - ',name,' Putoma vaga= ', vaga);
            writeln;
           end;
        END;


  close(f);
  readln
 end.
Jamguranga вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Процедуры с записями 777pro777 Помощь студентам 1 26.05.2012 07:48
Работа с записями. dima-intro Помощь студентам 5 30.12.2010 10:01
Работа с записями dima-intro Помощь студентам 1 26.12.2010 13:43
работа с записями Андрей.12 Помощь студентам 0 20.12.2009 19:17
Программа с записями Алексей Д. Помощь студентам 5 27.04.2008 20:25