Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2012, 18:01   #1
Dmitry_Web
Пользователь
 
Аватар для Dmitry_Web
 
Регистрация: 01.11.2011
Сообщений: 43
По умолчанию C++ Определить количество столбцов, не содержащих ни одного положительного элемента.

Дана вещественная матрица из n строк и m столбцов. Определить количество столбцов, не содержащих ни одного положительного элемента.
Чесно говоря не знаю как сделать, вот только что написал:
Код:
#include <iostream.h>
#include <math.h>
int main()
{
	double a[100][100];
	int i, j, n, m, k, sum;
	cout<<"Vvedite razmer massiva n*m ";
	cin>>n>>m;
	cout<<"Vvedite elementi massiva\n";
	for(i=0; i<n; i++)
	{
		for(j=0; j<m; j++)
		{
			cout<<"a["<<i<<"]["<<j<<"]= ";
			cin>>a[i][j];
		}
	}
	for(k=0, j=0; j<m; j++)
	{
		for(i=0; i<n; i++)
		{
			if(a[i][j]<0)
			{
				k++;
			}
		}
	}
	cout<<k<<endl;
	return 0;
}
Dmitry_Web вне форума Ответить с цитированием
Старый 20.01.2012, 18:11   #2
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Не так. Ты считаешь общее количество положительных элементов во всей матрице.
А ты считай для каждого столбца. И по выходе из цикла по столбцам проверяй количество положительных элементов. Если оно равно 0, тогда увеличивай общий счетчик.
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 20.01.2012, 18:14   #3
Dmitry_Web
Пользователь
 
Аватар для Dmitry_Web
 
Регистрация: 01.11.2011
Сообщений: 43
По умолчанию

Цитата:
Не так. Ты считаешь общее количество положительных элементов во всей матрице.
Да, знаю.
Цитата:
А ты считай для каждого столбца. И по выходе из цикла по столбцам проверяй количество положительных элементов.
Только вот вопрос как?
Dmitry_Web вне форума Ответить с цитированием
Старый 20.01.2012, 18:23   #4
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Тьфу. Да точно так же. только будет два счетчика. Один -- общий, считает столбцы. Второй -- внутри цикла по столбцам считает количество положительных элементов в столбце.

Или вообще ставь флаг перед проверкой каждого столбца. Если в столбце находишь положительный элемент -- сбрасываешь флаг и можешь из цикла по проверке текущего столбца выходить.

Код:
count = 0;
for (int i = 0; i < n; i++)
{
    positivе = false;
    for (int j = 0; j < m; j++)
        if (a[i][j] > 0)
        {
            positive = true;
            break;
        }
    if (!positive)
        count++
}
cout << count << endl;
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 20.01.2012, 20:21   #5
Dmitry_Web
Пользователь
 
Аватар для Dmitry_Web
 
Регистрация: 01.11.2011
Сообщений: 43
По умолчанию

Вроде бы так, но что то не работает.
Код:
#include <iostream.h>
#include <math.h>
int main()
{
	double a[100][100];
	int i, j, n, m, k, t;
	cout<<"Vvedite razmer massiva n*m ";
	cin>>n>>m;
	cout<<"Vvedite elementi massiva\n";
	for(i=0; i<n; i++)
	{
		for(j=0; j<m; j++)
		{
			cout<<"a["<<i<<"]["<<j<<"]= ";
			cin>>a[i][j];
		}
	}
	for(k=t=0, j=0; j<m; j++)
	{
		for(i=0; i<n; i++)
		{
			if(a[i][j]<0) k++;
			else k=0;
		}
		if(k>0)
		{
			t++;
		}
	}
	cout<<t<<endl;
	return 0;
}
Dmitry_Web вне форума Ответить с цитированием
Старый 21.01.2012, 02:00   #6
Dmitry_Web
Пользователь
 
Аватар для Dmitry_Web
 
Регистрация: 01.11.2011
Сообщений: 43
По умолчанию

Разобрался, работает!
Код:
#include <iostream.h>
int main()
{
	double a[100][100];
	int i, j, n, m, k, t;
	cout<<"Vvedite razmer massiva n*m ";
	cin>>n>>m;
	cout<<"Vvedite elementi massiva\n";
	for(i=0; i<n; i++)
	{
		for(j=0; j<m; j++)
		{
			cout<<"a["<<i<<"]["<<j<<"]= ";
			cin>>a[i][j];
		}
	}
	for(k=t=0, j=0; j<m; j++)
	{
		for(i=0; i<n; i++)
		{
			if(a[i][j]<0) k++;
			else k=0;
		}
		if(k>1) //но если больше нуля - неработает, вопрос почему?
		{
			t++;
		}
	}
	cout<<"Kol-vo ravno "<<t<<endl;
	return 0;
}
Dmitry_Web вне форума Ответить с цитированием
Старый 21.01.2012, 02:04   #7
Dmitry_Web
Пользователь
 
Аватар для Dmitry_Web
 
Регистрация: 01.11.2011
Сообщений: 43
По умолчанию

Да, и вот ещё задачка:
Дана целочисленная квадратная матрица А. Создайте массив В, состоящий из элементов, находящихся в тех строках исходной матрицы, которые не содержат отрицательных элементов. Определите их произведение.
Dmitry_Web вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
количество строк, в которых нет ни одного нулевого элемента в матрице Sylar9 Общие вопросы C/C++ 3 24.12.2011 15:50
(turbo pascal) Ввести строку. Определить количество слов, содержащих букву Z lexa_soad Помощь студентам 0 04.12.2011 19:31
определить количество столбцов, не содержащих ни одного нулевого элемента Larka12 Помощь студентам 1 07.02.2011 20:52
Определить порядковый номер 1-го положительного элемента массива А BaNNeD Помощь студентам 4 19.12.2010 19:10
Определить количество разбиения положительного целого числа и глубину рекурсии в рекурсивном алгоритме! hazk Общие вопросы C/C++ 1 05.12.2010 14:52