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

Замена значения в матрице. Работает через раз. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ C/C++ для профессионалов http://www.cyberforum.ru/cpp-beginners/thread138059.html
Хотелось бы узнать, в каких конкретно книгах можно изучить основные механизмы языков C/C++, например: стек, очередъ, список, дерево и т.д. т.е. Именно практическое программирование, решение типовых задач... т.е. Нужны книги, в которых нет ничего лишнего, все только самое главное, и самое сложное... На руках имееться книга: Р. Лафоре, "Объектно - ориентированное программирование в C++", книга...
C++ Ввод двумерного массива из файла (Си-only) Дорогие программисты! Помогите начинающему программисту на Си. Есть такая задача (only Си, Си ++ не катит): 1 дан файт (*.txt) в котором записана матрица смежности размера n x n (10х10) -------- 0 1 0 0 1 0 1 0 1 1 1 0 ----------- 2 элементы целые числа http://www.cyberforum.ru/cpp-beginners/thread138052.html
C++ обработка строк
1. Розработать алгоритм и программу для определения процента повторения заданнгого слова в предложении 2. Розработать программу и алгоритм для определения "сложности" предложения .Под сложностью предложения понимается сумма кол-во слов и знаков препинания помогите пожалуйста
Прграммы на обработку матриц C++
Составить программу, которая все элементы линейной таблицы В, состоящей из 20 целых элементов, равные по значению минимальному элементу, заменяет квадратом их порядкового номера. ___________________________________________________________________________________________ Составить программу для подсчета произведения элементов, которые удовлетворяют в двухмерной целочисленной таблице А...
C++ структура http://www.cyberforum.ru/cpp-beginners/thread138038.html
В универе дали задание помогите пожалуйста....:-[: создание структуры как матрицы, в которой доступ к элементам осуществляеться через указатели...
C++ Динамические структуры У меня в задаче надо чтобы введенные элементы разбивались по подспискам (в программе это функция index) и потом вводится строка ( в программе это осуществляется если ввести в строку 'English word' слово 'Enter') потом введенную строку нужно перевести, с помощью тех слов которые мы ввели раньше. У меня как раз это и не выходит:( Помогите пожалуйста. Вот то что я сделал: #include <cstdlib>... подробнее

Показать сообщение отдельно
velikoross
Сообщений: n/a

Замена значения в матрице. Работает через раз. - C++

30.05.2010, 17:38. Просмотров 363. Ответов 1
Метки (Все метки)

Задание: Составить программу на языке С++.В матрице размерности 10 на 6 найти номер первого из столбцов, не содержащих ни одного из отрицательных элементов. В каждой второй строке заменить минимальный элемент нулём. Определить среднее арифметическое отрицательных элементов каждого столбца.
Вот, что у меня получилось:
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
74
75
76
77
78
79
80
81
82
83
84
85
86
#include <iostream>
#include <windows.h>
#include <conio.h>
#include <time.h>
#include <iomanip>
 
using namespace std;
 
      char* _(const char* str)
      {
      char* buffer = new char[strlen(str)];
            CharToOemA(str, buffer);
            return buffer;
      }
 
int main(int argc, char *argv[])
{srand((unsigned)time(NULL));
int M[10][6],i,j,plus,min,minn,chet,stlb;
float sarif,kotr;
for (i=0;i<10;i++)            //Заполняем массив
{for (j=0;j<6; j++)
    {M[i][j]=rand()%50-8;
    cout<<setw(4)<<M[i][j];
    }
cout<<endl;
}
 
for (j=0;j<6;j++)               //Перебираем массив по столбцам, ищем первый столбец без отрицательных элементов
    {
    for (i=0;i<10;i++)
         {plus=0;
         if (M[i][j]>=0) plus=1;
         else  break;
         }
       if (plus==1) {
                  j++;
                  cout<<endl<< _("Первый столбец без отрицательных элементов ")<<j<<endl;
                  break;
                  }
    }
if (plus==0)
{
cout<<endl;
cout<< _("Нет столбцов без отрицательных значений.")<<endl;
}
for (i=0;i<10;i++)              //Перебираем массив по строкам, в чётных строках заменяем минимальное значение на 0.
    {chet=i%2;
    min=M[i][0];
    for (j=0;j<6;j++)
        {if (chet!=0)
            {if (M[i][j]<min)
                {min=M[i][j];
                minn=j;
                }         
            }
        }
    if (chet!=0) M[i][minn]=0;  
    }
cout<<endl;
for (i=0;i<10;i++)            //Демонстрируем подмену
{for (j=0;j<6; j++)
    {cout<<setw(4)<<M[i][j];
    }
cout<<endl;
}
for (j=0;j<6;j++)              //Перебираем массив по столбцам, ищем среднее арифметическое отрицательных элементов столбца
    {
    sarif=0;
    kotr=0;
    stlb=1;
    for (i=0;i<10;i++)
         if (M[i][j]<0) 
            {
            sarif+=M[i][j]; kotr++;
            }
    if (kotr>0)
        {
        cout<<endl;
        stlb+=j;                                 // Почему не работает stlb=j++?
        sarif/=kotr;
        cout<< _("Среднее арифметическое отрицательных элементов ")<<stlb<< _(" столбца равно ")<<sarif;
        }                
    }
cout<<endl<<endl<< _("Нажмите любую клавишу..."); getch();
return 0;
}
Проблема в куске начинающемся с комментария "//Перебираем массив по строкам, в чётных строках заменяем минимальное значение на 0."
Работает не предсказуемо. То правильно заменяет, то меняет не наименьшее значение, а любое другое. Работаю в wxDev-C++. Помогите разобраться в чём дело. Заранее благодарен.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 16:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru