• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

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

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Векторы в Паскале

  • Автор темы Автор темы vitjok
  • Дата начала Дата начала

vitjok

Новые
Регистрация
29 Сен 2012
Сообщения
72
Реакции
0
Баллы
0
Векторы в Паскале

7888888888.webp

Код:
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.
помогите исправить))сразу извиняюсь за лишнюю фигню в программе)) оформляю сразу)
 
Прежде всего - решена не та задача: в условии требуется не просто максимальный и минимальный элементы, а вторые по значению. Так, в примере максимальный элемент - 10, а "играет" второй по значению - 7. Тоже и с минимумом. Исправьте.
P.S. Не совсем, правда, понимаю фразу "Предусмотреть случай, когда таких элементов нет" - как это их может не быть?
 
тоже не понимаю)) я просто не понимаю как для задать чтобы для 2-го максимально(( неломай мозг это не нужно)и еще вопрос как определить ту или не ту написал формулу vector:=Random(v_max-v_min + 1) + v_min;
 
Последнее редактирование:
я просто не понимаю как для задать чтобы для 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.
как определить ту или не ту написал формулу vector:=Random(v_max-v_min + 1) + v_min;
А в чем проблема? Формула как формула, ошибок нет, всё правильно.
 
спасибо)) а как сделать что бы у меня значения вышли как в задании)) или потому что рандом и постоянно разные вектора?? я правильно понял)
 
все разобрался))
 
777777.webp:tehnari_ru_837:как не знаю как составить формулу((( что бы менялись эти члены(( :tehnari_ru_325: простообъясните мне что бы раз и на всегда дошло как это делать((((((((((((((((((((((
 
простообъясните мне
"Простообъяснить" не берусь, ибо не знаю, чем руководствовался преподаватель, составляя задание. Можно почленно переставить местами элементы, можно попытаться изобрести многоэтажную формулу, словом, ясновидение - это, увы, не мой профиль.
 
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.
это его пример
 
9999.webp а это мое задание((((
 
а это мое задание((((
Эх, Витёк - драть Вас некому по субботам для профилактики. Вот с этого (формулировки задания) и нужно было начинать. А не вокруг да около.
Код:
Uses CRT;

Const
 n=5;
 V_min=-20;
 V_max=10;

Var
 M:Array[1..n,1..n] of Integer;
 i,j:Byte;
 D:Integer;

Begin
 ClrScr;
 Randomize;
 For i:=1 to n do
  begin
   For j:=1 to n do
    begin
     M[i,j]:=Random(V_max-V_min)+V_min;
     If (j<i) and (j<n-i+1) then textcolor(4)
     else
     if (j>i) and (j>n-i+1) then textcolor(9)
     else
     textcolor(15);
     Write(M[i,j]:4);
    end;
   Writeln;
  end;

 For i:=1 to n do
  For j:=1 to n do
   If j<i then
    begin
     D:=M[i,j];
     M[i,j]:=M[i,n-j+1];
     M[i,n-j+1]:=D;
    end;
 Writeln;

 For i:=1 to n do
  begin
   For j:=1 to n do
    begin
     If (j<i) and (j<n-i+1) then textcolor(9)
     else
     if (j>i) and (j>n-i+1) then textcolor(4)
     else
     textcolor(15);
     Write(M[i,j]:4);
    end;
   Writeln;
  end;

 ReadKey;
End.
Между прочим, поскольку Вы упорно продолжаете всюду пихать этот CRT-модуль, то и получИте программу с активным использованием CRT-команд. Чтобы модуль без дела не болтался.
 

Вложения

  • Vit_1.webp
    Vit_1.webp
    7.1 KB · Просмотры: 55
спасибо большое)) с массивами ну ни как не могу до конца разобраться((
 
У меня к вам небольшой вопрос в какой версии Паскаля лучше работать на семерке??)
 
а то что то у меня и в ABCpas и в turbo какието ужасы показываетtehno015
 
все заработа как убрац цвета))
 
просто по семерку трудно подобрать нормальный паскаль,а ABC с массивами работает плохо)хорошо так и с делаю)
 
просто по семерку трудно подобрать нормальный паскаль,а ABC с массивами работает плохо)хорошо так и с делаю)
Вот эти два фрагмента удали:

Код:
If (j<i) and (j<n-i+1) then 
 textcolor(4)      
else      
if (j>i) and (j>n-i+1) then 
 textcolor(9)      
else      
textcolor(15);
Код:
If (j<i) and (j<n-i+1) then 
 textcolor(9)      
else      
if (j>i) and (j>n-i+1) then 
 textcolor(4)      
else      
textcolor(15);
 
я понял это, так и делал)
 
Назад
Сверху