Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 06.11.2012, 23:03   #11 (permalink)
Лекси
Новичок
 
Регистрация: 05.11.2012
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

моя благодарность к Вам не знает границ! Спасибо огромное!!!
Лекси вне форума   Ответить с цитированием

Старый 06.11.2012, 23:03
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Будем ждать ответов в вашу тему, а пока можете прочитать содержимое этих топиков

Паскаль
Паскаль АBC
Паскаль
Турбо Паскаль или Фри Паскаль. Задание по теме Типизированный файл

Старый 29.11.2012, 03:41   #12 (permalink)
лекси 1
Новичок
 
Регистрация: 29.11.2012
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

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


Исходная матрица

Введите интервал[a,c]: -2 18

11 -2 4 9 6
1 18 0 -2 -2
17 4 11 16 5 -5696

9 13 14 14 17 -3372

16 -1 11 3 18

Преобразованная матрица

17 13 14 16 18
1 18 0 -2 -2
16 -2 11 9 17
9 4 11 14 6
11 -1 4 3 5
лекси 1 вне форума   Ответить с цитированием
Старый 29.11.2012, 09:51   #13 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Уважаемая лекси_1, не видя Вашей программы и, соответственно, не зная, что Вы там накурочили, я, разумеется, бессилен Вам помочь. Одно могу сказать точно: сырых неотлаженных неоттестированных программ я не выкладываю, и моя программа точно и правильно решала поставленную задачу. Так что пока Вы не выложите листинг своего варианта, разговор беспредметен.
И еще. Для того, чтобы не сбивались интервалы (например, при выкладывании матриц, а также листингов), нужно делать так:
1. Перейти в "Расширенный режим".
2. Выделить набранную матрицу или листинг.
3. Нажать на значок #.
Или то же самое можно сделать, взяв нужный фрагмент в теги Code, т.е. вручную прописать:
{Code}
<Матрица>
{/Code}, только вместо фигурных следует поставить квадратные скобки.
Vladimir_S вне форума   Ответить с цитированием
Старый 05.12.2012, 19:13   #14 (permalink)
лекси 1
Новичок
 
Регистрация: 29.11.2012
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Вот эта программа

изменила я только то что можно сейчас самой выбирать интервал. так вот, когда выбираешь маленькие числа к примеру от -3 до 12 то все работает правильно, а когда большие от -11 до 26 ,например, то появляется минус в произведении положительных чисел. что я уже только не меняла не получается ничего. Помогите пожалуйста!

Program Primer;
uses crt;
const
n=5;
var
M: array[1..n,1..n]of integer;
i,j,p,r,k, a,c :integer;
b:boolean;
begin
clrscr;
randomize;
writeln('Исходная матрица:’);
writeln;
write('Введите интервал [a,c]:’);
readln(a,c);
writeln;
for i:=1 to N do
begin
b:=true;
p:=1;
for j:=1 to N do
begin
M[i,j]:=random(c-a+1)+a;
if M[i,j]<0 then b:=false;
if b then P:=P*m[i,j];
write(m[i,j]:4);
end;
if b then writeln(p:15) ;
writeln;
end;
readkey;
writeln; writeln('Преобразованная матрица’);
writeln;
for j:=1 to n do begin
for k:=1 to n-2 do begin
for i:=k+2 to n do
if k mod 2 <> 0 then
if sqr(m[k,j]) < sqr(m[i,j])
then begin
r:=m[k,j];
m[k,j]:=m[i,j];
m[i,j]:=r;end; end;
end;
for i:=1 to n do begin
for j:=1 to n do write (m[i,j]:4);
writeln;end;
readkey;
End.
лекси 1 вне форума   Ответить с цитированием
Старый 05.12.2012, 20:36   #15 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от лекси 1 Посмотреть сообщение
Помогите пожалуйста!
Черт, что за запах отвратительный? Ох, чую - пахнет Паскалем АВС. Превосходящим своею глючностью самою глючность. В общем, так - за глюки этого... изделия я не отвечаю. Кроме того:
1. Ведь вот просил Вас выкладывать листинги в тегах {Code}, и объяснил, как это делается - нет, всё мимо. Ведь так неудобно читать неформатированный текст программы! Впрочем, это так - воркотня.
2. Не надо менять то, что было отлажено и выверено! Например, у меня:

If b then Write(P:15);
Writeln;

у Вас:

If b then Writeln(P:15);
Writeln;

В результате на экране появляются лишние пустые строки, матрица рвется. И зачем?

Ну ладно. Главное, ответить на извечный вопрос "Что делать?". Предлагаю попытаться обойти глюки Вашего лжепаскаля путем задания типа произведения P, как "Real". Должно помочь. Тогда (заодно еще кое-где кое-что "причесал" и добавил исключение нулевых элементов матрицы):
Код:
Program Primer;
uses crt;
const
 n=5;
var
 M: array[1..n,1..n]of integer;
 i,j,r,k,a,c :integer;
 P:Real;
 b:boolean;
begin
 clrscr;
 randomize;
 write('Enter the range [a,c]: ');
 readln(a,c);
 writeln;
 writeln('Initial matrix:');
 writeln;
 for i:=1 to N do
  begin
   b:=true;
   P:=1;
   for j:=1 to N do
    begin
     M[i,j]:=random(c-a+1)+a;
     if M[i,j]=0 then M[i,j]:=1;
     if M[i,j]<0 then b:=false;
     if b then P:=P*m[i,j];
     write(m[i,j]:4);
    end;
   if b then write(P:15:0);
   writeln;
  end;
 readkey;
 writeln;
 writeln('Ordered matrix:');
 writeln;
 for j:=1 to n do
  begin
   for k:=1 to n-2 do
    begin
     for i:=k+2 to n do
     if k mod 2 <> 0 then
      if sqr(m[k,j]) < sqr(m[i,j]) then
       begin
        r:=m[k,j];
        m[k,j]:=m[i,j];
        m[i,j]:=r;
       end;
    end;
  end;
 for i:=1 to n do
  begin
   for j:=1 to n do write (m[i,j]:4);
   writeln;
  end;
 readkey;
End.
Миниатюры
leksi_2.jpg  
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 05.12.2012, 21:44   #16 (permalink)
лекси 1
Новичок
 
Регистрация: 29.11.2012
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Вроде работает=)))) спасибо=)))
лекси 1 вне форума   Ответить с цитированием
Старый 18.12.2012, 20:17   #17 (permalink)
лекси 1
Новичок
 
Регистрация: 29.11.2012
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

хотя нет, это кошмар какой то, только заметила что и сортировка тупит.... 3 столбец 10-ку зачем то взял, хотя должен работать только с нечетными по номеру строками. это он опять тупит?
лекси 1 вне форума   Ответить с цитированием
Старый 18.12.2012, 20:34   #18 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от лекси 1 Посмотреть сообщение
хотя нет, это кошмар какой то, только заметила что и сортировка тупит.... 3 столбец 10-ку зачем то взял, хотя должен работать только с нечетными по номеру строками. это он опять тупит?
Во зараза - и действительно... Попробую разобраться, где ошибка.
Vladimir_S вне форума   Ответить с цитированием
Старый 18.12.2012, 20:48   #19 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,794
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Появление отрицательных значений вызвано переполнением числового формата Integer.
Можно воспользоваться типом longint для хранения произведения больших чисел.
AlexZir вне форума   Ответить с цитированием
Старый 18.12.2012, 20:49   #20 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Ага, ну ясно. Уважаемая леди, у меня в #10 всё было правильно, отлажено и выверено, так нет же - Вам понадобилось всё переиначить на свой лад, непонятно зачем, а в результате в части программы, где идёт упорядочение, Вы мало того, что зачем-то навставляли ненужных операторных скобок (begin-end), ну это еще полбеды, а беда в том, что напрочь перепутали индексы i,j,k элементов матрицы. Я вообще не понимаю, что там за алгоритм использован. Поэтому совет: внимательно перенести в программу нужный фрагмент из #10 и не мудрить.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 16:10.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.