Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 18.03.2013, 21:12   #1 (permalink)
Programmistka
Новичок
 
Регистрация: 03.12.2012
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите с Pascal

Помогите пожалуйста с Pascal, хотя бы несколько задач
1. Составить программу в которой в разных местах отображаются разного цвета цифры. Вывод цифр сопровождается определенным звуком.
2. Написать программу выдающую информацию:
- кол-во иногородних, прибывших в клинику
- список пациентов старше Х лет с диагнозом У. Значения Х,У вводятся с клавиатуры.
3. Вывести на печать элементы целочисленных матриц N(5,6) и M(4,5), кратные трем. (с помощью функции или процедуры)
4. Вычислить сумму совершенных чисел, не превосходящих заданного числа М. Определение совершенного числа оформить подпрограммой функцией.
5. В тексте предложения заменить символ " " (пробел) на символ ",". Конечные символы удалить. Определить длину предложения, если в тексте встречается несколько " " подряд, вместо них поставить один символ ",".
6. Вставить число А после К элемента массива. (К и А вводятся с клавиатуры).
7. Создайте матрицу 5х5, значение каждого элемента которой равно сумме номера строки и столбца, на пересечении которых он находится и вычислите сумму элементов каждой строки.
8. Вставить первую строку после строки в которой находится первый встречный максимальный элемент.
9. Найдите наибольшие элементы и их порядковые номера в массивах Х(15) и У(12).
10. Удалить из массива максимальный элемент, если все элементы разные.
Programmistka вне форума   Ответить с цитированием

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

Давайте ознакомимся с этими топиками, там очень много важного по вашему запросу

Помогите решить задачу в Pascal ABC
Помогите решить задачу в Pascal
Помогите разобраться=) Pascal
Pascal. Задача. Помогите
Pascal ABC, запуталась, помогите пожалуйста
Pascal ABC, помогите доделать

Старый 19.03.2013, 11:09   #2 (permalink)
interacia
Member
 
Регистрация: 29.01.2013
Сообщений: 91
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 565
По умолчанию

10)
Код:
program Array1;
var
i:integer;
N:integer;
a: array [1..10] of integer;
max:integer;
begin
writeln('Введите N (N<=10)');
 readln(N);
 writeln('Введите значение массива');
 for i:=1 to N do read(a[i]);
 max:=1;
 for i:=2 to N do if a[i]>a[max] then max:=i;
 dec(N);
 for i:=max to N do a[i]:=a[i+1];
writeln(' Ответ ');
 for i:=1 to N do write(a[i],' ');
end.
interacia вне форума   Ответить с цитированием
Старый 19.03.2013, 11:18   #3 (permalink)
interacia
Member
 
Регистрация: 29.01.2013
Сообщений: 91
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 565
По умолчанию

7)
Код:
program Matrix1;
var
j,i:integer;
Sum:integer;
a: array [1..5,1..5] of integer;
begin
// Решение
 for i:=1 to 5 do begin
 for j:=1 to 5 do a[i,j]:=i+j;
 end;
// Ответ
writeln;
writeln('Ответ');
 for i:=1 to 5 do begin
 writeln;
 Sum:=0;
 for j:=1 to 5 do begin write(a[i,j],' '); inc(Sum,a[i,j])end;
 write('сумма строки = ',Sum);
 end;
end.
interacia вне форума   Ответить с цитированием
Старый 19.03.2013, 12:35   #4 (permalink)
interacia
Member
 
Регистрация: 29.01.2013
Сообщений: 91
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 565
По умолчанию

3)
Код:
program Matrix1;
var
j,i:integer;
N: array [1..5,1..6] of integer;
M: array [1..4,1..5] of integer;
begin
// Решение
 for i:=1 to 5 do
 for j:=1 to 6 do N[i,j]:=random(100);
 for i:=1 to 4 do
 for j:=1 to 5 do M[i,j]:=random(100);
writeln;
writeln(' элементы кратные трем из N[] ');
 for i:=1 to 5 do  begin
 writeln;
 for j:=1 to 6 do if (N[i,j]mod 3)=0 then write(' N[',i,',',j,']=',N[i,j]);
 end;
writeln;
writeln(' элементы кратные трем из M[] ');
 for i:=1 to 4 do begin writeln;
 for j:=1 to 5 do if (M[i,j]mod 3)=0 then write(' M[',i,',',j,']=',M[i,j]);
end;
end.
6) подобную задачу можно найти <ССЫЛКА УДАЛЕНА>
Замечание:
Дорогой участник, поверьте, мы с глубочайшим уважением относимся к Вашей деятельности на форуме и очень не хотели бы Вас наказывать, но вот уже не первый раз Вы грубо нарушаете наши Правила, выкладывая ссылки на свой сайт. Подобное у нас строго запрещено. Правила едины для всех и подлежат неукоснительному соблюдению.

С пожеланием всяческих благ
Модератор.


4) четвертое задание явно выбивается по своей сложности из обшей массы.
interacia вне форума   Ответить с цитированием
Старый 19.03.2013, 14:22   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от interacia Посмотреть сообщение
4) четвертое задание явно выбивается по своей сложности из обшей массы.
Да Господь с Вами, что же тут сложного?! За основу можно взять, например, мою программку отсюда: Несколько заданий в Паскале (для Turbo/Free Pascal формат Integer следует заменить на Longint). Дальше там тривиально.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 19.03.2013, 16:59   #6 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Задача 1. Алгоритм реализован для графического режима TurboPascal, так как версия компилятора нигде не оговаривалась
Код:
uses crt, graph;
var gd,gm,ch:integer;
s:string;
begin
randomize;
initgraph(gd,gm,'c:\tp7\bgi');
cleardevice;
repeat
ch:=random(10);
str(ch,s);
setcolor(random(16));
sound(random(10)*20+100);
outtextxy(random(630)+5,random(450)+10, s);
delay(200);
nosound;
until keypressed;
s:=readkey;
end.
При выполнении программы на экран выводится случайная цифра от 0 до 9 случайным цветом от 0 до 15 в случайной координате экрана. Выход из программы осуществляется после нажатия любой клавиши.
AlexZir вне форума   Ответить с цитированием
Старый 19.03.2013, 17:05   #7 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от AlexZir Посмотреть сообщение
При выполнении программы на экран выводится случайная цифра от 0 до 9 случайным цветом от 0 до 15 в случайной координате экрана.
А поверещать, как того условие требует?
Vladimir_S вне форума   Ответить с цитированием
Старый 19.03.2013, 17:27   #8 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Пожалуйста

Та же задача для текстового режима решается следующим образом:
Код:
uses crt;
var ch:integer;
begin
randomize;
clrscr;
repeat
ch:=random(10);
textcolor(random(15)+1);
sound(random(10)*20+100);
gotoxy(random(80),random(25));
writeln(ch);
delay(200);
nosound;
until ch=9;
readln
end.
Здесь печать цифр прекращается после вывода цифры 9.
AlexZir вне форума   Ответить с цитированием
Старый 19.03.2013, 19:47   #9 (permalink)
interacia
Member
 
Регистрация: 29.01.2013
Сообщений: 91
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 565
По умолчанию

4) задание
// самый грубый способ вычисления.
Код:
Var
 N,k:integer;
 M,V:longInt;
Function Ideal(W:Integer):Boolean;
var
 i,Sum:longInt;
begin
 Sum:=0;
 For i:=1 to W-1  do
  If (W mod i)=0 then Inc(Sum,i);
 Ideal:=(Sum=W);
end;
Begin
 Write('M= ');
 Readln(M);
 V:=0;
 For k:=2 to M do if Ideal(k) then V:=V+k;
Write('Сумма = ',V);
End.
Свойства совершенных четных чисел
1) Все чётные совершенные числа (кроме 6) являются суммой кубов последовательных нечётных натуральных чисел: 1^3+3^3+5^3 …

Еще свойство
2) могут быть представлены в виде n(2n−1) для некоторого натурального числа n.

Еще свойство
3) Все чётные совершенные числа, кроме 6 и 496, заканчиваются в десятичной записи на 16, 28, 36, 56 или 76.

Еще свойство
4) Все чётные совершенные числа в двоичной записи содержат сначала p единиц, за которыми следует p—1 нулей (следствие из их общего представления).

Это ещё не всё.

Эти свойства могут быть положены в основу облегчения алгоритма.

Для примера 1-ое свойство
Код
Код:
Var
 N,k:integer;
 j,M,V:longInt;
Function Ideal(W:Integer):Boolean;
var
 i,Sum:longInt;
begin
 Sum:=0;
 For i:=1 to W-1  do
  If (W mod i)=0 then Inc(Sum,i);
 Ideal:=(Sum=W);
end;
Begin
 Write('M= ');
 Readln(M);
 V:=0;
 k:=1;
 j:=3;
 if M>=6 then
begin
  V:=6;
 while k<=M do
 begin
 if Ideal(k) then V:=V+k;
 k:=k+j*j*j;
 inc(j,2);
 end;
end
 else V:=0;
Write('Сумма = ',V);
End.
Между кодами существенная разница в производительности.

Если бы задача имела бы какое ни будь прикладное значение то эффективней использовать массив с уже просчитанными значениями.
Несколько первых значений
6, 28, 496, 8128, 33550336, 8589869056, 137438691328, 2305843008139952128, 2658455991569831744654692615953842176, 19156194260823610729479337808430363813099732154816 9216
interacia вне форума   Ответить с цитированием
Старый 19.03.2013, 20:47   #10 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от interacia Посмотреть сообщение
самый грубый способ вычисления.
Спасибо на добром слове.
Между прочим, Вы совершенно напрасно заменили верхнюю границу поиска делителей с (W div 2), как у меня, на (W-1). Немного поразмыслив, Вы поймёте, что не может быть точным делителем число, превышающее половину делимого, а потому проверка от половины до значения самогО делимого - абсолютно лишняя трата времени. Это если уж заниматься эффективностью, оптимальностью, производительностью и т.п.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

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

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

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

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




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

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