Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
kitten
0 / 0 / 0
Регистрация: 14.12.2008
Сообщений: 21
19.12.2008, 21:34     Удаление всех строк содержащих минимальный элемент матрицы. #1
Задание:
Составить программу обработки матрицы.
Удаление всех строк содержащих минимальный элемент матрицы.
Код
#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;
}
ошибку не вижу( помогите найти, пожалуйста!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2008, 21:34     Удаление всех строк содержащих минимальный элемент матрицы.
Посмотрите здесь:

Определить количество строк матрицы, содержащих хотя бы один нулевой элемент C++
Найти минимальный элемент среди максимальных элементов строк матрицы C++
Определить количество строк матрицы, содержащих хотя бы один нулевой элемент C++
C++ Определить количество строк матрицы, содержащих хотя бы один нулевой элемент
Определить количество строк матрицы, содержащих хотя бы один нулевой элемент C++
Решить уравнение p*x2+d*x+r=0, где p - минимальный элемент матрицы A; d –минимальный элемент матрицы B; r - минимальный элемент матрицы C. C++
Определить количество строк матрицы, содержащих хотя бы один нулевой элемент. C++
C++ Найти минимальный элемент матрицы данного размера и произведение всех её положительных элементов
C++ Найти минимальный элемент матрицы заданного формата и произведение всех ее положительных элементов
Найти минимальный элемент матрицы заданного размера и произведение всех ее положительных элементов C++
C++ Определить номер первой из строк матрицы, содержащих хотя бы один положительный элемент
C++ Номер первой из строк матрицы, содержащих хотя бы один положительный элемент

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
FOLKEN
 Аватар для FOLKEN
21 / 20 / 3
Регистрация: 03.12.2008
Сообщений: 86
20.12.2008, 02:21     Удаление всех строк содержащих минимальный элемент матрицы. #2
про ошибки в синтаксисе вам компилятор расскажет, а вот насчет самого задания... оно не так просто как кажется - ибо минимальный эл-т может быть в нескольких строках, и при удалении строк соответственно уменьшается размер матрицы. Что подразумевается под "удалить строки" ? Можно ли завести другую матрицу? или надо освободить память из-под старой?)
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
20.12.2008, 03:45     Удаление всех строк содержащих минимальный элемент матрицы. #3
предположительно сортировка пустых строк не требуется, т.к. время уйдёт одинаковое

Код
 
#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:
терь всё по функциям
Yandex
Объявления
20.12.2008, 03:45     Удаление всех строк содержащих минимальный элемент матрицы.
Ответ Создать тему
Опции темы

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