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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Написать программу, которая подводит итоги конкурса "5 лучших товаров года". http://www.cyberforum.ru/cpp-beginners/thread18973.html
Здравствуйте, помогите пожалуйста решить задачу. Написать программу, которая подводит итоги конкурса "5 лучших товаров года". Оценка товара производится по пятибалльной системе. Программа должна...
C++ переведите пожалуйста с языка паскаль на си++! вот код: program cyb_38; uses Crt; var n, i, unik, srst: byte; sum: longint; sr_ar: real; mas: array of integer; begin http://www.cyberforum.ru/cpp-beginners/thread18961.html
Определить длину самой большой последовательности подряд идущих согласных C++
В строке записаны несколько предложений . Каждое предложение заканчивается точкой, вопросительным или восклицательным знаками. 1. Вывести на экран только те предложения в которых нет ни 1 цифры 2....
C++ найти корень уравнения методом хорд и касательных на С
найти корень уравнения (x*x + ln(x)-2) методом хорд и касательных на С. Если не можете, тогда подскажите плз... В этом методе есть f, f1, f2.. f-само уравнение, а что задавать для f1,f2 ? Заранее...
C++ Рисование треугольника http://www.cyberforum.ru/cpp-beginners/thread18882.html
Здравствуйте, нужно сделать вот это через подпрограмму: ----*---- ---*-*--- --*---*-- -*-----*- ********* '-' это пробелы
C++ Каким образом нормально считать с консоли строку? Дело в том что необходимо считывать строки вводимые с консоли. Но полноценно это не выходит. Ф-ция scanf() обеспечивает считывание только до первого пробела, сколько читал мануалов по ее... подробнее

Показать сообщение отдельно
accept
4825 / 3246 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
20.12.2008, 03:45
предположительно сортировка пустых строк не требуется, т.к. время уйдёт одинаковое

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