Форум программистов, компьютерный форум, киберфорум
Наши страницы

C для начинающих

Войти
Регистрация
Восстановить пароль
 
Frost_Burn
0 / 0 / 0
Регистрация: 08.07.2013
Сообщений: 15
#1

Найти минимальный элемент среди элементов, расположенных в нечетных строках массива - C (СИ)

08.07.2013, 14:46. Просмотров 856. Ответов 6
Метки нет (Все метки)

Цель лабораторной работы: получить навыки по обработке двумерных массивов с помощью языка Си.
Дан массив A[5,5]. Найти минимальный элемент среди элементов, расположенных в нечетных строках массива.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.07.2013, 14:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти минимальный элемент среди элементов, расположенных в нечетных строках массива (C (СИ)):

Найти минимальный элемент среди элементов, расположенных в нечетных строках массива - C (СИ)
Решите задачу с помощью двумерных массивов. Дан массив A. Найти минимальный элемент среди элементов, расположенных в нечетных строках...

Найти минимальный элемент массива среди положительных элементов, расположенных левее первого нуля - C (СИ)
Дан целочисленный вектор A(n). Найти минимальный элемент среди положительных элементов, расположенных левее первого элемента, равного нулю.

Найти минимальный элемент среди положительных элементов, расположенных левее первого элемента, равного нулю - C (СИ)
Пишет что нет нулевого, даже когда ввожу 0, и посмотрите другие ошибки. СРОЧНО НУЖНО!!! int main() { int A; int...

Найти минимальный элемент среди положительных элементов массива А - C (СИ)
Помогите с программой, кому не сложно. Буду весьма благодарен. Условие ниже. Найти минимальный элемент среди положительных элементов...

Найти количество элементов массива, меньших S и расположенных в строках с нечетными номерами - C (СИ)
Найти количество элементов, небольших S и расположенных в строках с нечетными номерами. Я вроде как сделал, но вот на экран выводит...

Найти максимальный элемент среди элементов, расположенных выше побочной диагонали - C (СИ)
помогите пожалуйста!!!! Дан массив A. Найти максимальный элемент среди элементов, расположенных выше побочной диагонали. Поменять местами...

6
Neoni
6 / 6 / 6
Регистрация: 17.05.2012
Сообщений: 35
Завершенные тесты: 1
16.07.2013, 19:17 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
как то так
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
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <conio.h>
const int SIZE = 5;
int main()
{int nMas[SIZE][SIZE];
 srand(time(NULL));
 for(int i = 0; i < SIZE; i++)  //заполнения массива случайными числами
     { for(int j = 0; j < SIZE; j++)
           nMas[i][j] = rand()%100 +1;
     }
 int min = nMas[0][0];
 for(int i = 0; i < SIZE; i++)
     { if(((i+1)%2) != 0 )
          {for(int j = 0; j < SIZE; j++ )
               {if(nMas[i][j] < min)
                   min = nMas[i][j];
               }
          }
     }
 printf("Massiv A[%d][%d]\n",SIZE,SIZE);
 for (int i = 0; i < SIZE; i++)
      {for(int j = 0;j < SIZE; j++)
           {printf("%5d ",nMas[i][j]);}
       printf("\n");    
      }
printf("min = %d",min) ;     
getch();   
return 0;}
0
fanatdebian
Z3JheSBoYXQ=
337 / 232 / 35
Регистрация: 08.07.2012
Сообщений: 577
16.07.2013, 20:41 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
 
#define SIZE 5
 
int FindMinValueMatrix(int **matrix, int array_matrix);
int** GenerateMatrix(int size_matrix);
void ViewMatrix(int **matrix, int array_matrix);
 
int main()
{
    
    int **pMatrix = GenerateMatrix(SIZE);
    if (pMatrix == NULL){
        printf("Error generate matrix\n");
    } else {
        printf("Matrix success generate\n");
        ViewMatrix(pMatrix, SIZE);
        printf("\n\n");
        printf("Минимальное значение в нечетных строках равно: %2d\n", FindMinValueMatrix(pMatrix, SIZE));
    }                   
    return 0;
}
 
int** GenerateMatrix(int size_array){
    
    static int **matrix = {NULL};
    int **result = NULL;
    
    if (NULL==(matrix = (int**) calloc(size_array, sizeof(int*)))){
        printf("error calloc memory for %3d memory block\n", size_array*size_array);
    } else {
        srand(time(NULL));
        int i = 0, j = 0;
        for(i = 0; i < size_array; i++){
            if (NULL==(matrix[i] = calloc(size_array, sizeof(int)))){
                printf("error calloc memory block\n");
            }       
            for(j =0;j < size_array; j++){
                matrix[i][j] = rand()%99;           
            }
        }
        result = matrix;
    }
    return result;
}
            
int FindMinValueMatrix(int **matrix, int array_matrix){
    int i,j;
    int min = 0, flag = 1;
    for(i = 0; i < array_matrix; i++){                  
        if (i%2) {          
            for(j = 0;j < array_matrix; j++){
                if (flag) {
                    min = matrix[i][j];
                    flag = 0;
                } else {
                    min = matrix[i][j] < min ? matrix[i][j]:min;                            
                }               
            }
            printf("Min in line #%2d  min: %2d\n", i, min);             
        }
    }   
    return min;
}
void ViewMatrix(int **matrix, int array_matrix) {
    int i,j;
    
    for(i = 0; i < array_matrix; i++){                  
        printf("Line #%2d: ", i);
        for(j = 0;j < array_matrix; j++){
            printf("%4d ", matrix[i][j]);
        }
        printf("\n");
    }
}
C
1
2
3
4
5
6
7
8
9
10
11
12
13
Matrix success generate
Line # 0:   78   37   36   73   70 
Line # 1:   26   68    0   70   72 
Line # 2:    4   33   34   11   33 
Line # 3:   42    1   39    6   36 
Line # 4:   70   17    3   59   20 
 
 
Min in line # 1  min:  0
Min in line # 3  min:  0
Минимальное значение в нечетных строках равно:  0
 
[spouk@/mnt/big1gb/hddDevelop/source/c/2013$]
0
ERAGORN
0 / 0 / 2
Регистрация: 07.09.2012
Сообщений: 6
16.07.2013, 21:43 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include <stdlib.h>
#include <stdio.h>
 
 
int main(void){
    enum { SIZE = 5 };
    
    const int mas[SIZE][SIZE] = { { 1, 2, 3, 4,5},
                                  { 9, 9, 5, 4,2},
                                  {-1,-7,-4, 9,5},
                                  { 0, 0,-7, 0,1},
                                  { 7, 7,-4,-7,1} };
    
    
    int min = mas[0][0];
    
    for (int i = 0; i < SIZE; i += 2){
        for (int j = 0; j < SIZE; ++j){
            if (mas[i][j] < min)  min = mas[i][j];
        }
    }
    
    printf("min: %d\n", min);
    
    return EXIT_SUCCESS;
}
0
duhast_vladisla
Заблокирован
17.07.2013, 22:57 #5
fanatdebian, выделенная память не освобождается. Много лишних вызовов calloc. Лучше выделить память так:
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
#include <stdio.h>
#include <stdlib.h>
 
#define SIZE (5)
 
int main ()
{
    int ** point = NULL;
    int * matrix = NULL;
    int i = 0, j;
 
    point = malloc(SIZE * sizeof(int*));
    matrix = malloc(SIZE * SIZE * sizeof(int));
 
    for (; i < SIZE; i++)
        point [i] = matrix + (i * SIZE);
 
    for (i = 0; i < SIZE; i++)
    {
        for (j = 0; j < SIZE; j++)
        {
            point [i][j] = i + j;
            printf("%4i", point [i][j]);
        }
        putchar('\n');
    }
    
    return 0;
}
*alloc не принципиально, т.е. я не хочу подчеркнуть что лучше дергать malloc чем calloc, просто написал так.
0
fanatdebian
Z3JheSBoYXQ=
337 / 232 / 35
Регистрация: 08.07.2012
Сообщений: 577
17.07.2013, 23:08 #6
Цитата Сообщение от duhast_vladisla Посмотреть сообщение
fanatdebian, выделенная память не освобождается. Много лишних вызовов calloc. Лучше выделить память так:
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
#include <stdio.h>
#include <stdlib.h>
 
#define SIZE (5)
 
int main ()
{
    int ** point = NULL;
    int * matrix = NULL;
    int i = 0, j;
 
    point = malloc(SIZE * sizeof(int*));
    matrix = malloc(SIZE * SIZE * sizeof(int));
 
    for (; i < SIZE; i++)
        point [i] = matrix + (i * SIZE);
 
    for (i = 0; i < SIZE; i++)
    {
        for (j = 0; j < SIZE; j++)
        {
            point [i][j] = i + j;
            printf("%4i", point [i][j]);
        }
        putchar('\n');
    }
    
    return 0;
}
*alloc не принципиально, т.е. я не хочу подчеркнуть что лучше дергать malloc чем calloc, просто написал так.
Косметические подправки несущественны, оба варианта равнозначны при прочих равных. Посмотри на асм код, который генерится при моем варианте выделения памяти и твоего. Почувствуй как грица "разницу". А разницы никакой по существу.
А использования calloc умышленно. Ибо оставлять сегменты памяти заполненные трешем как-то не очень во всех случаях.
0
easybudda
Модератор
Эксперт CЭксперт С++
9695 / 5645 / 963
Регистрация: 25.07.2009
Сообщений: 10,849
18.07.2013, 14:37 #7
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Не, с памятью всё-таки поаккуратнее надо. Мало того, что выделенная память не возвращается (если программа один раз "отстрелялась" и, что бы там внутри неё ни произошло, завершилась с кодом 0 - система как-нибудь сама память вернёт), вот так вообще нельзя делать:
Цитата Сообщение от fanatdebian Посмотреть сообщение
C
1
2
3
4
5
6
7
8
        for(i = 0; i < size_array; i++){
            if (NULL==(matrix[i] = calloc(size_array, sizeof(int)))){
                printf("error calloc memory block\n");
            }       
            for(j =0;j < size_array; j++){
                matrix[i][j] = rand()%99;           
            }
        }
Если память не выделилась, пользователя мы, конечно, предупредим, но нас самих этим не остановишь. Настойчиво продолжаем писать "куда-то" случайные числа от 0 до 98...
1
18.07.2013, 14:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.07.2013, 14:37
Привет! Вот еще темы с ответами:

Массив: Найти минимальный элемент среди элементов, кратных 3 - C (СИ)
1. Задано целое и массив элементов а) Определить индекс элемента, значение которого максимально отличается от среднего значения...

Найти минимальный элемент среди элементов, лежащих ниже побочной диагонали матрицы - C (СИ)
Не могу написать на языке Си Задача: Дан двумерный числовой массив порядка мхм. Найти минимальный элемент среди элементов, лежащих ниже...

Найти номер и значение второго положительного элемента массива среди элементов, расположенных за минимумом - C (СИ)
Задание 2 Найти номер и значение второго положительного элемента массива среди элементов, расположенных за минимальным элементом...

Найти минимальный элемент из максимальных в строках матрицы - C (СИ)
дана матрица m*n найти минимальный элемент из максимальных в строках


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

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

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