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

Файл: Для заданной в файле матрицы A (n на m) определить количество строк, которые упорядочены по возрастанию - C++

Восстановить пароль Регистрация
 
asdfg12
0 / 0 / 0
Регистрация: 30.06.2012
Сообщений: 8
03.07.2012, 13:28     Файл: Для заданной в файле матрицы A (n на m) определить количество строк, которые упорядочены по возрастанию #1
помогите написать программу
Для заданной в файле матрицы A (n на m) определить количество строк, которые упорядочены по
возрастанию
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2012, 13:28     Файл: Для заданной в файле матрицы A (n на m) определить количество строк, которые упорядочены по возрастанию
Посмотрите здесь:

Вычислить количество строк матрицы, элементы которых упорядочены по возрастанию C++
Найти максимальный среди всех элементов тех строк заданной матрицы, которые упорядочены C++
Найти количество строк матрицы, элементы которых упорядочены по возрастанию. C++
Найти количество строк матрицы, элементы которых упорядочены по возрастанию. C++
C++ Найти количество строк матрицы, элементы которых упорядочены по возрастанию
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Catstail
Модератор
 Аватар для Catstail
21492 / 10245 / 1670
Регистрация: 12.02.2012
Сообщений: 17,129
03.07.2012, 13:30     Файл: Для заданной в файле матрицы A (n на m) определить количество строк, которые упорядочены по возрастанию #2
Это зависит от того, как хранится матрица - по строкам или по столбцам
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
03.07.2012, 13:34     Файл: Для заданной в файле матрицы A (n на m) определить количество строк, которые упорядочены по возрастанию #3
Catstail, намудрили вы что-то
C++
1
2
3
for (int i = 0; i < row; ++i)
    for (int j = 0; j < col; ++j)
        ifs >> arr[i][j];
как она еще может храниться?
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
03.07.2012, 13:34     Файл: Для заданной в файле матрицы A (n на m) определить количество строк, которые упорядочены по возрастанию #4
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
#include <string>
#include <iostream>
#include <fstream>
#include <cstdlib>
 
int main()
{
    std::string file_name;
    std::fstream file;
    
    std::cout << "Enter a file name: " << std::endl;
    std::cin >> file_name;
    
    file.open(file_name, std::ios::in);
    if (file.fail())
    {
        std::cerr << "File not found" << std::endl;
        system("Pause");
        return EXIT_FAILURE;
    }
    
    unsigned int n, m;
    file >> n >> m;
    
    double** matrix = new double*[n];
    for (unsigned int i = 0; i < n; ++i)
        for (unsigned int j = 0; j < m; ++j)
            file >> matrix[i][j];
    
    unsigned int count = 0;
    for (unsigned int i = 0; i < n; ++i)
    {
        bool yes = true;
        for (unsigned int j = 1; j < m; ++j)
            if (matrix[i][j - 1] > matrix[i][j])
            {
                yes = false;
                break;
            }
        if (yes)
            ++count;
    }
    
    std::cout << "Answer: " << count << std::endl;
   
    for (unsigned int i = 0; i < n; ++i)
        delete[]matrix[i];
    delete[]matrix;
    
    system("Pause");
    return EXIT_SUCCESS;
}
Catstail
Модератор
 Аватар для Catstail
21492 / 10245 / 1670
Регистрация: 12.02.2012
Сообщений: 17,129
03.07.2012, 13:49     Файл: Для заданной в файле матрицы A (n на m) определить количество строк, которые упорядочены по возрастанию #5
Вот решение для хранения по строкам:

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
#include "stdio.h"
 
int main(int argc, char* argv[])
{
    FILE *Inp;
 
    char Fname[200];
 
    int i,j,n,m,s,c=0,p=0,k=0;
 
    printf("Enter n ");
    scanf ("%d",&n);
 
    printf("Enter m ");
    scanf ("%d",&m);
 
    for (i=0; i<200; i++) Fname[i]=0;
    printf("Enter File Name ");
    scanf ("%s",Fname);
 
    if ((Inp=fopen(Fname,"r")) == NULL)
    {
        printf("Error by open\n");
        return -1;
    }
    else
        for (i=0; i<n; i++)
        {
            s=0;
            fscanf(Inp,"%d",&p);
            for (j=1; j<m; j++)
            {
                fscanf(Inp,"%d",&c);
                if (c > p) s++;
            }
            if (s == (m-1)) k++;
 
        }
 
     printf("Number of ordered rows is %d\n",k);
 
     fclose(Inp);
 
    return 0;
}
В этом решении вообще не нужны массивы...

Добавлено через 5 минут
Цитата Сообщение от neske Посмотреть сообщение
Catstail, намудрили вы что-то
Ваш код:

C++
1
2
3
for (int i = 0; i < row; ++i)
    for (int j = 0; j < col; ++j)
        ifs >> arr[i][j];
предполагает, что матрица хранится по строкам. т.е. пусть матрица имеет вид

1 2 3
4 2 1
7 8 9

и в файле сидит так:

1
2
3
4
2
1
7
8
9

Это хранение по строкам. Но она может храниться и так:

1
4
7
2
2
8
3
1
9

Это - та же матрица, но хранящаяся по столбцам (как, например, в Фортране). Для такой схемы ваш код перепутает столбцы и строки.

Для хранения по строкам массив не нужен (см. мое решение). Так что это не я перемудрил, а задача не вполне корректна.
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
03.07.2012, 13:59     Файл: Для заданной в файле матрицы A (n на m) определить количество строк, которые упорядочены по возрастанию #6
Catstail, а вы часто встречали в подобных задачах на форуме, что матрица хранится по строкам?
можно ведь и по спирали ее хранить )
Catstail
Модератор
 Аватар для Catstail
21492 / 10245 / 1670
Регистрация: 12.02.2012
Сообщений: 17,129
03.07.2012, 14:03     Файл: Для заданной в файле матрицы A (n на m) определить количество строк, которые упорядочены по возрастанию #7
В условии все должно быть задано чётко. Это претензия не ко мне. Просто в своей практике я сталкивался и первым и со вторым способом хранения.

И еще раз повторю: для такого хранения, как у тебя, массив (тем более динамический двумерный) не нужен. Задача верно решается без массива в одно действие. Возражения?
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
03.07.2012, 14:15     Файл: Для заданной в файле матрицы A (n на m) определить количество строк, которые упорядочены по возрастанию #8
Цитата Сообщение от Catstail Посмотреть сообщение
И еще раз повторю: для такого хранения, как у тебя, массив (тем более динамический двумерный) не нужен. Задача верно решается без массива в одно действие. Возражения?
конечно можно и без массива, я ничего про это не говорил)

Добавлено через 1 минуту
только, вот, у тебя ошибка
первый элемент в строке сравнивается со всеми следующими
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.07.2012, 14:18     Файл: Для заданной в файле матрицы A (n на m) определить количество строк, которые упорядочены по возрастанию
Еще ссылки по теме:

Массивы. Найти максимальный элемент среди всех элементов тех строк заданной матрицы, которые упорядочены C++
Найти максимальный элемент среди всех элементов тех строк заданной матрицы А (4,4), которые упорядочены по возрастанию C++

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

Или воспользуйтесь поиском по форуму:
Catstail
Модератор
 Аватар для Catstail
21492 / 10245 / 1670
Регистрация: 12.02.2012
Сообщений: 17,129
03.07.2012, 14:18     Файл: Для заданной в файле матрицы A (n на m) определить количество строк, которые упорядочены по возрастанию #9
Это да... Вот:

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
#include "stdio.h"
 
int main(int argc, char* argv[])
{
    FILE *Inp;
 
    char Fname[200];
 
    int i,j,n,m,s,c=0,p=0,k=0;
 
    printf("Enter n ");
    scanf ("%d",&n);
 
    printf("Enter m ");
    scanf ("%d",&m);
 
    for (i=0; i<200; i++) Fname[i]=0;
    printf("Enter File Name ");
    scanf ("%s",Fname);
 
    if ((Inp=fopen(Fname,"r")) == NULL)
    {
        printf("Error by open\n");
        return -1;
    }
    else
        for (i=0; i<n; i++)
        {
            s=0;
            fscanf(Inp,"%d",&p);
            for (j=1; j<m; j++)
            {
                fscanf(Inp,"%d",&c);
                if (c > p) s++;
                p=c;  /* !!! */
            }
            if (s == (m-1)) k++;
 
        }
 
     printf("Number of ordered rows is %d\n",k);
 
     fclose(Inp);
 
    return 0;
}
Yandex
Объявления
03.07.2012, 14:18     Файл: Для заданной в файле матрицы A (n на m) определить количество строк, которые упорядочены по возрастанию
Ответ Создать тему
Опции темы

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