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

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

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

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

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

Ребята не могли бы вы помочь с прогой, вся прога написана, всё сделано правильно, работает, но заминка в том, что уравнение для расчёта неправильное !
Код:
program xyz;

uses
  SysUtils,
  Windows;

label
  EnterN;

var
  N, i, z   : Integer;
  ans      : Char;



//------------------------------------------------------------------------------
function Ru(str: String): String;         // Функция перевода получаемой строки из ANSI-кодировки в OEM-кодировку DOS.
begin                                     // Начало функции.
  Result := '';                           // Обнуляем результат.
  if Length(str) > 0 then                 // Если получена непустая строка, то
  begin                                   // выполняем код:
    SetLength(Result, Length(str));       // Устанавливаем размер для строки результата.
    CharToOem(PChar(str), PChar(Result)); // Конвертируем строку в OEM-формат (модуль 'Windows.pas').
  end;                                    // Результирующая строка уже в новой кодировке.
end;                                      // Конец функции.



//------------------------------------------------------------------------------
begin
  WriteLn(Ru('Программа для вычисления факториала нечётных чисел:'));         // Вывод информации на экран о назначении программы.
  WriteLn('');
  WriteLn('   N!!! = 1 x 3 x 5 ... x N   ');
  WriteLn('');
  WriteLn(Ru('Выполнил ...'));              // Вывод информации на экран об авторе программы.
  WriteLn('');
  Writeln('...');
  EnterN:                                                                     // Возврат в это место при ошибке или при повторном вводе данных.
    WriteLn('');                                                              // ...
    Write(Ru('Введите нечётное число N, где N > 1 : '));                                     // ...
    ReadLn(N);                                                                // Ввод числа Х.
    if (N <= 1) or (N mod 2=0) then                                                          // Если Х меньше или равен 1, то
    begin                                                                     // выполнить код:
      WriteLn(Ru('Произошла ошибка при вводе, попробуйте ещё раз.'));         // - вывести сообщение об ошибке;
      GoTo EnterN;                                                            // - вернуться к началу;
    end;                                                                      // ...
  WriteLn('');                                                                // ...
  z := 1;                                                                     // Обнуляем переменную результата.
  for i := 1 to N do z := z*(i*2-1);                                          // Увеличиваем переменную результата N раз.
  WriteLn(Ru('Полученный результат: '+IntToStr(z)));                          // Отправить Х на обработку в функцию 'Formula()' и вывести результат.
  WriteLn('');                                                                // ...
  Write(Ru('Вы хотите продолжить работу с программой? (Y/N) : '));            // Предложить продолжить работу с программой.
  ReadLn(ans);                                                                // Получить согласие.
  if (ans='Y') or (ans='y') or (ans=Ru('Н')) or (ans=Ru('н')) then GoTo EnterN; // Если согласие получено - возврат к началу.
end.
Когда запускаешь прогу, просит ввести N, если вводим 5, то получаем такой факториал 1х3х5х7х9, а нужно чтобы 5 была последней цифрой в этом подсчёте, то есть 1х3х5.
Перепробовал многие варианты, не выходит. кто может разобраться, помогите !
 
Ответить с цитированием

  #2152  
Старый 03.01.2010, 18:42
lokli
Новичок
Регистрация: 28.12.2009
Сообщений: 7
Провел на форуме:
119162

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

Перед циклом
Код:
for i := 1 to N do z := z*(i*2-1);
вставь строку
Код:
N:=((N div 2)+1);
этим ты поставиш количество итераций цикла равным количеству непарных чисел до заданного числа N. Код не проверял но должно работать.
 
Ответить с цитированием

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

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

Цитата:
Сообщение от DJeFRY_RASH  
Ребята не могли бы вы помочь с прогой, вся прога написана, всё сделано правильно, работает, но заминка в том, что уравнение для расчёта неправильное !
Код:
program xyz;

uses
  SysUtils,
  Windows;

label
  EnterN;

var
  N, i, z   : Integer;
  ans      : Char;



//------------------------------------------------------------------------------
function Ru(str: String): String;         // Функция перевода получаемой строки из ANSI-кодировки в OEM-кодировку DOS.
begin                                     // Начало функции.
  Result := '';                           // Обнуляем результат.
  if Length(str) > 0 then                 // Если получена непустая строка, то
  begin                                   // выполняем код:
    SetLength(Result, Length(str));       // Устанавливаем размер для строки результата.
    CharToOem(PChar(str), PChar(Result)); // Конвертируем строку в OEM-формат (модуль 'Windows.pas').
  end;                                    // Результирующая строка уже в новой кодировке.
end;                                      // Конец функции.



//------------------------------------------------------------------------------
begin
  WriteLn(Ru('Программа для вычисления факториала нечётных чисел:'));         // Вывод информации на экран о назначении программы.
  WriteLn('');
  WriteLn('   N!!! = 1 x 3 x 5 ... x N   ');
  WriteLn('');
  WriteLn(Ru('Выполнил ...'));              // Вывод информации на экран об авторе программы.
  WriteLn('');
  Writeln('...');
  EnterN:                                                                     // Возврат в это место при ошибке или при повторном вводе данных.
    WriteLn('');                                                              // ...
    Write(Ru('Введите нечётное число N, где N > 1 : '));                                     // ...
    ReadLn(N);                                                                // Ввод числа Х.
    if (N <= 1) or (N mod 2=0) then                                                          // Если Х меньше или равен 1, то
    begin                                                                     // выполнить код:
      WriteLn(Ru('Произошла ошибка при вводе, попробуйте ещё раз.'));         // - вывести сообщение об ошибке;
      GoTo EnterN;                                                            // - вернуться к началу;
    end;                                                                      // ...
  WriteLn('');                                                                // ...
  z := 1;                                                                     // Обнуляем переменную результата.
  for i := 1 to N do z := z*(i*2-1);                                          // Увеличиваем переменную результата N раз.
  WriteLn(Ru('Полученный результат: '+IntToStr(z)));                          // Отправить Х на обработку в функцию 'Formula()' и вывести результат.
  WriteLn('');                                                                // ...
  Write(Ru('Вы хотите продолжить работу с программой? (Y/N) : '));            // Предложить продолжить работу с программой.
  ReadLn(ans);                                                                // Получить согласие.
  if (ans='Y') or (ans='y') or (ans=Ru('Н')) or (ans=Ru('н')) then GoTo EnterN; // Если согласие получено - возврат к началу.
end.
Когда запускаешь прогу, просит ввести N, если вводим 5, то получаем такой факториал 1х3х5х7х9, а нужно чтобы 5 была последней цифрой в этом подсчёте, то есть 1х3х5.
Перепробовал многие варианты, не выходит. кто может разобраться, помогите !

в цикле организуй проверку до вычисления факториала.
те

for i := 1 to N do
begin
if i mod 2 <> 0 then
z := z*i;
end;

ну и формулу чуть подредактировал. а то я не уловил зачем было i*2-1
вот в приципе и всё.
 
Ответить с цитированием

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

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

Ребята
респект, спасибо большое, помогли !
 
Ответить с цитированием

  #2155  
Старый 03.01.2010, 20:34
STIFFmaster
Новичок
Регистрация: 12.12.2009
Сообщений: 10
Провел на форуме:
14658

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

Помогите, пожалуйста. Буду признателен.
Дана целочисельная матрица. Отсортировать строки матрицы относительно первого элемента строки по убыванию.
 
Ответить с цитированием

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

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

Цитата:
Сообщение от STIFFmaster  
Помогите, пожалуйста. Буду признателен.
Дана целочисельная матрица. Отсортировать строки матрицы относительно первого элемента строки по убыванию.
не хочу всю программу расписывать...
просто проверяешь соседние элементы в строке если
a[i,j] > a[i,j+1] then
begin
x:=a[i,j+1];
a[i,j+1]:=a[i,j];
a[i,j]:=x;
end;
 
Ответить с цитированием

  #2157  
Старый 03.01.2010, 22:10
XimiK69
Новичок
Регистрация: 02.01.2010
Сообщений: 26
Провел на форуме:
33560

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

Цитата:
Сообщение от STIFFmaster  
Помогите, пожалуйста. Буду признателен.
Дана целочисельная матрица. Отсортировать строки матрицы относительно первого элемента строки по убыванию.
PHP код:
#include <iostream>
using namespace std;

int main()
{
    
int l 0;
    
int a[3][3] = {
                   
3,7,3,
                   
4,2,8,
                   
6,8,1
                  
};
    for(
int i 03i++)
    {

        for(
int j 13j++)
        {
            
int t a[i][j], 0;
            for(
l=j-1; (>= 0)&&(a[i][l] < t); l--)
            { 
a[i][l+1]=a[i][l]; }
            
a[i][l+1] = t;
        }
    }
    for(
int i 03i++)
    {
        for(
int j 03j++)
        { 
cout << a[i][j] <<"  "; }
        
cout << endl;
    }
    return 
0;

 
Ответить с цитированием

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

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

Цитата:
Сообщение от XimiK69  
PHP код:
#include <iostream>
using namespace std;

int main()
{
    
int l 0;
    
int a[3][3] = {
                   
3,7,3,
                   
4,2,8,
                   
6,8,1
                  
};
    for(
int i 03i++)
    {

        for(
int j 13j++)
        {
            
int t a[i][j], 0;
            for(
l=j-1; (>= 0)&&(a[i][l] < t); l--)
            { 
a[i][l+1]=a[i][l]; }
            
a[i][l+1] = t;
        }
    }
    for(
int i 03i++)
    {
        for(
int j 03j++)
        { 
cout << a[i][j] <<"  "; }
        
cout << endl;
    }
    return 
0;

хе хоть в C и не шарю пока особо.
товарищ зачем заранее матрицу и элементы определять?)
меня б в универе за это уже на кол посадили )
 
Ответить с цитированием

  #2159  
Старый 03.01.2010, 22:15
XimiK69
Новичок
Регистрация: 02.01.2010
Сообщений: 26
Провел на форуме:
33560

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

просто проверил алгоритм на этом примере, хотя с тобой согласен.....на константах работать нельзя....
 
Ответить с цитированием

  #2160  
Старый 03.01.2010, 23:41
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 раз.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сюда выкладываем все проги для фрикринга мобильников, которых знаем! 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



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


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




ANTICHAT.XYZ