Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Одномерный массив!Помогите дописать код 
:(
    Опции темы
Soah
Дата 10.6.2009, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 512
Регистрация: 18.2.2009

Репутация: 6
Всего: 54



Цитата(zim22 @  10.6.2009,  11:58 Найти цитируемый пост)
Soah, почитал. это всё не то.

да я уже понял, опять решал другую задачу

Добавлено через 13 минут и 50 секунд
Recommended Use
Цитата

When should you use function try blocks? First, remember that you can't return a value inside a function-try-block handler. So it makes no sense to use a function try block for a non-void function.

PM MAIL   Вверх
aleksejj
Дата 10.6.2009, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 9.6.2009

Репутация: нет
Всего: нет



 smile 
PM MAIL   Вверх
aleksejj
  Дата 10.6.2009, 21:34 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 9.6.2009

Репутация: нет
Всего: нет



 smile  smile  smile 
PM MAIL   Вверх
andrew_121
Дата 10.6.2009, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



aleksejj, Чего спамишь? Бан хочешь?


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
andrew_121
Дата 11.6.2009, 05:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



Код

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>

#define PRINT_SERIES(ser, cnt) { \
    series *p = NULL; \
    for ( p = ser; p != ser+cnt; p++ ) { \
        printf("SER: 0x%08X BEG: 0x%08X-%4d END: 0x%08X-%4d\n", p, p->beg, *p->beg, p->end, *p->end); \
    } \
} \

void ClearScreen() {
    COORD c = {0,0};
    DWORD whocares;
    FillConsoleOutputCharacter(GetStdHandle(STD_OUTPUT_HANDLE),' ',2000,c,&whocares);
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), c);
}

/***************************************************************************/

typedef struct series {
    int *beg;
    int *end;
} series;

/***************************************************************************/

int count_series(int *beg, int *end) {
    int v = 0;
    int count = 0;
    while ( beg != end ) {
        v = *beg;
        while ( *beg == v && beg != end ) {
            beg++;
            v++;
        }
        count++;
    }
    return count;
}

/***************************************************************************/

void get_series(int *beg, int *end, series *sea) {
    int v = 0;
    int count = 0;
    while ( beg != end ) {
        sea->beg = beg;
        v = *beg;
        for ( ; *beg == v && beg != end; beg++ ) {
            v++;
        }
        sea->end = beg-1;
        count++;
        sea++;
    }
}

/***************************************************************************/

int get_max_series_length(series *beg, series *end) {
    int _max = 0;
    while ( beg != end ) {
        _max = max(beg->end - beg->beg, _max);
        beg++;
    }
    return _max;
}

/***************************************************************************/

int count_max_series(series *beg, series *end, int len) {
    int count = 0;
    while ( beg != end ) {
        if ( beg->end-beg->beg == len ) {
            count++;
        }
        beg++;
    }
    return count;
}

/***************************************************************************/

int main(int argc, char** argv) {

    const int sizeof_int = sizeof(int);
    int maxserlen = 0;
    int maxsercnt = 0;
    int idx = 0;
    int size = 10;
    int count = 0;
    int any_allocated_size = 0;
    int *array_beg = NULL;
    int *result_arr= NULL;
    int *result_arr_curp= NULL;
    int *array_end = NULL;
    series *series_arr = NULL;
    series *series_arr_curp= NULL;
    series *maxser_arr= NULL;

    ClearScreen();
    /* get array_beg size */
//    printf("Choose the size of array_beg: "); fscanf(stdin, "%d", &size);
    if ( size == 0 ) {
        printf("You enter the zero size. Exiting.\n");
        return 0;
    }
    /* allocating memory */
    array_beg = (int*)malloc(size*sizeof_int);
    array_end = array_beg + size;
    /* check if memory allocated */
    if ( array_beg == NULL ) {
        printf("Cannot allocate memory! Exiting.\n");
        return 1;
    }
    /* fill the array_beg */
/*    for ( ; idx < size; idx++ ) {
        array_beg[idx] = rand()%100;
        printf("%d\n", array_beg[idx]);
    }
    printf("\n");
*/
#if 1
    size = 10;
    array_beg[0] = 0;
    array_beg[1] = 1;
    array_beg[2] = 2;
    array_beg[3] = 3;
    array_beg[4] = 5;
    array_beg[5] = 6;
    array_beg[6] = 7;
    array_beg[7] = 8;
    array_beg[8] = 9;
    array_beg[9] = 11;
#endif
    for ( ; idx < size; idx++ ) {
        printf("%d\n", array_beg[idx]);
    }
    printf("\n");
    /* count the series */
    count = count_series(array_beg, array_beg+size);
    /* allocating memory */
    series_arr = (series*)malloc(sizeof(series)*count);
    /* check if memory allocated */
    if ( series_arr == NULL ) {
        printf("Cannot allocate memory! Exiting.\n");
        free(array_beg);
        return 1;
    }
    /* get pointers on a series */
    get_series(array_beg, array_beg+size, series_arr);
    
    PRINT_SERIES(series_arr, count);
    
    /* get the maximum length of series */
    maxserlen = get_max_series_length(series_arr, series_arr+count);
    /* count the maximum length series */
    maxsercnt = count_max_series(series_arr, series_arr+count, maxserlen);
    /* alloc the new array_beg */
    any_allocated_size = (size*sizeof_int)+(maxsercnt*sizeof_int);
    result_arr_curp=result_arr = (int*)malloc(any_allocated_size);
    /* check if memory allocated */
    if ( series_arr == NULL ) {
        printf("Cannot allocate memory! Exiting.\n");
        free(array_beg);
        free(series_arr);
        return 1;
    }
    series_arr_curp = series_arr;
    while ( series_arr_curp != series_arr+count ) {
        any_allocated_size = (series_arr_curp->end-series_arr_curp->beg+1)*sizeof_int;
        memcpy(result_arr_curp, series_arr_curp->beg, any_allocated_size);
        result_arr_curp += series_arr_curp->end-series_arr_curp->beg+1;
        if (series_arr_curp->end-series_arr_curp->beg+1 == maxserlen) {
            *result_arr_curp = *series_arr_curp->end+1;
            result_arr_curp++;
        }
        series_arr_curp++;
    }
    
    for ( idx = 0; idx < size+maxsercnt; idx++ ) {
        printf("%d\n", result_arr[idx]);
    }

    free(array_beg);
    free(series_arr);
    free(result_arr);
    
    return 0;
}

/***************************************************************************/



Это сообщение отредактировал(а) andrew_121 - 15.6.2009, 02:19


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
andrew_121
Дата 11.6.2009, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



Гм...
Спасибо.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0449 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.