• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Нужно вставить счетчик операций в программу

  • Автор темы Tanzilit
  • Дата начала
Статус
Закрыто для дальнейших ответов.
T

Tanzilit

Здравствуйте товарищи программеры
тут такая ситуация
Есть уже написанная прога(с правилами я ознакомлен и не прошу за меня вам писать прогу,да это и не требуется)
Единственно в чем я вас прошу помочь:
1)Протестить прогу(я тестил на досовском с++ 3.1 и чет тупит, хотя в коде ошибок не заметил)
2)необходимо встроить в нее счетчик операций а увы не умею ;) Помогите плиз.Вам это должно быть не трудно а мне очень поможете!
Итак условие задачи:
Дан массив целых, положительных, ограниченных сверху чисел. Определить наиболее часто встречающуюся подряд тройку чисел
Решение:
Код:
#include<stdio.h>
#include<mem.h>
#include<stdlib.h>

#define MAX 8 //Ограничивающее число
#define MAXMS 1024 //Размер массива

void main()
{
int i, i1, i2, j, n1, n2, n3;
int ms[MAXMS], //Наш массив
kms[MAX][MAX][MAX]; //Массив под комбинации

//Обнуляем массив
memset( kms, 0, MAX * MAX * MAX * sizeof(int) );

//Заполняем массив случайным образом в указанных пределах
randomize( );
for( i = 0; i < MAXMS; i ++ )
ms[i] = random( MAX );

//Ищем кол-во каждой комбинации
for( i = 0; i < MAXMS; i += 3 ){
if( i + 2 > MAXMS ) break;
kms[ms[i]][ms[i + 1]][ms[i + 2]] ++;
}

//Ищем наиболие встречающуюся комбинацию
for( j = 0, i = 0; i < MAX; i ++ )
for( i1 = 0; i1 < MAX; i1 ++ )
for( i2 = 0; i2 < MAX; i2 ++ )
if( j < kms[i][i1][i2] ){
j = kms[i][i1][i2];
n1 = i;
n2 = i1;
n3 = i2;
}

//Теперь n1 n2 n3 - искомая тройка чисел встречается j раз
printf( "%d %d %d - %d", n1, n2, n3, j );
}

p.s.Еще раз повторюсь - Необходимо начертить таблицу по типу
размерность массива|колл-во операций
ну то бишь как от размерности массива изменяется колл-во операций
для этого надо встроить счетчик операций в прогу
Заранее благодарен!
 
T

Tanzilit

Снова здравствуйте в общем вот:
Код:
#include<stdio.h>
#include<mem.h>
#include<stdlib.h>

#define MAX 4 //ogranihevauhee 4islo
#define MAXMS 256 //Razmer Massiva

void main()
{
int i, i1, i2, j, n1, n2, n3;
int ms[MAXMS], //Our Massive
kms[MAX][MAX][MAX]; //massiv pod kombinazii

//obnulaem massive
memset( kms, 0, MAX * MAX * MAX * sizeof(int) );

//zapolnaem massive slu4aynim obrazom v ukazannih predelax
randomize( );
for( i = 0; i < MAXMS; i ++ )
ms[i] = random( MAX );

//ishem koll-vo kajdoi kombinazii
for( i = 0; i < MAXMS; i += 3 ){
if( i + 2 > MAXMS ) break;
kms[ms[i]][ms[i + 1]][ms[i + 2]] ++;
}

//ishem naibolee vstre4aushuusa kombinaziu
int count = 0; //***
for( j = 0, i = 0; i < MAX; i ++ )
for( i1 = 0; i1 < MAX; i1 ++ )
for( i2 = 0; i2 < MAX; i2 ++ )
{
count++;	  //***
if( j < kms[i][i1][i2] )
{
j = kms[i][i1][i2];
n1 = i;
n2 = i1;
n3 = i2;
}
}
for( i = 0; i < MAXMS; i++ )
printf(" %d ", ms[i]);
printf("Razmernost massiva = %d\nkoll-vo operaciy = %d\n",MAXMS,count); //***
//teper n1 n2 n3 - iskomaya troika 4isel vstre4aushayasaя j raz
printf( "%d %d %d - %d", n1, n2, n3, j );
}
Коментарии на латинском тк сдаваться это дело будет в досовском си
просьба
1) проверить работоспособность в соответствии с условием(1 пост темы)
2) проверить верно ли считает колличество операций(как я понял от размерности массива оно не зависит а зависит от ограничивающего числа)
кстати еще вопрос возник - а что данная прога выведет если троек не будет найдено? видимо какой то бред наврно надо подправить...если кто может этим помочь плиз хелп
В задании нужно ПОДСЧИТАТЬ ЗНАЧИМЫЕ ОПЕРАЦИИ.Ка кэто понимать хз,но сказано так
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!