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

Где спряталась ошибка? - C++

Восстановить пароль Регистрация
 
voevoda665
0 / 0 / 0
Регистрация: 25.03.2014
Сообщений: 2
25.03.2014, 14:05     Где спряталась ошибка? #1
дана матрица. найти номер строки с отрицательным элементом. вводим значения и так далее все работает...но вот когда начинается сравнение каждого элемента с нулем то первую строку не обрабатывает, а если в начале строки стоял отрицательный элемент то и вовсе все элементы строки становятся равны значению первого элемента. корректно сравнит только во второй строке в ее середине.... в общем помогите, решил сам курсача запилить. Спасибо.

C++ (Qt)
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
#include "stdafx.h"
#include <stdio.h>
#include <clocale>  // для setlocale (LC_CTYPE,"rus");
#include <cstdlib>  // для system("cls");
 
int _tmain(int argc, _TCHAR* argv[])
{setlocale (LC_CTYPE,"rus");    // для русского языка
    int *A,n,m;
    
    printf("введите количество строк\n");
        scanf_s("%d", &n);
        printf("введите количество столбцов\n");
        scanf_s("%d", &m);
        A=new int[n*m];
    
 
    // заполнение массива
    for(int i=0;i<n;i++)    // строки
    {
        for(int j=0;j<m;j++)    // столбцы
        {
            printf("введите значение строки %d, столбца %d\n", i+1,j+1);
            scanf_s("%d", &A[i*j]);
        }
    } 
 
    // обработка массива
    for(int i=0;i<n;i++)    // строки
        {
            for(int j=0;j<m;j++)    // столбцы
            {
                if(A[i*j]<0)
                    printf("в строке %d, столбце %d найден отрицательный элемент\n",i+1,j+1);
            }
        }
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.03.2014, 14:05     Где спряталась ошибка?
Посмотрите здесь:

C++ Где ошибка?
Где ошибка ? C++
C++ Где ошибка?
C++ Вывести на экран количество слов где первая и последняя буквы одинаковы (не понимаю где ошибка)
C++ где ошибка
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
25.03.2014, 14:20     Где спряталась ошибка? #2
Цитата Сообщение от voevoda665 Посмотреть сообщение
дана матрица
Цитата Сообщение от voevoda665 Посмотреть сообщение
A=new int[n*m];
Не то что бы в яблочко, ну да ладно.
Цитата Сообщение от voevoda665 Посмотреть сообщение
if(A[i*j]<0)
но вот здесь интереснее. Если следовать циклу, то обращения к массиву будут примерно такие: 0, 0, 0, 0, 0... 0, 1, 2, 3.... 0, 2, 4, 6...
И заполняется не лучше.
Вы наверное так имели ввиду:
C++
1
if(A[i*m + j]<0
Цитата Сообщение от voevoda665 Посмотреть сообщение
вводим значения и так далее все работает...
А теперь выведите и посмотрите на результат.
PS дайте полностью задание, так всегда легче помогать
Anton_Kretov
 Аватар для Anton_Kretov
89 / 51 / 7
Регистрация: 26.06.2013
Сообщений: 179
25.03.2014, 14:29     Где спряталась ошибка? #3
Написал свою версию, вопрос только в том, что вам нужно выводить номер строки с точки зрения С++ (т.е. если отрицательный элемент в первой строке, то выводить 0)? Если да, то оставьте так, как есть. Нет - напишите в последнем cout'е i + 1
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
#include <iostream>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");
    int n; //numberOfStrings
    int m; //numberOfColumns
    cout << "Введите кол-во строк в массиве: "; cin >> n;
    cout << "Введите кол-во столбцов в массиве: "; cin >> m;
    int **arrayOfNumbers = new int* [n];
        for(int i = 0; i < n; i++) {
            arrayOfNumbers[i] = new int [m];
        }
 
    for(int i = 0; i < n; i++) {
        for(int j = 0; j < m; j++) {
            cout << "Введите значение элемента под индексом [" << i << ";" << j << "]:";
            cin >> arrayOfNumbers[i][j];
        }
    }
 
    for(int i = 0; i < n; i++) {
        for(int j = 0; j < m; j++) {
            if(arrayOfNumbers[i][j] < 0) cout << "Номер строки с отрицательным элементом - " << i;
        }
    }
 
    return 0;
}
voevoda665
0 / 0 / 0
Регистрация: 25.03.2014
Сообщений: 2
25.03.2014, 15:05  [ТС]     Где спряталась ошибка? #4
http://cs616019.vk.me/v616019211/83e0/CXWJ7doEjI8.jpg

попробовал как вы говорили. результат такой же. на скрине как оно есть.

Добавлено через 6 минут
Цитата Сообщение от Anton_Kretov Посмотреть сообщение
Написал свою версию
Меня так не учили.. да и вовсе всего пару занятий дали и перешли на сишарп. так что такой код я не очеь понимаю((( но в принципе
Цитата Сообщение от Anton_Kretov Посмотреть сообщение
for(int i = 0; i < n; i++) {
* * * * for(int j = 0; j < m; j++) {
* * * * * * if(arrayOfNumbers[i][j] < 0) cout << "Номер строки с отрицательным элементом - " << i;
это же тоже самое что и у меня? или если не сложно как это будет выглядеть в моем коде?
Yandex
Объявления
25.03.2014, 15:05     Где спряталась ошибка?
Ответ Создать тему
Опции темы

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