ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

10.01.2010, 01:57
|
|
Новичок
Регистрация: 06.07.2009
Сообщений: 18
Провел на форуме: 42940
Репутация:
0
|
|
Pascal. Задача на логику: составить программу, которая по данным составит расписание занятий.
Учитель литературы может провести 1, 2, 3 уроки;
Учитель физкультуры (физ-ры) может провести 1, 4 уроки;
Учитель математики может провести 2, 3, 4 уроки;
Учитель технологии (трудов) может провести 3, 4 уроки.
Т.е. входные данные такие:
1110
1001
0111
0011
Вывод (к примеру):
Литература
Математика
Технология
Физкультура
Помогите исходником или расписанным алгоритмом. Буду благодарен.
|
|
|

10.01.2010, 16:00
|
|
Познающий
Регистрация: 28.09.2008
Сообщений: 65
Провел на форуме: 152084
Репутация:
8
|
|
эм ну по сути простой перебор .
алгоритм.
если лит-ра 1
то физ-ра 4
математика 2
а труд 3
....
если хочешь в лс все варианты распишу
а ввод как осуществляться будет?
или просто надо все варианты вывести?
Последний раз редактировалось n1ghtstalker; 10.01.2010 в 16:07..
|
|
|

10.01.2010, 19:32
|
|
Новичок
Регистрация: 07.04.2009
Сообщений: 19
Провел на форуме: 35427
Репутация:
3
|
|
Ребят, помогите плиз, завтра сдавать ...
Код:
program xyz;
uses
SysUtils;
Function Ru ( S : string ) : string ;
VAR
T : string ; { временная строка}
i : integer ; { номер символа в строке }
code : byte ; { код символа }
BEGIN
T := S ; { получает значение параметра }
FOR i := 1 TO Length ( S ) DO { для всех символов строки S}
BEGIN { изменяет кодировку символов кириллицы }
code := Ord ( S[ i ] ) ; { определяет код символа}
CASE code OF { ПРОПИСНЫЕ БУКВЫ }
192 .. 197: T[ i ] :=Chr(code-64) ; { А-Е: 192-197 ->128-133}
168: T[ i ] :=#240; { Ё: 168->240}
198 .. 223: T[ i ] :=Chr(code-64); { Ж-Я : 198-223->128-133} { строчные буквы }
224 .. 229: T[ i ] :=Chr(code-64); { а-е : 224-229->160-165}
184: T[ i ] :=#241; { ё: 184 ->241}
230 .. 239: T[ i ] :=Chr(code-64); { е-п: 230-239->166-175}
240 .. 255: T[ i ] :=Chr(code-16); { р-я: 240-255->224-239}
END ;
END ;
Ru := T ; { возвращает значение временной строки }
END;
VAR
i,j,k,n,temp:integer; // искомые числа
repeat_it:boolean; // зацикливание программы (True/False)
ans:char; // используется для получения согласия для продолжения работы программы
label // идентификатор
p1;
Function IntSqrt(temp:integer):real; // функция для вычисления квадратного корня.
VAR
x:real;
t:real;
begin // начало функции
x:=sqrt(temp); // извлечение квадратного корня из числа.
if (x-round(x))=0 then t:=x // Если от х отнять округленный х будет равно нулю, тогда t=x.
else t:=0; // Либо t=0.
end;
begin
Writeln(Ru('Программа находит все натуральные числа, меньшие чем N, для которых выполняется соотношение a*a + b*b = c*c. [a,b,c < N]'));
Writeln; // ...
Writeln(Ru('Автор программы ...')); // Вывод информации на экран об авторе программы.
Writeln; // ...
Writeln('...'); // Вывод на экран - e-mail автора программы.
Writeln;
p1: // Возврат в это место при ошибке или при повторном вводе данных.
repeat_it:=true; // Зацикливание программы, True-правда.
while repeat_it=true do begin
Write(Ru('Введите число, которое вы хотите проверить: ')); // ...
read(temp);
Writeln('OTBET: ',IntSqrt(temp):6:0); // Отправить temp на обработку в функцию 'Formula()' и вывести результат на экран.
Writeln; // ...
Write(Ru('Введите N: ')); // ...
Read(n); // Ввод числа N
for i:=1 to N-1 do // Увеличиваем переменную результата в N-1 раз.
for j:=1 to N-1 do // Увеличиваем переменную результата в N-1 раз.
for k:=1 to N-1 do // Увеличиваем переменную результата в N-1 раз.
if i*i+j*j=k*k then Writeln('a=',i:4,'; b=',j:4,'; c=',k:4); // Если i*i+j*j=k*k, то выводятся на экран все возможные варианты решения этого уравнения.
Writeln; // ...
Write(Ru('Вы хотите продолжить работу с программой ? (Y/N): ')); // Предложить продолжить работу с программой.
Readln;
readln(ans); // Получить согласие.
writeln; // ...
if (ans='Y') or (ans='y') or (ans=Ru('Н')) or (ans=Ru('н')) then GoTo p1; // Если согласие получено - возврат к началу.
break;
end;
end.
Собственно если ввожу N = 6
то выводит ответ
a = 3 b = 4 c = 5
a = 4 b = 3 c = 5
то есть нужно чтобы в случае если "с" совпадает несколько раз, тогда чтобы выводилось 1 раз.
|
|
|

10.01.2010, 19:45
|
|
Постоянный
Регистрация: 12.12.2006
Сообщений: 906
Провел на форуме: 4205500
Репутация:
930
|
|
Тебе нужно, чтобы с каждым 'c' выводилась только одна пара или чтобы набор чисел в тройке различался в каждом варианте?
На будущее - тут нет экстрасенсов, пиши, что делает твоя программа и что должна делать ВНЕ кода. И вовсе не зачем пихать в код всю программу, достаточно проблемного места.
|
|
|

10.01.2010, 19:55
|
|
Новичок
Регистрация: 07.04.2009
Сообщений: 19
Провел на форуме: 35427
Репутация:
3
|
|
Полная задача программы:
Нужно определить функцию, которая возвращает натуральное число, если аргумент функции является квадратом этого числа и ноль в противном случае.
Составить программу, которая находит все натуральные числа, меньшие чем N, для которых выполняется соотношение a2(квадрат) + b2(квадрат) = c2(квадрат).
Проблема:
То есть всё норм работает, кроме того, что когда я получаю в ответе одинаковые "с", то получается что "а" и "b", разные, но числа одинаковые, поэтому программа их выводит, и один вариант получается лишним.
то есть, если я ввожу N = 6, я должен получить ответ, только
a = 3; b = 4; c = 5
а не два варианта.
|
|
|

10.01.2010, 20:06
|
|
Постоянный
Регистрация: 12.12.2006
Сообщений: 906
Провел на форуме: 4205500
Репутация:
930
|
|
набор чисел в тройке различался в каждом варианте
ага.
Можешь записывать a и b в массив, а потом сравнивать. Больше ничего в голову пока не приходит.
Goto буэ ) используй repeat/until
ps. а вообще в условии ни слова не сказано про твою "проблему". может это вовсе не проблема?
Последний раз редактировалось Fata1ex; 10.01.2010 в 20:09..
|
|
|

10.01.2010, 21:34
|
|
Новичок
Регистрация: 30.10.2009
Сообщений: 2
Провел на форуме: 3371
Репутация:
0
|
|
Нужно 11 января написать прграмму по C# прибл за час, задание передам по icq, обратно также. прогу надо будет начать делать где то около 9-00(время московское), моя аська 428055866
Пишите о цене договоримся, очень надо
|
|
|

10.01.2010, 22:04
|
|
Новичок
Регистрация: 07.04.2009
Сообщений: 19
Провел на форуме: 35427
Репутация:
3
|
|
Я тоже думал, что не проблема, но преподователь оборвал, сказал сделай так чтобы одинаковые ответы не повторялись.
Вот я и думаю как сделать...
Может что-то наподобии этого добавить ?
Код:
Procedure PrintTreangle(n:integer);
VAR
a,b,c:longint;
count:longint;
BEGIN
FOR a:=1 To n Do
For b:=a+1 To n Do
Begin
c:=IntSqrt(a*a+b*b);
if c>0 Then Writeln(a:4, b:4, c:4);
Begin
Writeln(a:4, b:4, c:4);
count:=count+1;
if count mod 100=0 Then
Readln;
end;
end;
END;
|
|
|

11.01.2010, 00:30
|
Регистрация: 29.05.2002
Сообщений: 1,793
Провел на форуме: 2050916
Репутация:
0
|
|
Сообщение от DJeFRY_RASH
Код:
Procedure PrintTreangle(n:integer);
VAR
a,b,c:longint;
count:longint;
BEGIN
FOR a:=1 To n Do
For b:=a+1 To n Do
Begin
c:=IntSqrt(a*a+b*b);
if c>0 Then Writeln(a:4, b:4, c:4);
Begin
Writeln(a:4, b:4, c:4);
count:=count+1;
if count mod 100=0 Then
Readln;
end;
end;
END;
Правильнее наверно
FOR a:=1 To n-1 Do
For b:=a To n-1 Do
|
|
|

11.01.2010, 15:23
|
|
Новичок
Регистрация: 03.12.2008
Сообщений: 13
Провел на форуме: 34545
Репутация:
0
|
|
Прошу помощи!!!
С++!!!!!
Разработать класс, который представляет библиотечную карту. В классе должны быть члены-данные, которые сохраняют информацию об названии книги, автора, год издательства, название издательства, и соответствующие функции-члены для доступа та установления этих данных. В классе должна быть функция вывода данных на экран.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|