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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2013, 11:13   #1
Victor1995
Пользователь
 
Регистрация: 19.12.2013
Сообщений: 12
По умолчанию Таблица

на основе таблицы, включающей название планеты, расстояние от Солнца, количество спутников, период обращения, средний радиус, массу, вывести на печать характеристики планет, расположенных в порядке не возрастания количества спутников(массы, радиуса обращения).
Вот что у меня получилось:

Код:
program laba7;
type Planets=record
             nazvanie:array[1..10]of string;
             S, T, srR, M: integer;
             spytnik: integer;
             end;
 planeta= array [1..100] of Planets;
   var  P:planeta; k:Planets;
   I,j,N: integer;

begin
   Writeln('количество планет');
   readln(N);
   for I:=1 to N do
   begin
      j:=i;
      writeln ('введите сведения о', I , '-ой планете');
      writeln ('введите название планеты: ':7);
      readln (P[I].nazvanie[j]);
      writeln ('введите расстояние от солнца, млн. км: ':8);
      readln (P[I].S);
      writeln (' введите кол-во спутников: ':8);
      readln(P[I].spytnik);
      writeln ('введите период обращения, земных суток/лет: ':8);
      readln(P[I].T);
      writeln ('введите средний радиус, км: ':8);
      readln (P[I].srR);
      writeln ('введите массу планеты, 10^24: ':8);
      readln (P[I].M);
   end;
writeln('   ');
writeln('|             |                      |                    |           |             |          |');
writeln('|   Планета   |   расст. от Солнца   |количество спутников|   Период  |  ср.радиус  |  масса   |');
   for i:=1 to N do
      begin
        j:=i;
        write(P[i].nazvanie[j]:7);
        write(P[i].S:14,' ');
        write(P[i].spytnik:24,' ');
        write(P[i].T:17,' ');
        write(P[i].srR:10,' ');
        write(P[i].M:13,' ');
        writeln;
     end;
   for i:=1 to N do
   for j:=1 to N do
   begin
   if P[i].spytnik<P[i+1].spytnik then
                                begin
                                  k:=P[i];
                                  P[i]:=P[i+1];
                                  P[i+1]:=k;
                                end;
   end;
   writeln('характеристики');
   writeln('|       |                     |');
   writeln('|Планета| Количество спутников|') ;
   for i:=1 to N do

   begin
      j:=i;
     write(P[i].nazvanie[j]:7,' ');
     write(P[i].spytnik:8,' ');
     writeln;
     end;

end.
И вот какой результат выдаёт:
Код:
|             |                      |                    |           |             |          |
|   Планета   |   расст. от Солнца   |количество спутников|   Период  |  ср.радиус  |  масса   |
  Земля          4785                        1              6584        568           479 
   Марс           548                        3               769        467            69 
   Уран           579                        5              6708      67855          6799 
 Юпитер        589659                        3            568095        589        586954 
характеристики
|       |                     |
|Планета| Количество спутников|
               3 
               5 
               3 
               1
Почему сортировка не работает правильно, и почему нет названий планет. Подскажите, пожалуйста
Victor1995 вне форума Ответить с цитированием
Старый 28.12.2013, 06:20   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Тебе уже советовали вот тут. Но ты продолжаешь писать какую-то муть, типа
Код:
type Planets=record
             nazvanie:array[1..10]of string;
// и т.д.
- то есть у одной планеты - 10 названий.
Я сделал только изза того, что сердце кровью обливается от таких данных планет. Где ты их взял ?
Вот так работает:
Код:
program SolnS;
const NPL=8;
type tPlanet=record
 name:string[16]; // название
 a:Real; // расст. от Солнца, а.е.
 kolSput:Byte; // колич. спутников
 p,r,m:Real; // период (год), ср.радиус (в рад. Земли), масса (в массах Земли)
end;
 arPlanets=array[1..NPL]of tPlanet;  // в Солнечной системе 8 планет, Плутон исключен

procedure Vvod(var plan:arPlanets);
var i:Byte;
begin
 for i:=1 to NPL do
  begin
   Writeln('Nazw');
   Readln(plan[i].name);
   Writeln('rasst , a.e.');
   Readln(plan[i].a);
   Writeln('kol sput');
   Readln(plan[i].kolsput);
   Writeln('period, let');
   Readln(plan[i].p);
   Writeln('sr Rad, rad Zem');
   Readln(plan[i].r);
   Writeln('massa, mas Zem');
   Readln(plan[i].m); 
  end;
end;
    //  сама программа :
var PlanSS:arPlanets;
   tpl:tPlanet;
   i,j:Byte;
begin
 Vvod(PlanSS);   // ввод данных
 for i:=1 to NPL-1 do    // сортировка 
  for j:=1 to NPL-1 do
   if PlanSS[j].kolsput>PlanSS[j+1].kolsput then
    begin
     tpl:=PlanSS[j+1];
     PlanSS[j+1]:=PlanSS[j];
     PlanSS[j]:=tpl;
    end;
 writeln('| planeta    | rasst , a.e.| kol sput | period,let | sr rad | massa |');   
 for i:=1 to NPL do
  begin
   Write(PlanSS[i].name:11);
   Write(PlanSS[i].a:13:2);
   Write(PlanSS[i].kolsput:10);
   Write(PlanSS[i].p:12:2);
   Write(PlanSS[i].r:10:2);
   Writeln(PlanSS[i].m:9:2);  
  end;   
end.
Вот такой результат:
Изображения
Тип файла: jpg plaaaa.jpg (30.8 Кб, 80 просмотров)
type_Oleg вне форума Ответить с цитированием
Старый 28.12.2013, 09:56   #3
Victor1995
Пользователь
 
Регистрация: 19.12.2013
Сообщений: 12
По умолчанию

Спасибо. Я просто делал так как меня учил препод.
Victor1995 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Таблица zmicer12 Компоненты Delphi 2 01.06.2012 11:44
Таблица saiwin Microsoft Office Excel 2 15.03.2012 15:13
таблица тася Microsoft Office Excel 17 25.01.2009 00:29
таблица artemavd Общие вопросы Delphi 3 23.07.2008 13:56