ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #2201  
Старый 10.01.2010, 01:57
Вася Рогов
Новичок
Регистрация: 06.07.2009
Сообщений: 18
Провел на форуме:
42940

Репутация: 0
Отправить сообщение для Вася Рогов с помощью ICQ
Question

Pascal. Задача на логику: составить программу, которая по данным составит расписание занятий.

Учитель литературы может провести 1, 2, 3 уроки;
Учитель физкультуры (физ-ры) может провести 1, 4 уроки;
Учитель математики может провести 2, 3, 4 уроки;
Учитель технологии (трудов) может провести 3, 4 уроки.

Т.е. входные данные такие:
1110
1001
0111
0011

Вывод (к примеру):
Литература
Математика
Технология
Физкультура

Помогите исходником или расписанным алгоритмом. Буду благодарен.
 
Ответить с цитированием

  #2202  
Старый 10.01.2010, 16:00
n1ghtstalker
Познающий
Регистрация: 28.09.2008
Сообщений: 65
Провел на форуме:
152084

Репутация: 8
По умолчанию

эм ну по сути простой перебор .
алгоритм.
если лит-ра 1
то физ-ра 4
математика 2
а труд 3

....
если хочешь в лс все варианты распишу
а ввод как осуществляться будет?
или просто надо все варианты вывести?

Последний раз редактировалось n1ghtstalker; 10.01.2010 в 16:07..
 
Ответить с цитированием

  #2203  
Старый 10.01.2010, 19:32
DJeFRY_RASH
Новичок
Регистрация: 07.04.2009
Сообщений: 19
Провел на форуме:
35427

Репутация: 3
Отправить сообщение для DJeFRY_RASH с помощью ICQ
По умолчанию

Ребят, помогите плиз, завтра сдавать ...

Код:
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 раз.
 
Ответить с цитированием

  #2204  
Старый 10.01.2010, 19:45
Fata1ex
Постоянный
Регистрация: 12.12.2006
Сообщений: 906
Провел на форуме:
4205500

Репутация: 930


По умолчанию

Тебе нужно, чтобы с каждым 'c' выводилась только одна пара или чтобы набор чисел в тройке различался в каждом варианте?
На будущее - тут нет экстрасенсов, пиши, что делает твоя программа и что должна делать ВНЕ кода. И вовсе не зачем пихать в код всю программу, достаточно проблемного места.
 
Ответить с цитированием

  #2205  
Старый 10.01.2010, 19:55
DJeFRY_RASH
Новичок
Регистрация: 07.04.2009
Сообщений: 19
Провел на форуме:
35427

Репутация: 3
Отправить сообщение для DJeFRY_RASH с помощью ICQ
По умолчанию

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

  #2206  
Старый 10.01.2010, 20:06
Fata1ex
Постоянный
Регистрация: 12.12.2006
Сообщений: 906
Провел на форуме:
4205500

Репутация: 930


По умолчанию

Цитата:
набор чисел в тройке различался в каждом варианте
ага.

Можешь записывать a и b в массив, а потом сравнивать. Больше ничего в голову пока не приходит.
Goto буэ ) используй repeat/until

ps. а вообще в условии ни слова не сказано про твою "проблему". может это вовсе не проблема?

Последний раз редактировалось Fata1ex; 10.01.2010 в 20:09..
 
Ответить с цитированием

  #2207  
Старый 10.01.2010, 21:34
RandomJkee
Новичок
Регистрация: 30.10.2009
Сообщений: 2
Провел на форуме:
3371

Репутация: 0
По умолчанию

Нужно 11 января написать прграмму по C# прибл за час, задание передам по icq, обратно также. прогу надо будет начать делать где то около 9-00(время московское), моя аська 428055866
Пишите о цене договоримся, очень надо
 
Ответить с цитированием

  #2208  
Старый 10.01.2010, 22:04
DJeFRY_RASH
Новичок
Регистрация: 07.04.2009
Сообщений: 19
Провел на форуме:
35427

Репутация: 3
Отправить сообщение для DJeFRY_RASH с помощью ICQ
По умолчанию

Я тоже думал, что не проблема, но преподователь оборвал, сказал сделай так чтобы одинаковые ответы не повторялись.
Вот я и думаю как сделать...
Может что-то наподобии этого добавить ?
Код:
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;
 
Ответить с цитированием

  #2209  
Старый 11.01.2010, 00:30
Algol
Регистрация: 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
 
Ответить с цитированием

  #2210  
Старый 11.01.2010, 15:23
Nelson17
Новичок
Регистрация: 03.12.2008
Сообщений: 13
Провел на форуме:
34545

Репутация: 0
По умолчанию

Прошу помощи!!!

С++!!!!!

Разработать класс, который представляет библиотечную карту. В классе должны быть члены-данные, которые сохраняют информацию об названии книги, автора, год издательства, название издательства, и соответствующие функции-члены для доступа та установления этих данных. В классе должна быть функция вывода данных на экран.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сюда выкладываем все проги для фрикринга мобильников, которых знаем! nigger Сотовый фрикинг 5 11.04.2009 11:15
Американским студентам запретили пользоваться Skype KPOT_f!nd Мировые новости 1 28.09.2006 03:47
Любителям квестов сюда!! FoX's Болталка 10 25.01.2005 20:42



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ