Форум
» Назад на решение задач по физике и термеху
Регистрация | Профиль | Войти | Забытый пароль | Присутствующие | Справка | Поиск

» Добро пожаловать, Гость: Войти | Регистрация
    Форум
    Информационные технологии
        Турбо Паскаль. Программирование на Pascal
Отметить все сообщения как прочитанные   [ Помощь ]
» Добро пожаловать на форум "Информационные технологии" «

Переход к теме
<< Назад Вперед >>
Несколько страниц [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 ]
Модераторы: paradise, KMA
  

Kotenok 17


Удален

привет спасибо вам за то что вы есть!

Всего сообщений: N/A | Присоединился: N/A | Отправлено: 25 дек. 2006 0:50 | IP
Katerina



Новичок

Спасибо всем за помощь!!!!!!!!!


(Сообщение отредактировал Katerina 25 дек. 2006 1:06)

Всего сообщений: 2 | Присоединился: январь 2010 | Отправлено: 25 дек. 2006 0:58 | IP
kotenokGaw


Удален

Помогите пожалуйста разобраться в программе, а то мне кажется что я намудрила слишком, да и прога не работает. Первая же ошибка выскакивает когда в процедуре я перечисляю переменные.
"Составить программу для вычисления значения функции z. Если x<y тогда z:=x*amax в противном случае z:=y*bmax, где x это сумма элементов А от 1 до 10, а y сумма элементов b от 1 до 7. Вычисление x, amax, y, bmax оформить в виде процедуры."

program lab7;
uses crt;
var z:integer;
procedure lab(x, y, a, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, b1, b2, b3, b4, b5, b6, b7, amax, bmax:integer);
var i:integer;
begin
   begin
   writeln('input a1, a2, a3, a4, a5, a6, a7, a8, a9, a10');
   x:=a1+a2+a3+a4+a5+a6+a7+a8+a9+a10;
   writeln('input b1, b2, b3, b4, b5, b6, b7');
   y:=b1+b2+b3+b4+b5+b6+b7;
   amax:=a;
   for i:=1 to 10 do
      begin
      if amax<a then amax:=a;
      end;
   bmax:=b;
   for i:=1 to 7 do
      begin
      if bmax<b then bmax:=b;
      end;
   end;
end;
begin clrscr;
lab(x, y, amax, bmax);
if x<y then z:=x*amax else z:=y*bmax;
readkey;
end.

Всего сообщений: N/A | Присоединился: N/A | Отправлено: 25 дек. 2006 17:59 | IP
KMA



Долгожитель

miss graffiti, уверен, а что? Т. к. я меняю местами текущий и следующий элемент.

Нет, если вопрос в обращении к процедуре, тогда немного по другому надо записать, чтобы было рациональнее:

for i:=2 to (n div 2)+1 do
sdvigInMassiv (mas, n-i+2, i);

Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 25 дек. 2006 20:01 | IP
sssuuupppeeerrr


Удален

Народ, помогите дорешать задачку!!!

Задан числовой массив a[1 .. n]. Определить сколько различных чисел в нем.

Но у меня программа считает некоторые последовательности не так.
Например1 2 3 4 5)---количество разл чисел 5
Например1  1  2  1   1)--- кол-во разл. чисел прога выдает 3.

Uses Crt;
Var a:array[1..100] of integer;
   i,n,kol:integer;
Begin
write('n='); readln(n);
writeln;
for i:=1 to n do
  begin
     write('a[',i,']='); readln(a);
     writeln;
  end;
write('Danniy massiv: ');
for i:=1 to n do
  begin
     write(a,' ');
  end;
writeln;
kol:=1;
for i:=1 to (n-1) do
     if a<>a[i+1] then
        kol:=kol+1;

writeln;
writeln('kol=',kol);
End.

Всего сообщений: N/A | Присоединился: N/A | Отправлено: 25 дек. 2006 21:22 | IP
bekas


Долгожитель

Отсортируйте массив (хотя бы методом "пузырька"),
а потом от общего числа элементов массива отнимите число одинаковых элементов; число одинаковых элементов без проблем можно подсчитать за один проход по уже отсортированному массиву...

Всего сообщений: 379 | Присоединился: январь 2006 | Отправлено: 25 дек. 2006 22:26 | IP
KMA



Долгожитель

kotenokGaw, ты делаешь серьезно, все слишком замудренно. создай лучше два массива, а и b, и вводи через них.

const size=10;
type  mas=array [1..size] of integer;

Var a, b: mas;

procedure EnterMas (Var x: mas; n: byte);
Var i: byte;
Begin
      for i:=1 to n do
        begin
          write ('[', i, ']=');
          readLn (x[ i ]);
        end;
End;

function MaxInMassiv (x: massiv; n: byte):integer;
Var i: byte;
     buf: integer;
Begin
       buf:=x[1]
       for i:=2 to n do
        if buf<x[ i ]
           then buf:=x[ i ]
       MaxInMassiv:=buf;  
End;

function z ( a, b: mas;): longInt;
Var x, y: integer;
Begin
       x:=0;
       for i:=1 to size do
         x:=x+a[ i ];
       y:=0
       for j:=1 to size-3 do
         y:=y+b[ i ];
      if x<y
         then  z:=x*maxInMassiv (a, size)
         else z:=y*maxInMassiv (b, size-3)
End;

Процедуру нахождения x и у напишешь сама как и основную часть программы, я и так много чего расписал.


(Сообщение отредактировал KMA 28 дек. 2006 21:23)

Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 25 дек. 2006 23:13 | IP
KMA



Долгожитель

Dimka, ты копируешь в k немного не то, тебе нужно не к конкретному полю обращаться и их перставлять, а сами записи в массиве, т. е.

i:=1;
while not (eof (f) ) do
begin
  read (f, plan[ i ])
  inc (i);
end;

Ну я тут предположил, что ты уже заранее знаешь сколько у тебя записей.

а дальше работаешь с самим массивом

for i:=1 to n-1 do
for j:=1 to n-1 do
  if plan[j].reys>plan[j+1].reys
     then
      begin
        prom:=plan[j].reys;
        plan[j].reys:=plan[j+1].reys;
        plan[j+1].reys:=prom
      end;

Ну а потом уже выведешь все в упорядоченном виде. Хотя если честно, я бы использовал динамический массив, или работал бы с файлом напрямую в режими записи, чтения.

Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 26 дек. 2006 2:29 | IP
miss_graffiti


Долгожитель

КМА, я про другой цикл:
"Значит, тебе надо запустить цикл от 2 до n-1, где n это твое число и проверить, есть ли такое среди перечисленных, на которое данное число делиться."
Достаточно до округленного корня из n

mittal, почитай вот здесь:
внешняя ссылка удалена


Всего сообщений: 670 | Присоединился: сентябрь 2005 | Отправлено: 26 дек. 2006 13:29 | IP
KMA



Долгожитель

Аааа, miss graffiti, вы про простое число. Я привел самый банальный алгоритм, т. е. перебор. Возможно есть лучше, но для этого надо копаться в и-нете. Но так, как автор этого задания не увлекся разговором, я и сам решил не продолжать рассуждать на эту тему =) Хочется заметить, что  Duke Garland не верно описал алгоритм, своим:

... if not((a[j] mod 2)or(a[j] mod 3)) then begin......

Т. к. 49 =7*7, а оно не является простым числом. Думаю из этих соображений мы и берем все же квадратный корень. Справедливое замечание, спасибо miss graffiti. Просто мне эти задачи не нужны, поэтому и копотеть над ними особо не хочется, пишешь, что первое приходит в голову.  

Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 26 дек. 2006 19:27 | IP

Эта тема закрыта, новые ответы не принимаются

Переход к теме
<< Назад Вперед >>
Несколько страниц [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 ]

Форум работает на скрипте © Ikonboard.com