Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 14.12.2008
Сообщений: 21
1

Удаление всех строк содержащих минимальный элемент матрицы.

19.12.2008, 21:34. Показов 1204. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задание:
Составить программу обработки матрицы.
Удаление всех строк содержащих минимальный элемент матрицы.
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
#include <stdio.h>
 
void Min(int** m, int n)
{
    int j=0, i=0, y, k, MiEl=m[0][0];
   // int min[n];
    for (i; i<n; i++)
      for (j; j<n; j++)
      {
        if (m[i][j] < MiEl)
    //min[k]=m[i][j];
            MiEl=m[i][j];
    //if (m[i][j] < min[k])
    //min[k]=m[i][j];
    y=i;
      }
  }
 
void Delete(int** m, int n, int y)
{
    while(y==i)
    {
        int i, j;
        for(j=0, j<=n, j++)
        {
            delete m[i][j];
        }
    }
}
 
int main()
{
    int N, y;
    scanf("%d", &N);
 
    int** m=new int*[N];
    for (int i=0; i<N; i++)
        m[i]=new int[N];
 
    for (int i=0; i<N; i++)
        for (int j=0; j<N; j++)
            scanf("%d", &m[i][j]);
 
    Min(m, N);
    printf("%d",m[i][j]);
 
    for (int i=0; i<N; i++)
    delete [] m[i];
    delete [] m;
 
    return 0;
}
ошибку не вижу( помогите найти, пожалуйста!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.12.2008, 21:34
Ответы с готовыми решениями:

Удаление всех строк, содержащих минимальный элемент матрицы
Ребята помогите сделать паскаль.... А ЭТО КОНКРЕТНЫЕ 2 МОИХ ЗАДАНИЯ: 1. Удаление всех строк,...

Удаление всех строк, содержащих минимальный элемент матрицы
Доброго времени суток! Написал программу на Си удаления всех строк, содержащих минимальный элемент...

Вставить после всех строк матрицы, содержащих минимальный элемент массива, строку 2, 4, 6...
дан двумерный массив размером n*m заполненный следующим образом 1 заменить каждый элемент нулём ...

Удаление строки и столбца, содержащих минимальный элемент матрицы
Прошу помощи

2
22 / 21 / 6
Регистрация: 03.12.2008
Сообщений: 85
20.12.2008, 02:21 2
про ошибки в синтаксисе вам компилятор расскажет, а вот насчет самого задания... оно не так просто как кажется - ибо минимальный эл-т может быть в нескольких строках, и при удалении строк соответственно уменьшается размер матрицы. Что подразумевается под "удалить строки" ? Можно ли завести другую матрицу? или надо освободить память из-под старой?)
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
20.12.2008, 03:45 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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#include <stdio.h>
#include <stdlib.h>
 
#define M  3    /* количество строк    */
#define N  4    /* количество столбцов */
 
/* создаёт матрицу M x N, заполняет её и удаляет строки с наименьшим элементом */
main()
{
    int **mtxcreat(int, int);
    int mtxfill(int **, int, int);
    long mtxmin(int **, int, int);
    void mtxrdel(int **, int, int, long),
         mtxprint(int **, int, int),
         mtxfree(int **, int);
    int **m;
    int nrows = M, ncells = N, i, j;
    
    if ((m = mtxcreat(nrows, ncells)) == NULL)
        return 1;
    if (mtxfill(m, nrows, ncells) > 0) {
        mtxfree(m, nrows);
        return 2;
    }    
    putchar('\n');    
    mtxprint(m, nrows, ncells);
    putchar('\n');    
    mtxrdel(m, nrows, ncells, mtxmin(m, nrows, ncells));
    mtxprint(m, nrows, ncells);
    putchar('\n');    
    mtxfree(m, nrows);
    return 0;
}
 
/* mtxcreat:  создаёт матрицу размерности m x n */
int **mtxcreat(int m, int n)
{
    int **mtx, i;
    
    if ((mtx = calloc(m, sizeof(int *))) == NULL)
        return NULL;
    for (i = 0; i < m; i++)
        if ((mtx[i] = calloc(n, sizeof(int))) == NULL) {
            while (--i >= 0)
                free(mtx[i]);
            free(mtx);
            return NULL;
        }
    return mtx;    
}
 
/* mtxfill:  запрашивает числа для матрицы и записывает их */
int mtxfill(int **mtx, int m, int n)
{
    int i, j;
    
    for (i = 0; i < m; i++)
        for (j = 0; j < n; j++) {
            printf("M %d %d : ", i, j);
            if (scanf("%d", &mtx[i][j]) != 1)
                return 1;
        }
    return 0;
}
 
/* mtxmin:  находит минимальный элемент матрицы */
long mtxmin(int **mtx, int m, int n)
{
    int i, j;
    long min = mtx[0][0];
    
    for (i = 0; i < m; i++)
        for (j = 0; j < n; j++)
            if (mtx[i][j] < min)
                min = mtx[i][j];
    return min;
}
 
/* mtxrdel:  удаляет строку матрицы в которой элемент */
void mtxrdel(int **mtx, int m, int n, long elem)
{
    int i, j;
    
    for (i = 0; i < m; i++)
        for (j = 0; j < n; j++)
            if (mtx[i][j] == elem) {
                free(mtx[i]);
                mtx[i] = NULL;
                break;
            }    
}
 
/* mtxprint:  выводит матрицу на экран */
void mtxprint(int **mtx, int m, int n)
{
    int i, j;
    
    for (i = 0; i < m; i++)
        if (mtx[i] != NULL)
            for (j = 0; j < n; j++)
                printf(" %3d%s", mtx[i][j], j == n-1 ? "\n" : "");
}
 
/* mtxfree:  удаляет матрицу, освобождая память */
void mtxfree(int **mtx, int m)
{
    int i;
    
    for (i = 0; i < m; i++)
        free(mtx[i]);
    free(mtx);
}
kitten, всегда когда объявляешь переменные выноси их вверх (верх имеется в виду верх блока в котором они создаются блок - область в фигурных скобках, заголовок цикла ещё не блок, два раза в одном блоке объявлять переменную нельзя, внутренний блок считается подблоком отдельным, но и уничтожаться они будут после его завершения),
большими буквами объявляются определения препроцессора, маленькими переменные, одни и те же имена для функций и переменных или имена различающиеся только регистром тоже не есть гуд

update:
терь всё по функциям
0
20.12.2008, 03:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.12.2008, 03:45
Помогаю со студенческими работами здесь

Удаление строки и столбца, содержащих минимальный элемент матрицы
Составить программу удаления строки и столбца, содержащих минимальный элемент матрицы A(N,N)

Сложение всех столбцов, содержащих минимальный элемент матрицы
Здравствуйте, дана матрица : 1 2 4 5. ...

Удаление строк/столбцов, содержащих максимальный элемент матрицы
помогите пожалуйста, выскакивает ошибка &quot;is not a valid integer value&quot;. перепроверила, не могу...

Удаление строк матрицы, в которых встречается минимальный элемент
Доброго времени суток. При решении задачи столкнулся с некоторыми трудностями, в частности, я не...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru