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

Тема в разделе "Общие вопросы по С и С++", создана пользователем Tanzilit, 8 дек 2007.

Статус темы:
Закрыта.
  1. Tanzilit

    Tanzilit Гость

    Здравствуйте товарищи программеры
    тут такая ситуация
    Есть уже написанная прога(с правилами я ознакомлен и не прошу за меня вам писать прогу,да это и не требуется)
    Единственно в чем я вас прошу помочь:
    1)Протестить прогу(я тестил на досовском с++ 3.1 и чет тупит, хотя в коде ошибок не заметил)
    2)необходимо встроить в нее счетчик операций а увы не умею ;) Помогите плиз.Вам это должно быть не трудно а мне очень поможете!
    Итак условие задачи:
    Дан массив целых, положительных, ограниченных сверху чисел. Определить наиболее часто встречающуюся подряд тройку чисел
    Решение:
    Код (Text):
    #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.Еще раз повторюсь - Необходимо начертить таблицу по типу
    размерность массива|колл-во операций
    ну то бишь как от размерности массива изменяется колл-во операций
    для этого надо встроить счетчик операций в прогу
    Заранее благодарен!
     
  2. Tanzilit

    Tanzilit Гость

    Снова здравствуйте в общем вот:
    Код (Text):
    #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) проверить верно ли считает колличество операций(как я понял от размерности массива оно не зависит а зависит от ограничивающего числа)
    кстати еще вопрос возник - а что данная прога выведет если троек не будет найдено? видимо какой то бред наврно надо подправить...если кто может этим помочь плиз хелп
    В задании нужно ПОДСЧИТАТЬ ЗНАЧИМЫЕ ОПЕРАЦИИ.Ка кэто понимать хз,но сказано так
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей