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

Найти максимальный отрицательный элемент каждой строки матрицы - C++

Восстановить пароль Регистрация
 
AleksaDemon
0 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 8
03.06.2011, 14:43     Найти максимальный отрицательный элемент каждой строки матрицы #1
Здравствуйте, помогите, пожалуйста, написать программу на С.
Задание
Написать программу, которая:
- вводит из файла In.txt матрицу А(M,N), где M(число строк) и N(число столбцов) не превышают десяти;
- выполняет действия в соответствии с вариантом заданием;
- выводит в файл значения М и N, исходную матрицу и массив с результатами.
По умолчанию все массивы вещественные
Вариант 6.Найти максимальный отрицательный элемент каждой строки матрицы А. Результаты записать в одномерный массив S. Для строк матрицы, не содержащих отрицательных элементов, в результирующий массив записать 0.
Заранее благодарна.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2011, 14:43     Найти максимальный отрицательный элемент каждой строки матрицы
Посмотрите здесь:

C++ Найти максимальный элемент в каждой строке матрицы
C++ [Ошибка] Максимальный элемент каждой строки двумерной матрицы
C++ Найти максимальный элемент в каждой строке матрицы
Заменить максимальный по модулю элемент каждой строки матрицы на противоположный по знаку C++
Найти в каждой строке матрицы максимальный элемент C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
AleksaDemon
0 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 8
04.06.2011, 19:35  [ТС]     Найти максимальный отрицательный элемент каждой строки матрицы #2
Народ, помогите, хотя бы с первым пунктом - чтением матрицы из файла и записи этих данных в двумерный массив! Остальное я надеюсь написать, но с этим никаких идей... Что ни пробовала ничего не получается. Надеюсь на понимание.
no0ker
100 / 87 / 4
Регистрация: 17.12.2010
Сообщений: 416
04.06.2011, 19:54     Найти максимальный отрицательный элемент каждой строки матрицы #3
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
#include <iostream>
#include <fstream>
 
int main()
{
    std::ifstream ifs("1.txt");
 
    int i, j, size = 5;
    int **in;
    in = new int*[size];
    for(i=0; i<size; ++i){
        in[i] = new int[size];
    }
 
    for(i=0; i<size; ++i){
        for(j=0;j<size;++j){
            ifs >> in[i][j];
        }
    }
 
    ifs.close();
    for(i=0; i<size; ++i)
        delete[] in[i];
 
    delete[] in;
 
    return 0;
}
чтение из файла 1.txt матрицы 5*5 (size) и помещение данных в двумерный массив in[][].
Fghjkl
6 / 6 / 1
Регистрация: 04.06.2011
Сообщений: 10
04.06.2011, 19:57     Найти максимальный отрицательный элемент каждой строки матрицы #4
AleksaDemon, M и N откуда брать?
AleksaDemon
0 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 8
04.06.2011, 20:06  [ТС]     Найти максимальный отрицательный элемент каждой строки матрицы #5
Их нужно высчитывать.... Матрица дается в файле и может быть любой. Но не больше чем 10*10.
no0ker
100 / 87 / 4
Регистрация: 17.12.2010
Сообщений: 416
04.06.2011, 20:14     Найти максимальный отрицательный элемент каждой строки матрицы #6
AleksaDemon, а сразу сказать нельзя было? =) и как их высчитывать? допустим элементов в файле 24 - матрица 6 на 4, или 8 на 3?
AleksaDemon
0 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 8
04.06.2011, 20:24  [ТС]     Найти максимальный отрицательный элемент каждой строки матрицы #7
Ну в полном задании это написано. А так из того, что я поняла количество строк мы высчитываем считая количество строк, которые считываем, а количество столбцов, когда преобразовываем строку в числа. Сколько чисел в строке, столько и столбцов. То есть, как я понимаю мы в начале заносим в массив, а потом получаем количество столбцов. Но если с подсчетом строк проблемы не возникает, то количество столбцов у меня не считается никак. Я никак не могу перевести строку в числа и их сосчитать, попутно занося в массив.((((
Fghjkl
6 / 6 / 1
Регистрация: 04.06.2011
Сообщений: 10
04.06.2011, 20:36     Найти максимальный отрицательный элемент каждой строки матрицы #8
Сообщение было отмечено автором темы, экспертом или модератором как ответ
AleksaDemon,
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
using namespace std;
main()
{
      ifstream f;
      int i,j,size,n,m;
      float a[100];
      f.open("In.txt");
      for(i=0;!f.eof();i++)
      f>>a[i];
      size=i;
      
      for(i=10;i>=2;i--)
      if(size%i==0)
      {
                   n=i;
                   m=size/n;
                   break;
                   }
      float **x;
      x=new float *[n];
      for(i=0;i<n;i++)
      x[i]=new float [m];
      
      for(i=0;i<n;i++)
      for(j=0;j<m;j++)
      x[i][j]=a[j*m+i];
Как такое решение?
Только у меня n и m перепутаны, по привычке.
AleksaDemon
0 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 8
04.06.2011, 20:59  [ТС]     Найти максимальный отрицательный элемент каждой строки матрицы #9
Эм... Маленькая проблема... Это на С++, а у меня программа на Си.... А так сижу разбираюсь!=)
Fghjkl
6 / 6 / 1
Регистрация: 04.06.2011
Сообщений: 10
04.06.2011, 21:05     Найти максимальный отрицательный элемент каждой строки матрицы #10
Ну, в общем, идея в том, чтобы переписать все числа из файла в массив, потом разделить количество чисел в массиве на число от 10 до 2, чтобы делилось без остатка (это и будет число строк/столбцов), а частное будет соответственно столбцами/строками. Так что главное мы нашли m и n, а дальше уже подсказали выше.
AleksaDemon
0 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 8
04.06.2011, 21:07  [ТС]     Найти максимальный отрицательный элемент каждой строки матрицы #11
Вот то, что я пыталась сделать... Количество строк он даже считает.... Но, возможно, это все чушь(((
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
int main(void)
{
  int i, j; // объявлены все переменные
  FILE  *Out; //указатель на файл с результатами
  Out = fopen("Ar2.txt","a+"); // открыть файл с результатами
  //probuem...
  double **a; // Адрес массива указателей
  int M, N;   // Размеры матрицы: m строк, n столбцов
// Захватывается память под массив указателей
a = (double **) malloc(M * sizeof(double *));
M=0;
N=0;
for (i = 0; i < M; ++i) {
// Захватывается память под строку с индесом i
a[i] = (double *) malloc(N * sizeof(double));
}
i=0;
j=0;
char line[512];
double l[i][j];
 
//podschet strok
int numChars = 0;
int k=0;
int num;
while ((num = fread(line, 1, 512, Out)) > 0) {
    numChars += num;
for (k = 0; k < num; ++k) {
 
            if (line[k] == '\n') {
 
                ++M; // Увеличиваем число строк
 
            }
 
}
}
printf("M = %d\n", M);
while(fgets( line, 255, Out) != NULL){
     l[i++][j]=atof(strtok(line, " "));
     while(((strtok(line, " "))!= NULL) && (i<=10)){
     l[i++][j]=atof(strtok(NULL, " "));
     fprintf(stdout, " %f   ", l[i][j]);
     fprintf(stdout, " \n");
     N++;
     }
     j++;
     printf( "%s", line);
 
}
Fghjkl
6 / 6 / 1
Регистрация: 04.06.2011
Сообщений: 10
04.06.2011, 21:56     Найти максимальный отрицательный элемент каждой строки матрицы #12
C
1
2
3
4
5
6
int M, N;   // Размеры матрицы: m строк, n столбцов
// Захватывается память под массив указателей
a = (double **) malloc(M * sizeof(double *));
M=0;
N=0;
for (i = 0; i < M; ++i)
Здесь не имеет смысла выделять память под массив, так как до инициализации М значение ее непредсказуемо, а потом не будет работать цикл, потому что М уже рано нулю.
AleksaDemon
0 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 8
04.06.2011, 22:11  [ТС]     Найти максимальный отрицательный элемент каждой строки матрицы #13
Спасибо. И что сделать с этой строчкой? Удалить или переставить?
Fghjkl
6 / 6 / 1
Регистрация: 04.06.2011
Сообщений: 10
04.06.2011, 22:18     Найти максимальный отрицательный элемент каждой строки матрицы #14
Думаю, нужно объявлять массив, когда уже найдешь М и N, тогда все должно быть в порядке.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.06.2011, 22:43     Найти максимальный отрицательный элемент каждой строки матрицы
Еще ссылки по теме:

C++ Для каждой строки матрицы определить минимальный элемент, среди которых найти максимальный
C++ Поменять местами максимальный элемент каждой строки матрицы с первым элементом строки
C++ Для каждой строки матрицы определить максимальный отрицательный элемент и среднее арифметическое положительных

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

Или воспользуйтесь поиском по форуму:
AleksaDemon
0 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 8
04.06.2011, 22:43  [ТС]     Найти максимальный отрицательный элемент каждой строки матрицы #15
Спасибо! Так выглядит лучше. Правда у меня весь массив - нули, но теперь он хоть появляется!=)
Yandex
Объявления
04.06.2011, 22:43     Найти максимальный отрицательный элемент каждой строки матрицы
Ответ Создать тему
Опции темы

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