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

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

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

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

24.01.2013, 17:07. Просмотров 403. Ответов 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");
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2013, 17:07     Матрица 8х8 как подправить?
Посмотрите здесь:

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

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

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

подправить - 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++
Имеется код программы. Он рабочий, но почему то при вводе данных в программу, в документе database.txt выводятся какие то символы, но ни...

Подправить прогу( - C++
В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1)Кол-во положительных элементов массива 2)Сумму элементов...

нужно подправить - C++
нужно изменить этот код так ,что бы программа смогла &quot;выжить&quot; в разных ситуациях 1 если знаменатель = 0 и не могу никак понять что...

Немног подправить) - C++
Нужа помощь программа работает тока не могу заставить ее выводить сумму максимальных элементов НЕчетных столбоц т.е сумму макс элемента 1 3...

Подправить код - C++
Ввожу строку с 30 символов. Нужно вывести целое число и упорядочить за возростанием Добавлено через 39 секунд пример кода на фортран...

Подправить стек - C++
Что здесь не так? Помогите исправить ошибку, я уже 3 дня исправляю, и не могу додуматься в чем проблема! #include&lt;iostream&gt; ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
2918 / 1347 / 134
Регистрация: 29.11.2010
Сообщений: 2,721
24.01.2013, 18:52     Матрица 8х8 как подправить? #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;
};
Yandex
Объявления
24.01.2013, 18:52     Матрица 8х8 как подправить?
Ответ Создать тему
Опции темы

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