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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Spender163
0 / 0 / 0
Регистрация: 04.03.2012
Сообщений: 7
#1

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

11.12.2012, 21:05. Просмотров 1045. Ответов 1
Метки нет (Все метки)

Доброго времени суток,уважаемые программисты.
Возникла такая проблема. Имеется следующий код:

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 минут
Столько просмотров,неужели никто не может помочь отредактировать код?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.12.2012, 21:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Седловые точки матрицы (C++):

Седловые точки матрицы - C++
Найти седловые точки матрицы. Седловой точкой называется элемент, являющийся минимальным в строке и максимальным в столбце. Я тут...

Найти седловые точки матрицы - C++
Ввести данные в прямоугольную матрицу, вывести матрицу на экран. В матрице найти седловые точки (найти номер строки и столбца для каждой...

Определить седловые точки матрицы - C++
Доброго времени суток. Задали написать программу на C++, вот задание: &quot;Дана целочисленная матрица. Определить: 1) Кол-во отрицательных...

СЕДЛОВЫЕ точки матрицы( ПОмогите исправить) - C++
//sedlov tochka//////////////////////////// for(i=0;i&lt;n;i++) { min=a; for(j=0;j&lt;m;j++) { if(a&lt;min) ...

Разбить на подпрограммы (седловые точки матрицы) - C++
Приветствую. Вот код, в консоли программа выводит на экран седловые точки матрицы MxN (минимальные в столбце и максимальные в строке). ...

Для заданной матрицы определить все седловые точки - C++
Ребят, пожалуйста очень надо, нифига не знаю.=(( 1. Массив целых чисел. Найти сумму чётных элементов массива. Отсортировать в...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Spender163
0 / 0 / 0
Регистрация: 04.03.2012
Сообщений: 7
13.12.2012, 20:53  [ТС] #2
Ребят,помогите пожалуйста
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.12.2012, 20:53
Привет! Вот еще темы с ответами:

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

Седловые точки - C++
Задана матрица f, содержащая a строк и b столбцов. Седловой точкой этой матрицы назовем элемент, который одновременно является минимумом в...

Седловые точки - C++
я прогу написа, но если в матрице более одной седловой точки или несколько минимальных чисел в одной строке то не работает, помогите...

седловые точки - C++
Проверьте пожалуйста правильно ли все. не могу разобраться... Дана целочисленная матрица. Определить номера строк и столбцов всех...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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