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

Для матрицы размером NxM вывести на экран все седловые точки. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Несколько new [] подряд http://www.cyberforum.ru/cpp-beginners/thread401715.html
Доброго времени суток!!! Вообщем есть такой кусок кода: if (fn!=NULL) { memcpy(buf, fn, sizeof(buf)); NormalizeFileName(buf); f = fopen(buf, "r"); d = new int; Pixels = ReadTXT(f, &rCount, d); Max = new double;
C++ В каждой строке матрицы элемент, лежащий на главной диагонали заменить суммой ранее расположенных Обработка двумерных массивов. Элементы исходной матрицы выводятся из текстового файла.Результаты выводить на экран и в результатирующий текстовый файл.Матрицу выводить до и после преобразований. 1.В каждой строке матрицы F(k,k) элемент, лежащий на главной диагонали, если это простое число, заменить суммой ранее расположенных элементов. Строки. 2.Описать функцию WordN(S,k) целого... http://www.cyberforum.ru/cpp-beginners/thread401710.html
Считать текст из файла и вывести на экран все слова текста, начинающиеся с гласной буквы C++
Напиcать программу, которая считывает текст из файла и выводит на экран все слова текста, начинающиеся с гласной буквы, меняя ее на прописную букву. Добавлено через 7 минут #include <iostream.h> #include <string.h> #include<fstream.h> #include <conio.h> int main () { const int l=150; char *text;
C++ передать массив в функцию по значению
Подскажите,пожалуйста. Нужно с клавиатуры ввести число строк-столбцов ( т е они меняются в зависимости от условия) и передать массив в функцию. Сам массив не меняется в функции. Как его объявить в обращении и заголовке?
C++ Считывание и запись в файл http://www.cyberforum.ru/cpp-beginners/thread401689.html
Доброго времен суток всем экпспертам в области С++ Имеется задания нужно записать числа(псевдослучайные) в текстовый файл "vvod" и отрицательные числа заменить на ноль и вывести в следующий файл "vivod" ! Я смог только в файл записать эти числа. Прошу помощи в хотя-бы в поиске и замене! #include <iostream> #include <fstream> #include <time.h> using namespace std; ofstream fp;
C++ подскажите как правильно записать Суть в чем, нужно текст последовательно циклически сдвинуть на m / 2 позиций, и построить новые m / 2 − 1 строк. Например в С++ это просто реализовать через append: for (int i=1; i<10; i++){ string str; str.append(string,i,len-i); str.append(string,0,i); } но как правильно тоже самое записать на Си? >< Подскажите что-нибудь, а то я уже запуталась :) не знаю, может я и... подробнее

Показать сообщение отдельно
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
11.12.2011, 05:03     Для матрицы размером NxM вывести на экран все седловые точки.
смотрю так и приутих энтузиазм. Жаль. Функции find_min, find_max далеки от совершенства, можно доработать
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int *create ( size_t num, size_t size )
{
    int *t;
    if ( ( t = malloc(num * size) ) == NULL )
        exit ( EXIT_FAILURE );
    else
        return t;
}
 
void print_matrix ( int **matr, size_t row, size_t coll )
{
    for ( int i = 0; i < row; ++i )
    {
        for ( int j = 0; j < coll; ++j )
            printf( "%2i ", matr[ i ][ j ] );
        puts("");
    }
}
 
void init_matrix ( int **matr, size_t row, size_t coll )
{
    for ( int i = 0; i < row; ++i )
        for ( int j = 0; j < coll; ++j )
            matr[ i ][ j ] = j - i;
}
 
int find_min ( int **arr, size_t i, size_t j, size_t row, size_t coll, _Bool flag )
//flag = 1 - ищем СТРОГИЙ минимум строки, иначе столбца
{
    int min = arr[ i ][ j ];
    int tmp, iter = 0;
    if ( flag )
    {
        while ( iter < coll ){
            if ( arr[ i ][ iter ] <= min ){
                min = arr[ i ][ iter ];
                tmp = iter;
            }
            ++iter;
        }
        iter = 0;
        while ( iter < coll ){
            if ( arr[ i ][ iter ] == min && iter != tmp )
                return -1;
            ++iter;
        }
    }
    else
    {
        while ( iter < row ){
            if ( arr[ iter ][ j ] <= min ){
                min = arr[ iter ][ j ];
                tmp = iter;
            }
            ++iter;
        }
        iter = 0;
        while ( iter < row ){
            if ( arr[ iter ][ j ] == min && iter != tmp )
                return -1;
            ++iter;
        }
    }
    return tmp;
}
 
int find_max ( int **arr, size_t i, size_t j, size_t row, size_t coll, _Bool flag )
//flag = 1 - ищем СТРОГИЙ максимум строки, иначе столбца
{
    int max = arr[ i ][ j ];
    int tmp, iter = 0;
    if ( flag )
    {
        while ( iter < coll ){
            if ( arr[ i ][ iter ] >= max ){
                max = arr[ i ][ iter ];
                tmp = iter;
            }
            ++iter;
        }
        iter = 0;
        while ( iter < coll ){
            if ( arr[ i ][ iter ] == max && iter != tmp )
                return -1;
            ++iter;
        }
    }
    else
    {
        while ( iter < row ){
            if ( arr[ iter ][ j ] >= max ){
                max = arr[ iter ][ j ];
                tmp = iter;
            }
            ++iter;
        }
        iter = 0;
        while ( iter < row ){
            if ( arr[ iter ][ j ] == max && iter != tmp )
                return -1;
            ++iter;
        }
    }
    return tmp;
}
 
void find_num_points ( int **matr, size_t row, size_t coll )
{
    int min, max;
    int i, j;
 
    for ( i = 0; i < row; ++i )
    {
        if( ( min = find_min(matr, i, 0, row, coll, 1) ) >= 0 )
            if ( ( max =  find_max(matr, 0, min, row, coll, 0) ) >= 0 )
                if ( max == i )
                    printf ("строка %i, столбец %i число = %2i\n", i, min,  matr[ i ][ min ] );
 
        if( ( max = find_max(matr, i, 0, row, coll, 1) ) >= 0 )
            if ( ( min =  find_min(matr, 0, max, row, coll, 0) ) >= 0 )
                if ( min == i )
                    printf ("строка %i, столбец %i число = %2i\n", i, min,  matr[ i ][ min ] );
    }
}
 
int main ( void )
{
    size_t size = 10;
    int **matrix;
 
    matrix = (int **) create( size, sizeof(int*) );
    for (int i = 0; i < size; ++i)
        matrix[ i ] = (int *)create( size, sizeof(int) );
 
    init_matrix( matrix, size, size );
    print_matrix( matrix, size, size );
    find_num_points( matrix, size, size );
 
    for ( int i = 0; i < size; ++i )
        free( matrix[ i ] );
    free( matrix );
 
    return EXIT_SUCCESS;
}
пример
Код
 0  1  2  3  4  5  6  7  8  9 
-1  0  1  2  3  4  5  6  7  8 
-2 -1  0  1  2  3  4  5  6  7 
-3 -2 -1  0  1  2  3  4  5  6 
-4 -3 -2 -1  0  1  2  3  4  5 
-5 -4 -3 -2 -1  0  1  2  3  4 
-6 -5 -4 -3 -2 -1  0  1  2  3 
-7 -6 -5 -4 -3 -2 -1  0  1  2 
-8 -7 -6 -5 -4 -3 -2 -1  0  1 
-9 -8 -7 -6 -5 -4 -3 -2 -1  0 
строка 0, столбец 0 число =  0
строка 9, столбец 9 число =  0
 
Текущее время: 07:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru