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

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

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

  #461  
Старый 29.04.2008, 19:51
desTiny
Reservists Of Antichat - Level 6
Регистрация: 04.02.2007
Сообщений: 1,152
Провел на форуме:
3008839

Репутация: 1502


По умолчанию

Цитата:
Сообщение от BaleHoK  
выручайте...Имеется непустая последовательность произвольных натуральных чисел (чисел не более 50), за которой следует нуль. Не используя массивов, вывести в строку поряд¬ковые номера максимальных чисел последовательности. Выполнить проверку пра¬вильности ввода информации...

Язык С или С++...только не Vc
Что-то, по-моему, без массивиов это невозможно... Хотя бы потому, что нам надо где-то хранить саму нашу последовательность...
__________________
Bedankt euch dafür bei euch selbst.

H_2(S^3/((z1, z2)~(exp(2pi*i/p)z1, exp(2pi*q*i/p)z2)))=Z/pZ
 
Ответить с цитированием

  #462  
Старый 29.04.2008, 20:19
Delimiter
Banned
Регистрация: 08.04.2005
Сообщений: 446
Провел на форуме:
2187381

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

хмммм.... максимальных чисел??? Это как??? Их много чтоль...

и в чем фишка???
Код:
char str[100]; // если контроль ввода то масив под 
                      //строку символов должен существовать АКСИОМА!
char rez[100]; //строка для вывода результата
char smb;
int schetchik=0;
int index=0;
int max=0;
ex=0;
while(ex==0)
{
 -->ввод символа в smb метод ввода твой на выбор
  switch(smb)
  {
    case '0':
    case '1':
    case '2':
    case '3':
    case '4':
    case '5':
    case '6':
    case '7':
    case '8':
    case '9':
      str[index]=smb;
      index++
      break;
//    case ' ':  можно разремировать эти строки но тогда
//    case ',':  нужно увеличивать размер под буфер ввода str
//                  но позволит использовать пробел и запятую
//                 как разделители между числами      
    case 0x0d:
      str[index]=0;
      if(strlen(str)>0)
      {
         if(atoi(str)==max)
         {
           strcat(rez,itoa(schetchik,rez+80,10));
           strcat(rez," ");
         }
         else
           if(atoi(str)>max)
           {
              max=atoi(str);
              strcpy(rez,itoa(schetchik,rez+80,10));
              strcat(rez," ");
           }
         schetchik++;
         if(atoi(str)==0)
           ex=1;
      }          
      index=0;
   }
}
printf("%s",rez);
ЧИСЛО СЧИТАЕТСЯ ВВЕДЕННЫМ ЕСЛИ НАЖАТ ЭНТЕР!
(или так же запятая и пробел если разремируешь и
хотя бы сделаешь str[1000]

Последний раз редактировалось Delimiter; 29.04.2008 в 20:38..
 
Ответить с цитированием

  #463  
Старый 29.04.2008, 21:54
WinTREI
Новичок
Регистрация: 14.03.2008
Сообщений: 28
Провел на форуме:
39192

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

спасибо, но я уже написал используя основы De-visible
получилось примерно так
Код:
 Program Kontra2;
Uses crt;
type mas= array[1..100] of integer;{массив который мы будем анализировать}
var
 i,Nmax,menu,n:integer;
 A:Mas;
 f:boolean;

Procedure vvod( var A:Mas; var n:integer; var f:boolean);   {Ввод массива}
  Var I: integer;
    Begin
    writeln('Сколько элементов массива? ');
    readln(n);
    for I:=1 to n do
      Begin
        Write('Введите элемент # ',i,' ');
        Readln(A[i]);
      end;
    f:=true;
end;

function max(A:mas; n:integer):integer;
var
i:integer;
buff:integer;
Begin
     buff:=A[1];
     For i:=1 to n Do
     If A[i]>buff then buff:=A[i];
     max:=buff;
End;

procedure zamena(var A:mas; var n:integer; var max:integer);
var
i:integer;
Begin
  For i:=1 to n Do
    Begin
      If A[i]>0 then
      If (A[i] mod 5) = 0 then A[i]:=max;
    End;
End;

procedure randmas(var A:mas; var n:integer; var f:boolean); {создание случайного массива}
var
i:integer;
  begin
  i:=1;
  write('из скольки элементов хотите массив? ');
  readln(n);
    for i:=1 to n do
      begin
      A[i]:=random(200);
      end;
    f:=true;
  end;

Procedure Vuvod( A:Mas; var n:integer);   {Вiвод массива}
Var I: integer;
  Begin
  for I:=1 to n do
    Begin
    Write(A[i],' ');
    end;
  writeln;
end;

Begin
 f:=false;
 randomize;
 while true do
 Begin
 clrscr;
 {ввожу массивы}
writeln('1. Ввод массива целых чисел');
writeln('2. Вывод массива случайных целых чисел');
writeln('3 Найти максимальный элемент');
writeln('  Заменить все положительные элементы кратные 5 на максимальный');
writeln('4. Завершить работу');
write('Ваш выбор: ');
readln(menu);
case menu of
  1: begin
     vvod(A,n,f);
     readln;
     end;
  2: begin
     randmas(A,n,f);
     vuvod(A,n);
     readln;
     end;
  3: begin
     vuvod(A,n);
     Nmax:=max(A,n);
     zamena(A,n,Nmax);
     vuvod(A,n);
     readln;
     end;
  4: break;
  else writeln('!!!ВЫБЕРИТЕ ВЕРHЫЙ ПУHКТ МЕHЮ (1-4)!!!');
  readln;
  end;
 end;
end.

De-visible:А он не твою задачу решал....Он решил задачу для Stern.

Последний раз редактировалось De-visible; 29.04.2008 в 22:09..
 
Ответить с цитированием

  #464  
Старый 30.04.2008, 09:22
BaleHoK
Участник форума
Регистрация: 30.09.2007
Сообщений: 116
Провел на форуме:
140305

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

Цитата:
Сообщение от desTiny  
Что-то, по-моему, без массивиов это невозможно... Хотя бы потому, что нам надо где-то хранить саму нашу последовательность...
Можно было и с массивами,преподу на ето пох)))))

Delimiter а тебе +++++ от меня)))))))


ещё подкину задачку Нужна прога по переводу чисел из 2,8,10,16 систем счисления и обратно...что то типа этого http://rapidshare.com/files/111430028/perev.exe.html

Так же на С или С++ ))))))))))))

Последний раз редактировалось BaleHoK; 30.04.2008 в 09:24..
 
Ответить с цитированием

  #465  
Старый 30.04.2008, 13:49
krypt3r
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме:
3660186

Репутация: 905


По умолчанию

Код на языке C, преобразующий число из одной системы счисления в другую (а не только 2, 8, 10, 16). Принимает в качестве аргументов число (целое положительное), его систему счисления и систему счисления, в которую надо преобразовать. Сорри, лень оптимизить =)
Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

#define MAXSIZE 255

char *ReverseStr (char *s)
{
  int i = 0, j, len;
  char s2 [MAXSIZE];

  len = strlen (s);
  j = len - 1;
  bzero (s2, len + 1);
  while (j >= 0)
  {
    s2 [i++] = s [j--];
    //i++;
    //j--;
  }
  return s2;
}

int convertToDec (char *in, int in_ss)
{
  int len = strlen (in), i, j = 0;
  int N = 0;

  i = len - 1;
  printf ("i = %d\n", i);
  while (i >= 0)
  {
    if ((in [i] >= '0') && (in [i] <= '9'))
      in [i] -= 0x30;
    if ((in [i] >= 'a') && (in [i] <= 'f'))
      in [i] -= 0x57;
    N += in [i] * (int) (pow (in_ss, j));
    i--;
    j++;
  }
  //printf ("%d\n", N);
  return N;
}

char *convert (int number, int out_ss)
{
  int ost = 1, i = 0;
  char out_num [MAXSIZE];

  memset (out_num, '\0', MAXSIZE);
  while (number >= out_ss)
  {
    ost = number % out_ss;
    number = (int) (number / out_ss);
    if ((ost >= 0) && (ost <= 9))
      out_num [i] = ost + 0x30;
    else if ((ost >= 10) && (ost <= 15))
      out_num [i] = ost + 0x57;
    if (number < out_ss)
    {
      i++;
      if ((number >= 0) && (number <= 9))
        out_num [i] = number + 0x30;
      if ((number >= 10) && (number <= 15))
        out_num [i] = number + 0x57;
      //out_num [i] = number + 0x30;
    }
    //printf ("Number: %d\tOst: %d\n", number, ost);
    i++;
  }

  //printf ("Out: %s\n", ReverseStr (out_num));
  return ReverseStr (out_num);
}

int main (int argc, char** argv)
{
  char *in_number, *out_number;
  int in_system, out_system, dec_number;

  if (argc != 4)
  {
    printf ("Usage: %s [number input_system output_system]\n", argv [0]);
    return 0;
  }
  in_number = argv [1];
  in_system = atoi (argv [2]);
  out_system = atoi (argv [3]);
  if (in_system == 10)
    dec_number = atoi (in_number);
  else
    dec_number = convertToDec (in_number, in_system);

  //printf ("DEC: %d\n", dec_number);
  printf ("Input number: %s\n", in_number);
  printf ("Input system: %d\n", in_system);
  printf ("Output system: %d\n", out_system);
  printf ("Output number: ");
  if (out_system != 10)
  {
    out_number = convert (dec_number, out_system);
    printf ("%s\n", out_number);
  }
  else
    printf ("%d\n", dec_number);

  return 0;
}
ЗЫ. Давно хотел этот код написать, да руки все не доходили.
 
Ответить с цитированием

  #466  
Старый 30.04.2008, 13:58
Delimiter
Banned
Регистрация: 08.04.2005
Сообщений: 446
Провел на форуме:
2187381

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

2 krypt3r

.... а вдрух ему было достаточно

unsigned long l=strtoul(str,0,base1);
ultoa(l,str,base2);

??? Я БАЮСЬ ТАКИФ ЗАДАЧ!
 
Ответить с цитированием

  #467  
Старый 30.04.2008, 14:26
krypt3r
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме:
3660186

Репутация: 905


По умолчанию

Я с этими функциями раньше не работал, так что писал то, что в голове было. За подсказку сенкс.
/me ушел читать маны
 
Ответить с цитированием

  #468  
Старый 02.05.2008, 11:37
Mosvit
Познающий
Регистрация: 05.03.2007
Сообщений: 99
Провел на форуме:
744734

Репутация: 44
Exclamation

Pascal

Помогите исправить программу, есть такое задание: Поменять местами первый и последний, второй и предпоследний и т.д. столбцы исходной матрицы. (матрица вида 6*6)

Вот что у меня получилось, но мне нужно чтобы она автоматически меняла местами столбцы (первый - последний, второй-предпоседний, ...), а она просит ввода с клавиатуры номеров столбцов, хотя я этого вроде не задавал.
Код:
program pr7;
uses crt;
 const n=6; m=6;
 a:array[1..n,1..m] of real=((0,2,1,2,5,6),
                             (4,5,7,8,1,8),
                             (0,6,2,3,3,4),
                             (5,6,1,9,7,1),
                             (1,2,3,4,5,6),
                             (6,5,4,3,2,1));
 var i,j,k:integer;
 u:real;
 begin
  clrscr;
  read(i,j);
 clrscr;
 for k:=1 to n do
 begin u:=a[k,j]; a[k,j]:=a[k,i];a[k,i]:=u;
 end;
 for j:=1 to n do
 begin for i:=1 to m do write(a[j,i]:3:0);
 writeln;
 end;
 readkey;
 end.
 
Ответить с цитированием

  #469  
Старый 02.05.2008, 11:54
criz
Постоянный
Регистрация: 04.11.2007
Сообщений: 303
Провел на форуме:
811764

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

Цитата:
Сообщение от Mosvit  
Pascal
а она просит ввода с клавиатуры номеров столбцов, хотя я этого вроде не задавал.
Просит потому, что:
Код:
  read(i,j);
 
Ответить с цитированием

  #470  
Старый 02.05.2008, 12:25
Mosvit
Познающий
Регистрация: 05.03.2007
Сообщений: 99
Провел на форуме:
744734

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

Цитата:
Сообщение от criz  
Просит потому, что:
Код:
  read(i,j);
а как изменить её чтобы автоматически меняла столбцы?
И ещё вопрос, как упорядочить побочную диагональ у этой матрицы по возрастанию? Я написал:
Код:
for i:=1 to n do
begin 
pd:=a[i,n-i+1];
writeln(pd:3:0);
end
А как переставить её значения по-возрастанию не понимаю.
 
Ответить с цитированием
Ответ



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