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

Седловые точки матрицы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Использование стандартных функций (найти все корни уравнения на заданном интервале [a;b] с заданной точностью) http://www.cyberforum.ru/cpp-beginners/thread726975.html
Необходимо создать программу, которая находит все корни уравнения на заданном интервале с заданной точностью (задается пользователем). Программа должна выводить список корней (при этом корни не должны повторяться) либо выводить соответствующее сообщение, если корней нет. Вот условие примера cos(2/x)*sin(x) = 0 Помогите пожалуйста.. Добавлено через 1 час 41 минуту Неужели никто не...
C++ Как можно вложить двумерный массив в двумерный? Нужно написать программу перемножения двух матриц размерностью МxМ, элементы которых, матрицы размерностью КxК... Подскажите (желательно с примерами) как это можно реализовать... Пробовал создавать класс с массиов, а потом просто двумерный массив объектов, но что-то проблемы возникают когда пытаюсь все это дело перемножить... Или может надо пробовать схитрить с помощью четырехмерного массива... http://www.cyberforum.ru/cpp-beginners/thread726972.html
C++ Операции с массивом
Уважаемые программисты,прошу вас помочь мне написать 2 программы на языке C++ 2.Из массива X(N) все положительные элементы записать в массив Y(K),а все отрицательные элементы - в массив Z(m).Найти в каждом массиве максимальный по модулю элемент.Удалить в каждом массиве первый элемент.В программе написать функцию формирования массивов Y и Z, определения максимального по модулю элемента,удаление...
МНК (Метод наименьших квадратов) C++
Помогите с реализацией аппроксимации МНК. Есть экспериментальные данные, хочу аппроксимировать их МНК. Не хочу использовать мат пакеты, хочу написать на С/С++. Подскажите с чего начать и какой алгоритм делать.
C++ Множество точек на плоскости http://www.cyberforum.ru/cpp-beginners/thread726948.html
Даны 2 множества точек на плоскости. Выбрать 3 различные точки первого множества так , что бы треугольник с вершинами в этих точках накрывал все точки второго множества и имел минимальную площадь. Помогите с решением пожалуйста. Алгоритм тут так просто не придумаешь, поэтому мне сойдёт тупо перебор , но даже это у меня не получается решить. С курсовой вобще запара т.к есть ещё задачи помимо...
C++ Определить, упорядочены ли его буквы по алфавиту Дано слово. Определить, упорядочены ли его буквы по алфавиту. Выделить первую упорядоченную последовательность в новую строку. подробнее

Показать сообщение отдельно
Spender163
0 / 0 / 0
Регистрация: 04.03.2012
Сообщений: 7
11.12.2012, 21:05     Седловые точки матрицы
Доброго времени суток,уважаемые программисты.
Возникла такая проблема. Имеется следующий код:

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
#include <stdio.h>
#include <stdlib.h>
int main()
{
    FILE *fin(NULL),*fout(NULL);
    char namef[40];
    puts("Input name of file\n");
    gets(namef);//считываем строку с клавиатуры
    fin=fopen(namef,"r");//открываем текстовый файл для чтения
    if (!fin)
    {
        printf("Can not open file\n");
        return 1;
    }
    fout=fopen("f2.txt","w");//открываем текстовый файл для записи
    int n,m;//резмер массива n на m
    fscanf(fin,"%d%d",&n,&m);//считываем два числа которые
    int **mas=new int*[n];
    int i,a;
    for(i=0;i<n;i++)
        mas[i]=new int[m];
    //считываем данные из файла
    for(i=0;i<n;i++)
        for(int j=0;j<m;j++)
            fscanf(fin,"%d",&mas[i][j]);
    //выводим информацию на экран в форматированном виде
    for(i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            printf("%5d",mas[i][j]);//ширина поля вывода занимает 5 знакомест
        }
        printf("%c",'\n');
    }
    fclose(fin);
    //выводим информацию в текстовый файл
    for(i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            fprintf(fout,"%5d",mas[i][j]);//ширина поля вывода занимает 5 знакомест
        }
        fprintf(fout,"%c",'\n');
    }
    fclose(fout);
    //выводим информацию в бинарный файл
    for(i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            fprintf(fout,"%5d",mas[i][j]);//ширина поля вывода занимает 5 знакомест
        }
        fprintf(fout,"%c",'\n');
    }
    fout=fopen("f3.txt","wb");//открываем бинарный файл для записи
    //записываем информацию в бинарный файл построчно
    for(i=0;i<n;i++)
    {
        fwrite(mas[i],sizeof(int)*m,1, fout);
    }
    fclose(fout);
    int **mas2=new int*[n];
    for(i=0;i<n;i++)
    {
        mas2[i]=new int[m];
    }
    fin=fopen("f3.txt","rb");//открываем бинарный файл для чтения
    //считываем информацию из бинарного файла построчно
    for(i=0;i<n;i++)
    {
        fread(mas2[i],sizeof(int)*m,1, fin);
    }
    printf("%c",'\n');
    //выводим информацию на экран в форматированном виде для
    //проверки правильности полученной информации
    printf("%s","\nThe data read from the binary file\n");
    fprintf(fout,"%s","\nThe data read from the binary file\n");
    for(i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            printf("%5d",mas2[i][j]);//ширина поля вывода занимает 5 знакомест
        }
        printf("%c",'\n');
    }
    fclose(fout);
    //выполняем поиск строки с отрицательным элементом и подсчитываем сумму элементов в ней
    fout=fopen("f2.txt","a+");
    int sum=0;
    for(i=0;i<n;i++)
        for(int j=0;j<m;j++)
            if(mas[i][j]<0) 
            {
                for(int k=0; k<m; k++)
                    sum += mas[i][k];
                printf("%s%d%s%d","\nThe amount of negative elements in the ",i+1," line = ",sum);
                fprintf(fout,"%s%d%s%d","\nThe amount of negative elements in the ",i+1," line = ",sum);
                sum = 0;
                break;
            }
    //ищем седловые точки в матрице
    int max, min;
    int count = 0;
    for(i=0;i<n;i++)
        for(int j=0;j<m;j++)
        {
            max = min = mas[i][j];
            for(int t1=0; t1<m; t1++)
                if(mas[i][t1]<min)
                    min = mas[i][t1];
            for(int t2=0; t2<n; t2++)
                if(mas[t2][j]>max)
                    max = mas[t2][j];
            if(mas[i][j]==min) 
                if(mas[i][j]==max) 
                {
                    printf("%s%d%s%d%s","\nSaddle point matrix (",i,";",j,")");
                    fprintf(fout,"%s%d%s%d%s","\nSaddle point matrix (",i,";",j,")");
                    count++;
                }
        }
    if(count == 0)
    {
        printf("%s","\nThe matrix has not saddle point");
        fprintf(fout,"%s","\nThe matrix has not saddle point");
    }
    getchar();
    return 0;
}
Нужно:
1) Найти сумму элементов в тех строках,которые содержат хотя бы один отрицательный элемент
2) Номера строк и столбцов всех седловых точек матрицы.
Нужно убрать ту часть,которая отвечает за считывание и сохранения файла не затронув главного.
На сколько я понял,последнюю часть можно оставить. Самому сделать это не получается.
Буду очень признателен за помощь.

Добавлено через 15 часов 49 минут
Ребят,очень нужна ваша помощь.

Добавлено через 5 часов 11 минут
Столько просмотров,неужели никто не может помочь отредактировать код?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 06:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru