Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
Al_pas
0 / 0 / 0
Регистрация: 08.03.2012
Сообщений: 6
1

Найти строку, содержащую наибольший элемент матрицы и заменить все отрицательные элементы этой строки числом 0

08.03.2012, 10:43. Просмотров 1096. Ответов 7
Метки нет (Все метки)

Здравтсвуйте! помогите пжл решить задачу.
Найти строку, содержащую
наибольший элемент матрицы и заменить все отрицательные элементы этой строки числом 0.Матрица любая может быть,так что не судь важно ,просто не могу понять как строку найти.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.03.2012, 10:43
Ответы с готовыми решениями:

Найти строку, содержащую минимальный элемент матрицы, и поменять в этой строке элементы 1-го и 4-го столбца
Найти строку, содержащую минимальный элемент матрицы, и поменять в этой строке...

Найти наибольший элемент среди элементов диагонали и заменить им все отрицательные элементы
в матрице А размерностью 5*5 найти наибольший элемент среди элементов диагонали...

Дана матрица А(7,4) Вывести все отрицательные элементы этой матрицы. Найти минимальный по модулю элемент
Привет славные форумчани.. Тема программы потоковые файлы... Задача состоит в...

Все отрицательные элементы матрицы заменить числом 1
Что делать не пойму, помогите пожалуйста. На самом начальном изучении мы, так...

Заменить в матрице все отрицательные элементы первой строки числом 0
прошу,помогите!!! написать следующую программу,используя указатели: дана...

7
valeriikozlov
Эксперт С++
4686 / 2512 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
08.03.2012, 10:57 2
Если матрица a[][] размером N*M уже есть то можно так:
C++
1
2
3
4
5
6
7
8
9
10
int i, j, i_max=0, j_max=0;
for(i=0; i<N; i++)
    for(j=0; j<M; j++)
        if(a[i][j]>a[i_max][j_max])
        {
            i_max=i; j_max=j;
        }
for(i=0; i<M; i++)
    if(a[i_max][i]<0)
        a[i_max][i]=0;
0
Al_pas
0 / 0 / 0
Регистрация: 08.03.2012
Сообщений: 6
08.03.2012, 12:00  [ТС] 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
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
#include "stdafx.h"
#include <stdio.h>
#include <locale.h>
#include <malloc.h>
#include <conio.h>
#include <Windows.h>
#define matrix(i,j)(*(matriza+i*m+j))
 
 
int _tmain(int argc, _TCHAR* argv[])
{ 
 char input_file[81], output_file[81];
 int j,i,n,m,k,f,i_max=0,j_max=0,a[i];
 int*matriza;
 FILE * fp,*fp1;
 setlocale(LC_ALL,"rus");
 printf("\n введите имя файла:");
 scanf("%s",input_file);//1.dat
 if((fp=fopen(input_file,"r"))==NULL)
 { printf("\n Файл не найден");
   return -1;
 } 
  k=fscanf(fp,"%d%d",&n,&m);
  if(k!=2)
  { printf("\n Неправильный формат файла");
  fclose(fp);
  return -1;
  }
  if((matriza=(int*)malloc(n*m*sizeof(int)))==NULL)
  { printf("\n Нехватает памяти");
  fclose(fp);
  return -1;
  } printf("\n Матрица в файле:");
  printf("\n  n=%d,m=%d",n,m);
  for (i=0;i<n;i++)
   {printf("\n");
    for(j=0;j<m;j++)
    { k=fscanf(fp,"%d",&f);
     if(k!=1)
     {
      printf("\n Неправильный формат файла");
      fclose(fp);
      free((void*)matriza);
      return -1 ;
     }
     printf("%d",f);
     matrix(i,j)=f;
    }
  }  
  
fclose (fp);
printf("\n");
printf("\n Для продолжения нажмите любую клавишу");
_getch();
 for(i=0; i<n; i++)
        for(j=0; j<m; j++)
                if(matrix(i,j)>matrix(i_max,j_max))
                {
                        i_max=i; j_max=j;
                }
for(i=0; i<n; i++)
        if(matrix[i_max][i]<0)
                a[i_max][i]=0;
 
    }
немного не допонял ваш код.у меня матрица с файла считывается,там можно любую размерность задать.
0
valeriikozlov
Эксперт С++
4686 / 2512 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
08.03.2012, 12:13 4
Цитата Сообщение от Al_pas Посмотреть сообщение
немного не допонял ваш код.у меня матрица с файла считывается,там можно любую размерность задать.
по моему все поняли и даже использовали нужный момент:

Цитата Сообщение от Al_pas Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
for(i=0; i<n; i++)
 for(j=0; j<m; j++)
 if(matrix(i,j)>matrix(i_max,j_max))
 {
 i_max=i; j_max=j;
 }
for(i=0; i<n; i++)
 if(matrix[i_max][i]<0)
 a[i_max][i]=0;
}
только не совсем правильно:
C++
1
2
for(i=0; i<n; i++)
 if(matrix[i_max][i]<0)
заменить на:
C++
1
2
for(i=0; i<m; i++)
 if(matrix[i_max][i]<0)
0
Al_pas
0 / 0 / 0
Регистрация: 08.03.2012
Сообщений: 6
08.03.2012, 12:57  [ТС] 5
C++
1
2
for(i=0; i<n; i++)
 if(matrix[i_max][i]<0)
a[i_max][i]=0;[/CPP]
почему то в последней строчке пишет что матрик не объявлений идентификатор , и не понимаю зачем здесь a[i_max][i],если у нас размерность матрицы #define matrix(i,j)(*(matriza+i*m+j)), к тому же он его тоже не видет.
0
valeriikozlov
Эксперт С++
4686 / 2512 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
08.03.2012, 13:08 6
Цитата Сообщение от valeriikozlov Посмотреть сообщение
C++
1
a[i_max][i]=0;
нужно замеить на
C++
1
matrix[i_max][i]=0;
1
Al_pas
0 / 0 / 0
Регистрация: 08.03.2012
Сообщений: 6
08.03.2012, 13:28  [ТС] 7
C++
1
 if (matrix[i_max][i]<0)
все равно подчеркивает matrix,не могу понять из-за чего
0
valeriikozlov
Эксперт С++
4686 / 2512 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
08.03.2012, 17:10 8
проверяйте:
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
#include <locale.h>
#include <malloc.h>
#include <conio.h>
#include <Windows.h>
#define matrix(i,j)(*(matriza+i*m+j))
 
 
int _tmain(int argc, _TCHAR* argv[])
{ 
 char input_file[81], output_file[81];
 int j,i,n,m,k,f,i_max=0,j_max=0;
 int*matriza;
 FILE * fp,*fp1;
 setlocale(LC_ALL,"rus");
 printf("\n введите имя файла:");
 scanf("%s",input_file);//1.dat
 if((fp=fopen(input_file,"r"))==NULL)
 { printf("\n Файл не найден");
   return -1;
 } 
  k=fscanf(fp,"%d%d",&n,&m);
  if(k!=2)
  { printf("\n Неправильный формат файла");
  fclose(fp);
  return -1;
  }
  if((matriza=(int*)malloc(n*m*sizeof(int)))==NULL)
  { printf("\n Нехватает памяти");
  fclose(fp);
  return -1;
  } printf("\n Матрица в файле:");
  printf("\n  n=%d,m=%d",n,m);
  for (i=0;i<n;i++)
   {
      printf("\n");
    for(j=0;j<m;j++)
        { k=fscanf(fp,"%d",&f);
         if(k!=1)
         {
          printf("\n Неправильный формат файла");
          fclose(fp);
          free((void*)matriza);
          return -1 ;
         }
         printf("%d ",f);
         matrix(i,j)=f;
        }
  }
   
  
fclose (fp);
printf("\n");
printf("\n Для продолжения нажмите любую клавишу");
 for(i=0; i<n; i++)
        for(j=0; j<m; j++)
                if(matrix(i,j)>matrix(i_max,j_max))
                {
                        i_max=i; j_max=j;
                }
for(i=0; i<m; i++)
        if(matrix(i_max,i)<0)
                matrix(i_max,i)=0;
 
printf("\n Преобразованная матрица\n");
 for(i=0; i<n; i++)
 {
        for(j=0; j<m; j++)
            printf("%d ", matrix(i, j));
        printf("\n");
 }
_getch();
return 0;
}
1
08.03.2012, 17:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.03.2012, 17:10

Заменить все отрицательные элементы матрицы на максимальный элемент
Дана вещественная матрица h(i,j). Составить программу замены всех отрицательных...

Найти сумму всех элементов матрицы и заменить ею все диагональные элементы этой матрицы
Найти сумму всех ее элементов и заменить ею все диагональные элементы этой...

Массивы. Заменить все отрицательные элементы массива числом 0
Создайте массив А с помощью генератора случайных чисел с элементами от -20 до...


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

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

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