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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2012, 20:32   #1
Lilen
Пользователь
 
Регистрация: 04.10.2012
Сообщений: 20
По умолчанию Динамические структуры

Упорядочьте элементы списка по убыванию, используя сортировку посредством выбора максимального элемента. Используйте список без заглавного элемента.
Lilen вне форума Ответить с цитированием
Старый 03.12.2012, 21:46   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Приготовьте мне пиццу, чтоб она была горячая и вкусная. Используйте грибы, сыр и ветчину.
Вадим Мошев вне форума Ответить с цитированием
Старый 04.12.2012, 02:52   #3
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Вадим, ты забыл про соус без искусственных добавок ))
Кароч, Лилен, давай наработки..
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 04.12.2012, 17:16   #4
Lilen
Пользователь
 
Регистрация: 04.10.2012
Сообщений: 20
По умолчанию Если бы они были..

Цитата:
Сообщение от TinMan Посмотреть сообщение
Вадим, ты забыл про соус без искусственных добавок ))
Кароч, Лилен, давай наработки..
Ребят, вообще никаких мыслей нет, понятия не имею от чего отталкиваться?
И саму суть задачи не понимаю.
Lilen вне форума Ответить с цитированием
Старый 04.12.2012, 20:08   #5
MihalNik
МегаМодератор
СуперМодератор
 
Регистрация: 27.11.2012
Сообщений: 5,669
По умолчанию

Это называется "линейная сортировка"
Благими намерениями устлана дорога на programmersforum.ru
MihalNik вне форума Ответить с цитированием
Старый 12.12.2012, 17:37   #6
Lilen
Пользователь
 
Регистрация: 04.10.2012
Сообщений: 20
По умолчанию

Задана квадратная матрица. Поменять местами строку с максимальным элементом на главной диагонали со строкой с заданным номером n.

С этим я справилась, но вот еще одно условие - решить задачу с использованием динамических массивов, указателей. как это сделать?
Код:
program borlpasc;
var a:array[1..30,1..30] of integer;
i,j,n,k,m,max,at:integer;
 begin
 writeln('vvedite razmernost matrizbI');
 readln(n);
 write('vvedite nomer stroki m=');
 readln(m);
 for i:=1 to n do
  for j:=1 to n do
    begin write('a[',i,j,']=');
      readln(a[i,j])
    end;
  writeln('vasha matriza');
   for i:=1 to n do
     begin
       for j:=1 to n do
     write(a[i,j]:4);
     writeln
     end;
max:=1;
  for i:=1 to n do
    if a[max,max]<a[i,i]
      then max:=i;
        for i:=1 to n do
          begin
            at:=a[m,i];
            a[m,i]:=a[max,i];
            a[max,i]:=at
          end;
writeln('poluchennaya matriza');
 for i:=1 to n do
   begin
     for j:=1 to n do
     write(a[i,j]:4);
     writeln;
   end;
readln;
end.

Последний раз редактировалось Stilet; 12.12.2012 в 18:30.
Lilen вне форума Ответить с цитированием
Старый 12.12.2012, 21:41   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Какой у Вас компилятор Паскаля?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.12.2012, 14:13   #8
Lilen
Пользователь
 
Регистрация: 04.10.2012
Сообщений: 20
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Какой у Вас компилятор Паскаля?
32 битный, в основном пользуюсь ABC, иногда турбо

вот попыталась написать, выдает ошибку, "попытка разыменовать ненулевой указатель", впервые сталкиваюсь с указателями, не могли бы подсказать, что сделала не правильно?

Код:
Код:
program borlpasc;
const n=10;
type mas=array[1..30000,1..30000] of integer;
var a:^mas; at:^integer;
i,j,k,max,m:integer;
 begin
 //writeln('vvedite razmernost matrizbI');
 //readln(n);
 write('vvedite nomer stroki m=');
 readln(k);

 NEW(a);
 for i:=1 to n do
  for j:=1 to n do
    begin write('a[',i,',',j,']=');
      readln(a^[i,j])
    end;
  writeln('vasha matriza');
   for i:=1 to n do
     begin
       for j:=1 to n do
     write(a^[i,j]:4);
     writeln
     end;
max:=1;
  for i:=1 to n do
    if a^[max,max]<a^[i,i]
      then max:=i;
        for i:=1 to n do
          begin
            at^:=a^[m,i];
            a^[m,i]:=a^[max,i];
            a^[max,i]:=at^
          end;
writeln('poluchennaya matriza');
 for i:=1 to n do
   begin
     for j:=1 to n do
     write(a^[i,j]:4);
     writeln;
   end;
readln;
end.


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 13.12.2012 в 15:00.
Lilen вне форума Ответить с цитированием
Старый 13.12.2012, 15:01   #9
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от Lilen Посмотреть сообщение
32 битный, в основном пользуюсь ABC, иногда турбо
н-да... Старичок Турбо попал в 32-битные.. повезло! ))

Лилен, вот тут:
Код:
type mas=array[1..30000,1..30000] of integer;
var a:^mas; at:^integer;
...
 NEW(a);
 for i:=1 to n do
  for j:=1 to n do
    begin write('a[',i,',',j,']=');
      readln(a^[i,j])
- ты заводишь переменную a, размер которой 30000*30000*2=1.8 Гигабайт. А ты уверена, что она тебе доступна? Вполне может и не оказаться такого количества памяти в наличии.. В таком случае память системой выделена НЕ БУДЕТ, и переменная a останется равной NIL, и любое обращение по этому адресу приведет к той самой ошибке, про которую ты пишешь. После попытки взять память надо обязательно проверять, не осталась ли переменная нулевой. И если да - сообщать о неудаче.

Я, если честно, не знаю, обладает ли ABC истинной 32-битностью. Совет: скачай FP, за него я могу поручиться.

А аппетиты на память все же умерь! ))
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 13.12.2012, 15:08   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Цитата:
Какой у Вас компилятор Паскаля?
32 битный, в основном пользуюсь ABC, иногда турбо
так... уже чуток ошибаетесь... Turbo Pascal - это DOS (16 битный код).
Pascal ABC - про этого уродца я не в курсе... Хотя в нём есть настоящие динамические массивы!


ваш код сейчас посмотрю.. для начала
mas=array[1..30000,1..30000] of integer;
не многовато ли?
30000*30000* 2(если речь о ТурбоПаскале) = 1800000000 байт
это примерно 1.7 Гб
Уверены, что DOS позволит Вам выделить кусок памяти такого размера?!


UPDATE
упс.. пока я тут копался, TinMan уже всё разрулил...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамические структуры данных, списковые структуры (надо разобраться что делает программа) _4Alex4_ Помощь студентам 1 14.11.2012 07:39
динамические структуры Saloma Паскаль, Turbo Pascal, PascalABC.NET 3 12.12.2011 00:01
Динамические структуры danilqa Паскаль, Turbo Pascal, PascalABC.NET 2 11.04.2011 12:16