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


Ответ
 
Опции темы Опции просмотра
Старый 14.11.2012, 14:12   #1 (permalink)
vitjok
Member
 
Регистрация: 29.09.2012
Сообщений: 72
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Векторы в Паскале

7888888888.png

Код:
Program Variant_0;
Uses Crt;
Const n = 10;

Var i, v_min, v_max, i_max, max, i_min, min : integer;
    vector : Array [1..n] Of Integer;

Begin

  Randomize;

  WriteLn('laba 6 part 1');

  WriteLn('is-12-2');
  WriteLn('Kapustin Victor');
  WriteLn;

  WriteLn('zadaite znacheniya');
  write('n=');
  readln;
  Write('v_min=');
  ReadLn(v_min);
  Write('v_max=');
  ReadLn(v_max);

  For i:=1 To n Do
    vector[i]:=Random(v_max-v_min + 1) + v_min;

  WriteLn;
  WriteLn('ishodn vectr:');
  For i:=1 To n Do
    Write(vector[i]:5);
  WriteLn;

  max:= vector[1];
  i_max:= 1;
  min:= vector[1];
  i_min:= 1;

  For i:=2 To n Do
    Begin

If (vector[i] > max) Then
        Begin
          max := vector[i];
          i_max := i;
        End;

If (vector[i] < min) Then
        Begin
          min := vector[i];
          i_min := i;
        End;

    End;

  WriteLn;
  WriteLn('max=', max, '   i_max=', i_max);
  WriteLn('min=', min, '   i_min=', i_min);

vector[i_max]:=min;
vector[i_min]:=max;

  WriteLn;
  WriteLn('Vector:');
  For i:=1 To n Do
    Write(vector[i]:5);
  WriteLn;

End.
помогите исправить))сразу извиняюсь за лишнюю фигню в программе)) оформляю сразу)
vitjok вне форума   Ответить с цитированием

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

Разумеется, на нашем форуме так же нашлись и похожие темы

Меню в Паскале
Строки в паскале
Массив в паскале
Функции на Паскале
Сортировка в Паскале

Старый 14.11.2012, 14:25   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Прежде всего - решена не та задача: в условии требуется не просто максимальный и минимальный элементы, а вторые по значению. Так, в примере максимальный элемент - 10, а "играет" второй по значению - 7. Тоже и с минимумом. Исправьте.
P.S. Не совсем, правда, понимаю фразу "Предусмотреть случай, когда таких элементов нет" - как это их может не быть?
Vladimir_S вне форума   Ответить с цитированием
Старый 14.11.2012, 14:40   #3 (permalink)
vitjok
Member
 
Регистрация: 29.09.2012
Сообщений: 72
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

тоже не понимаю)) я просто не понимаю как для задать чтобы для 2-го максимально(( неломай мозг это не нужно)и еще вопрос как определить ту или не ту написал формулу vector[i]:=Random(v_max-v_min + 1) + v_min;

Последний раз редактировалось vitjok; 14.11.2012 в 14:47
vitjok вне форума   Ответить с цитированием
Старый 14.11.2012, 15:02   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от vitjok Посмотреть сообщение
я просто не понимаю как для задать чтобы для 2-го максимально
Легко:
Код:
Program Variant_0;
Const n = 10;

Var i,v_min,v_max,i_max,max,i_min,min,max2,min2 : integer;
    vector : Array [1..n] Of Integer;

Begin

  Randomize;

  WriteLn('laba 6 part 1');

  WriteLn('is-12-2');
  WriteLn('Kapustin Victor');
  WriteLn;

  WriteLn('zadaite znacheniya');
  write('n=');
  readln;
  Write('v_min=');
  ReadLn(v_min);
  Write('v_max=');
  ReadLn(v_max);

  For i:=1 To n Do
    vector[i]:=Random(v_max-v_min + 1) + v_min;

  WriteLn;
  WriteLn('ishodn vectr:');
  For i:=1 To n Do
    Write(vector[i]:4);
  WriteLn;

  max:= vector[1];
  min:= vector[1];

  For i:=2 To n Do
    Begin
     If (vector[i]>max) Then max := vector[i];
     If (vector[i]<min) Then min := vector[i];
    End;

  max2:= min;
  i_max:= 1;
  min2:= max;
  i_min:= 1;

  For i:=2 To n Do
    Begin
     If (vector[i]>max2) and (vector[i]<max) Then
        Begin
          max2 := vector[i];
          i_max := i;
        End;

     If (vector[i]<min2) and (vector[i]>min) Then
        Begin
          min2 := vector[i];
          i_min := i;
        End;

    End;

  WriteLn;
  WriteLn('max2=', max2, '   i_max=', i_max);
  WriteLn('min2=', min2, '   i_min=', i_min);

 vector[i_max]:=min2;
 vector[i_min]:=max2;

  WriteLn;
  WriteLn('Vector:');
  For i:=1 To n Do
    Write(vector[i]:4);
  WriteLn;
  Readln;
End.
Цитата:
Сообщение от vitjok Посмотреть сообщение
как определить ту или не ту написал формулу vector[i]:=Random(v_max-v_min + 1) + v_min;
А в чем проблема? Формула как формула, ошибок нет, всё правильно.
Vladimir_S вне форума   Ответить с цитированием
Старый 14.11.2012, 15:37   #5 (permalink)
vitjok
Member
 
Регистрация: 29.09.2012
Сообщений: 72
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

спасибо)) а как сделать что бы у меня значения вышли как в задании)) или потому что рандом и постоянно разные вектора?? я правильно понял)
vitjok вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 14.11.2012, 15:40   #6 (permalink)
vitjok
Member
 
Регистрация: 29.09.2012
Сообщений: 72
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

все разобрался))
vitjok вне форума   Ответить с цитированием
Старый 14.11.2012, 16:19   #7 (permalink)
vitjok
Member
 
Регистрация: 29.09.2012
Сообщений: 72
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

777777.pngкак не знаю как составить формулу((( что бы менялись эти члены(( простообъясните мне что бы раз и на всегда дошло как это делать((((((((((((((((((((((
vitjok вне форума   Ответить с цитированием
Старый 14.11.2012, 17:10   #8 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от vitjok Посмотреть сообщение
простообъясните мне
"Простообъяснить" не берусь, ибо не знаю, чем руководствовался преподаватель, составляя задание. Можно почленно переставить местами элементы, можно попытаться изобрести многоэтажную формулу, словом, ясновидение - это, увы, не мой профиль.
Vladimir_S вне форума   Ответить с цитированием
Старый 14.11.2012, 17:26   #9 (permalink)
vitjok
Member
 
Регистрация: 29.09.2012
Сообщений: 72
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

1. Заполнить квадратный массив massivnn целыми случайными числами в диапазоне от v_min до v_max. Поменять местами главную и побочную диагонали массива. Размер массива n задать константой. Границы диапазона v_min и v_max задать с консоли. Вывести на экран исходный и полученный массивы.
Элементы главной диагонали квадратного массива имеют одинаковые индексы: massivii (i=1…n). Соответствующие им построчно элементы побочной диагонали имеют индексы massivi,n-i+1 . Меняем их местами алгоритмом циклического обмена через третью переменную.

Код:
Program Variant_0;
Uses WinCrt;

Const n = 5;	{задание размера массива именованной константой}

Var i, j : Word;
    k, v_min, v_max: Integer;
    massiv : Array [1..n, 1..n] Of Integer;
	

Begin
			
  Randomize;			{запуск генератора случайных чисел}

  WriteLn('Лабораторная работа №6_2');
  WriteLn('Вариант №0');
  WriteLn('ИС-11-1');
  WriteLn('Пупкин Василий');
  WriteLn;

  WriteLn('Задайте диапазон случайных чисел');
  Write(‘v_min=’);
  ReadLn(v_min);
  Write(‘v_max=’);
  ReadLn(v_max);


  For i:=1 To n Do		{заполнение массива случайными числами}
    For j:=1 To n Do
      massiv[i,j]:=Random(v_max-v_min + 1) + v_min;

  WriteLn;
  WriteLn('Исходный массив:');
  For i:=1 To n Do		{вывод на экран исходного массива}
    Begin
      For j:=1 To n Do		
        Write(massiv[i,j]:5);
      WriteLn;
    End;
  WriteLn;

  For i:=1 To n Do		{меняем местами соответствующие элементы}
    Begin				{главной и побочной диагоналей}
      k:=massiv[i,i];
      massiv[i,i]:=massiv[i,n-i+1];
      massiv[i,n-i+1]:=k;
    End;
  
  WriteLn;
  WriteLn('Полученный массив:');
  For i:=1 To n Do		{вывод на экран полученного массива}
    Begin
      For j:=1 To n Do		
        Write(massiv[i,j]:5);
      WriteLn;
    End;
  WriteLn;

End.
это его пример
vitjok вне форума   Ответить с цитированием
Старый 14.11.2012, 17:29   #10 (permalink)
vitjok
Member
 
Регистрация: 29.09.2012
Сообщений: 72
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

9999.png а это мое задание((((
vitjok вне форума   Ответить с цитированием
Ads

Яндекс

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


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

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




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

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