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

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

Войти
Регистрация
Восстановить пароль
 
gulllak
45 / 1 / 0
Регистрация: 09.10.2012
Сообщений: 66
#1

Матрица 8х8 как подправить? - C++

24.01.2013, 17:07. Просмотров 416. Ответов 1
Метки нет (Все метки)

Вот мое задание:
1.Для данной матрицы размером 8x8, найти такие k, что k-ая строка матрицы совпадает с k-ым столбцом.
2.Найти сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент.
Собственно написал программу, но вот не пойму почему вот такие ошибки при ее выполнении:
1) при вводе всех положительных элементов программа не работает
2) При вводе элемента с отрицательным знаком в любой строчке, программа начинает работать, но считает суммы элементов во всех строчках где даже нет отрицательных элементов.
Помогите пожалуйста исправить, я уже не знаю как.(
Вот мой код:
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
#include <iostream>
#include <math.h>
using namespace std;
 
int main(){
setlocale(0, "rus");
    
const int W=8,H=8;
int kol=0,n,j,k,sum[8]={0};
    bool PROV=false;
int** m=new int*[W];   // создаем массив m
  // массив для хранения сумм
 
    for(int i=0;i<W;i++)  // к каждой созданной ячейке m  мы добавляем новые ячейки(по сути получаем массив массива)
        m[i]=new int[W];
    
 
    for(int i=0;i<W;i++)
       for(int f=0;f<H; f++)
       {
          cin>>m[i][f];
 
          sum[i]+=m[i][f];
          if(m[i][f]<0)PROV=true;
          if(f==H-1 && !PROV)sum[i]=-666;
 
       }
 
 for(j=0;j<W;j++)
    if(sum[j]!=-666)cout<<j+1<<" строка имеет отрицательный элемент, сумма этой строки "<<sum[j]<<endl;
          
 
    for(int n=0;n<W; n++)
      { 
          for(j=0;j<W;j++)
          {
          if(m[j][n]==m[n][j])
              kol++;
          }
          
          if(kol==W)
          {cout<<endl<<"Одинаковыми являются "<<n+1<< " столбец и строка."<<endl; kol=0;}
          else kol=0;
    }
    system("pause");
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2013, 17:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Матрица 8х8 как подправить? (C++):

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

На шахматной доске 8х8 расположены три фигуры - C++
Задача: //На шахматной доске 8х8 расположены три фигуры: ферзь, ладья и конь. //Требуется определить количество пустых полей...

Создать класс матрицы реальных чисел (от 1х1 до 8х8) - C++
Добрый день. Задача такова. Нужно создать класс матрицы из реальных чисел (От 1х1 до 8х8). И перекрыть &quot;-&quot; оператор (не памяти). Есть...

Выводит немного не то что надо ,как подправить код - C++
Всем привет, подскажите плиз как сделать так . 1)Если я ввожу числа больше 10 ,то снова надо ввести и так до бесконечности пока не введу...

Как подправить программу, что бы она проверяла является ли строчка полиндромом без пробелов - C++
Где есть ошибка в программе. И как подправить программу, что бы она проверяла является ли строчка полиндромом без пробелов. 1.#include...

дана квадратичная матрица z[n][n]. составить программу, которая если матрица симметричная(транспонированная матрица равна исходной), сделает ее не сим - C++
помогите пожалуйста. условие: дана квадратичная матрица z. составить программу, которая если матрица симметричная(транспонированная...

1
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
24.01.2013, 18:52 #2
Ну, во-первых, задача определена только для равных сторон, поэтому нет смысла разносить размер матрицы на две переменные.
Во-вторых, ну Б-же мой, двадцать первый век, копипаст уже давно придуман, да и экономить размер исходного кода больше не надо. Давайте же осмысленные названия переменным, через эти W, H, x, kol, PROV не продраться. Счетчики можно не трогать, это да.

Короче, причесал маленько. Запустите несколько (десятков?) раз, чтобы получить хотя бы одну совпадающую пару столбец-строка.
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
#include <cstdlib>
#include <ctime>
#include <iomanip>
#include <iostream>
 
int main(int argc, char **argv) {
  srand(time(0));
  
  int size = 8;
  
  int **matrix = new int*[size];
  for (int i = 0; i < size; ++i) {
    matrix[i] = new int[size];
    for (int j = 0; j < size; ++j) {
      matrix[i][j] = -rand() % 2; // это вместо ручного ввода
      std::cout << std::setw(3) << matrix[i][j];
    }
    std::cout << std::endl;
  }
  
  // поиск совпадающих строки и столбца
  for (int i = 0; i < size; ++i) {
    for (int j = 0; j < size; ++j) {
      bool areEqual = true;
      for (int k = 0; k < size; ++k) {
        if (matrix[i][k] != matrix[k][j]) {
          areEqual = false;
          break;
        }
      }
      if (areEqual) {
        std::cout << "Row " << i << " equals to column " << j << "." <<
          std::endl;
      }
    }
  }
 
  // поиск сумм строк с хотя бы одним отрицательным элементом
  for (int i = 0; i < size; ++i) {
    int sum = 0;
    bool hasNegativeValue = false;
    for (int j = 0; j < size; ++j) {
      sum += matrix[i][j];
      if (matrix[i][j] < 0)
        hasNegativeValue = true;
    }
    if (hasNegativeValue) {
      std::cout << "Row " << i << " has a negative value and sum of " <<
        sum << "." << std::endl;
    }
  }
  
 
  for (int i = 0; i < size; ++i)
    delete [] matrix[i];
  delete [] matrix;
 
  std::cin.get();
  return 0;
};
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2013, 18:52
Привет! Вот еще темы с ответами:

подправить - C++
#include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace std; int main() { setlocale(LC_ALL, &quot;rus&quot;); int array, n; cout...

Подправить программу - C++
помогите, пожалуйста. программа работает только когда вводятся числа по условию от 3 до 9. когда вводишь больше 9, то программа...

Подправить программу - C++
Помогите, пожалуйста, подправить программу. Задание следующее: Даны действительные числа a, b, c, d. Проверить возможность...

Подправить задачку. - C++
Помогите, пожалуйста, у меня есть условие задачи: дана последовательность упорядоченных по возрастанию чисел а1...а15, и число n не...


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

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

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