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
|
|
|