Opened 5 years ago

Closed 5 years ago

#351 closed ожидается проверка (задача НЕ сдана)

WW #4 yanin.vasiliy

Reported by: Василий Янин Owned by: Дмитрий Лапшин (lapshin)
Component: WW_mergesort Version:
Keywords: Cc:

Description

Я забыл создать тикет(

Change History (8)

comment:1 Changed 5 years ago by Дмитрий Лапшин (lapshin)

Resolution: задача НЕ сдана
Status: assignedclosed

Ващет не собирается по одной банальной как мир причине.

comment:2 Changed 5 years ago by Дмитрий Лапшин (lapshin)

Resolution: задача НЕ сдана
Status: closedreopened
Summary: WW #4WW #4 yanin.vasiliy
Type: ожидается проверкаожидаются исправления

А, вы просили до пятницы продлить. Ждём.

comment:3 Changed 5 years ago by Дмитрий Лапшин (lapshin)

Owner: changed from Дмитрий Лапшин (lapshin) to Василий Янин
Status: reopenedassigned

comment:4 Changed 5 years ago by Василий Янин

Owner: changed from Василий Янин to Дмитрий Лапшин (lapshin)

comment:5 Changed 5 years ago by Василий Янин

Type: ожидаются исправленияожидается проверка

comment:6 Changed 5 years ago by Дмитрий Лапшин (lapshin)

Owner: changed from Дмитрий Лапшин (lapshin) to Василий Янин
Type: ожидается проверкаожидаются исправления

Ну... По правилам конечно подходит. Но я бы не зачёл. Ждём лучшей версии.

comment:7 Changed 5 years ago by Василий Янин

Owner: changed from Василий Янин to Дмитрий Лапшин (lapshin)
Type: ожидаются исправленияожидается проверка

Я попытался что-то сделать, оно не собирается даже

comment:8 Changed 5 years ago by Дмитрий Лапшин (lapshin)

Resolution: задача НЕ сдана
Status: assignedclosed

Стиль:

  1. Отступы. Пробелы. Переносы. Как же трудно это читать. Вот я отформатировал:
    #include "stdio.h"
    
    int main() {
        char a[4];
        int arr[100000];
        int j = 0;
        scanf("%c", a[0]);
        if (a == 'c') {
            for (int i = 1; i < 4; i++)
                scanf("%c", a[i]);
            }
        else
            for (int i = 1; i < 4; i++)
                scanf("%c", a[i]);
    
        int n=0;
        if (a[0] == 'i') {
            while (scanf("%x", arr[j])) {
                j++;
            }
            mergesort(arr*, j, sizeof(int), (*comparator)(const void*, const void*));
            for (int k = 0; k < j; k++)
                printf("%x", arr[k]);
            printf(\n);
        }
        else if (a[0] == 'c') {
            while (scanf("%x", arr[j])) {
                j++;
            }
            mergesort(arr*, j, sizeof(char), (*comparator)(const void*, const void*));
            for (int k = 0; k < j; k++) {
                printf("%x", arr[k]);
                printf(" ");
            }
            printf(\n);
        } else {
            while (scanf("%x", arr[j])) {
                j++;
            }
            mergesort(arr*, j, sizeof(char), (*comparator)(const void*, const void*));
            for (int k=0; k<j; k++) {
                printf("%x", arr[k]);
                printf(" ");
            }
            printf(\n);
        }
        
        return 0;
    }
    

Сразу читать можно.

  1. Имена переменных и магические константы.
  2. Ещё какие-то бесполезные переменные (n?)

Вообще:

  1. Тебе массив подаётся через аргументы, а не с ввода.
  2. printf("\n")?
  3. Цикл с scanf("%c") это попытка изобрести scanf("%‹число›s")?
  4. scanf без указателей (scanf("%d", &n))? А почему %x?
  5. Вызов mergesort: ты вместо аргумента написал объявление аргумента. Надо бы функцию передать:
    int int_comparator(const void *a, const void *b) {
        return (*(const int*)b) - (*(const int*)a);
    }
    
    ///…
    
    int array[] = { 3, 2, 1, 5, };
    mergesort(array, sizeof(array) / sizeof(array[0]), sizeof(array[0]), int_comprarator);
    
  6. merge: массивы неизвестного заранее размера на стеке.
  7. Вообще весь этот код работает только для int. Тебе надо было работать с неизвестными элементами, а это просто наборы char и сдвиги по указателям.
  8. Ну и прочие синтаксические ошибки.

Это 0. Давай другие лабы лучше, рекомендую разобраться. Если есть вопросы — спрашивай у меня, у лектора, пиши на почту.

Note: See TracTickets for help on using tickets.