Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
number_118
3 / 3 / 1
Регистрация: 28.09.2018
Сообщений: 258
1

Уплотнение массива перестало работать

18.01.2019, 06:14. Просмотров 1509. Ответов 6

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <stdio.h>
#include <conio.h>
#include <time.h>
#define r 3
#define c 5
#include <stdlib.h>
 
int main (void) {
    
    srand(time(NULL));
    
    int A[r][c], min, min_i = 0, i, j;
    
    for ( i = 0 ; i < r ; i++) {
        
        for ( j = 0 ; j < c ; j++ ) printf("%3d", A[i][j] = rand()%11);
        printf("\n");
    
    }
    
    //...Нахождение минимального...
    min = A[0][0];
    for ( i = 0 ; i < r ; i++ )
        for ( j = 0 ; j < c ; j++ )
            if ( A[i][j] < min ) { min = A[i][j]; min_i = i; }
        
    
    if ( min_i = r - 1 ) return 0; 
    
    else {
    //...Сдвиг строк...
    
    for ( i = min_i ; i < r ; i++ ) 
        for ( j = 0 ; j < c ; j++ ) A[i][j] = A[i+1][j];
    
    //...Вывод конечного массива. Окончательное уплотнение...
    printf("\n");
    for ( i = 0 ; i < r - 1 ; i++ ) {
        
        for ( j = 0 ; j < c ; j++ ) printf("%3d", A[i][j]);
        printf("\n");
        
    }
    }
    getch();
    return 0;
    
}
Уплотнение массива перестало работать


По идее...

Уплотнение массива перестало работать




P.S. Очевидно. можно избавиться от min: обойтись min_i, но это не меняет дело.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.01.2019, 06:14
Ответы с готовыми решениями:

Уплотнение массива по значению
Доброго времени суток. Не получается решить задачу. Дан массив А и нужно из него убрать значения,...

Вдруг Перестало Работать...
Есть форма с кнопкой, в кнопке формула @SetField... в один прекрасный день перестало работать на...

ADODB перестало работать в 8.3
Добрый день, всем. Буду признателен за советы, мысли, как решить неожиданно возникшую проблему с...

Перестало работать охлаждение
Всем привет. Проблема такая: купил проц 3570k и к нему охлаждение GAMMAXX 300, все подключил и...

Поддменю перестало работать
Ребят, помогите, пожалуйста, разобраться с навигацией. Не появляются поддменю и сами стрелки....

6
prik
274 / 180 / 58
Регистрация: 01.03.2011
Сообщений: 484
18.01.2019, 09:20 2
28я строка портит вам min_i
0
TrollHammer
509 / 334 / 170
Регистрация: 22.02.2018
Сообщений: 1,018
Записей в блоге: 2
18.01.2019, 09:27 3
Лучший ответ Сообщение было отмечено number_118 как решение

Решение

Цитата Сообщение от number_118 Посмотреть сообщение
if ( min_i == r - 1 )
Сравнение, а не присваивание
1
number_118
3 / 3 / 1
Регистрация: 28.09.2018
Сообщений: 258
18.01.2019, 21:55  [ТС] 4
TrollHammer, всё равно не гладко...

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <stdio.h>
#include <conio.h>
#include <time.h>
#define r 3
#define c 5
// от английских rows - строки, columns - столбцы
#include <stdlib.h>
 
int main (void) {
    
    srand(time(NULL));
    
    int A[r][c], min, min_i = 0, i, j;
    
    for ( i = 0 ; i < r ; i++) {
        
        for ( j = 0 ; j < c ; j++ ) printf("%3d", A[i][j] = rand()%11);
        printf("\n");
    
    }
    
    //...Нахождение минимального...
    min = A[0][0];
    for ( i = 0 ; i < r ; i++ )
        for ( j = 0 ; j < c ; j++ )
            if ( A[i][j] <= min ) { min = A[i][j]; min_i = i; }
        
    
    if ( min_i == r - 1 ) printf("\nПроверка!\n"); 
    
    else {
    //...Сдвиг строк...
    
    for ( i = min_i ; i < r - 1 ; i++ ) // предпоследняя строка
        for ( j = 0 ; j < c ; j++ ) A[i][j] = A[i+1][j];
    
    //...Вывод конечного массива. Окончательное уплотнение...
    printf("\n");
    for ( i = 0 ; i < r - 1 ; i++ ) {
        
        for ( j = 0 ; j < c ; j++ ) printf("%3d", A[i][j]);
        printf("\n");
        
    }
    }
    getch();
    return 0;
    
}
Уплотнение массива перестало работать


Спасибо.
0
prik
274 / 180 / 58
Регистрация: 01.03.2011
Сообщений: 484
18.01.2019, 22:39 5
Лучший ответ Сообщение было отмечено number_118 как решение

Решение

1. На вашей картинке минимум 1 в первой строке.
2. На картинке в стартовом посте вы пишите "если min_i == 0 ничего не делать", а в коде пишите совсем другое.
2. После сдвига, вы выводите весь массив без последней строки, вне зависимости от того на сколько сдвигали.
1
number_118
3 / 3 / 1
Регистрация: 28.09.2018
Сообщений: 258
18.01.2019, 23:52  [ТС] 6
prik, первые два пункта - это невнимательность.

Вывожу без последней строчки, всё верно. Массив сокращается на одну строку, поскольку нет зависимости от того, где находится min_i

Слава богу, компилятор не сошёл с ума. Ничего не поменял в коде...

Уплотнение массива перестало работать


Спасибо!
0
number_118
3 / 3 / 1
Регистрация: 28.09.2018
Сообщений: 258
19.01.2019, 14:56  [ТС] 7
Даже так

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if ( min_i != r - 1 ) {
    //...Сдвиг строк...
    
    for ( i = min_i ; i < r - 1 ; i++ ) // предпоследняя строка
        for ( j = 0 ; j < c ; j++ ) A[i][j] = A[i+1][j];
    
    //...Вывод конечного массива. Окончательное уплотнение...
    printf("\n");
    for ( i = 0 ; i < r - 1 ; i++ ) {
        
        for ( j = 0 ; j < c ; j++ ) printf("%3d", A[i][j]);
        printf("\n");
        
    }
    }
    getch();
    return 0;
    
}
0
19.01.2019, 14:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.01.2019, 14:56

Перестало работать то, что работало
Привет, Всем! Подскажите кто знает, перестало работать, то что работало, и сообщения об ошибках...

Перестало работать восстановление системы
Здравствуйте! В моем PC после установки различных программ из сети появилась реклама в...

Перестало работать дополнительное поле
Помогите пожалуйста. Стояли дополнительные поля на DLE одно из полей перестало работать без всяких...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru