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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.06.2011, 17:23   #1
Jully19
Новичок
Джуниор
 
Регистрация: 22.06.2011
Сообщений: 4
По умолчанию Вывести номер столбца в котором все элементы отрицательные.

Забыл указать в названии темы, что С++.

Несмотря на то, что задача довольно тривиальная, решение её я не обнаружил ни на просторах Интернета, ни у вас в "типичных задачах". Может, плохо искал.
Сразу покажу код, естественно, нерабочий, а там уже объясню.
Код:
#include "stdafx.h"
#include <iostream>
#include <time.h>
#include <stdio.h>
#include <math.h>

using namespace System;
using namespace std;

int main(array<System::String ^> ^args)
{
	srand (time(NULL));
    int m,n,i,j;
	double arr[20][20];
	cin>>n;
	cin>>m;
	for(i=0;i<n;i++)
	{
		for(j=0;j<m;j++)
		{
			/*cin>>*/arr[i][j]=(3-rand()%17)/3.0;
		}
	}
	for(i=0;i<n;i++)
	{
		for(j=0;j<m;j++)
		{
			cout.setf(ios::fixed);
			cout.precision(3);
			cout<<arr[i][j];
			cout<<"\t";
		}
		cout<<"\n";
	}
	for(i=0;i<n;i++)
	{
	for (j=0; j<m; j++)
	{
		
		if (arr[i][j]<0)
	
		{cout<<"Homep cToJI6ca "<<j<<endl;
	
	}
	}
	system("PAUSE");
    return 0;
}
Не обращайте внимание на то, как я формирую массив - это абсолютно неважно, нужны любые вещественные числа.

Интересует только последний цикл for.
Я прекрасно понимаю, почему программа неправильно работает(и даже сам вам могу об этом рассказать), но не могу понять, как сделать так, чтобы она работала правильно.
Были догадки какие-то про счетчики, несколько условий в if, но сообразить не могу, как это всё организовать.
Подскажите, пожалуйста.

Последний раз редактировалось Jully19; 22.06.2011 в 17:36. Причина: Забыл указать в названии темы, что С++.
Jully19 вне форума Ответить с цитированием
Старый 22.06.2011, 17:38   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А почему в циклах <, а не <=?
Как-то так вроде
Код:
for(i=0; i≤n; i++)
{
   int c=0;
   for(j=0; j≤m; j++)
       if(arr[i][j]<0) c++;
   if(c==n) cout << j+1;
}
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 22.06.2011 в 17:41.
Alex11223 вне форума Ответить с цитированием
Старый 22.06.2011, 17:39   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

С потолка:
Код:
	
for(i=0;i<n;i++){ bool o=true;
	for (j=0; j<m && arr[i][j]<0; j++);
	if (j==m) cout<<"Homep cToJI6ca "<<i<<endl;
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.06.2011, 17:46   #4
Jully19
Новичок
Джуниор
 
Регистрация: 22.06.2011
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
А почему в циклах <, а не <=?
Как-то так вроде
Код:
for(i=0; i≤n; i++)
{
   int c=0;
   for(j=0; j≤m; j++)
       if(arr[i][j]<0) c++;
   if(c==n) cout << j+1;
}
У вас j не переобозначается, поэтому выводится мне то, что я ввёл+1 =)

Цитата:
С потолка:
Код:


for(i=0;i<n;i++){ bool o=true;
for (j=0; j<m && arr[i][j]<0; j++);
if (j==m) cout<<"Homep cToJI6ca "<<i<<endl;
}
Огромное спасибо! Вроде бы работает, как надо, только мне не СТРОКИ, а СТОЛБЦА.
Но попробую с этим разобраться =)
Jully19 вне форума Ответить с цитированием
Старый 22.06.2011, 17:50   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
только мне не СТРОКИ, а СТОЛБЦА.
Значит m и n местами меняй. Я не увидел как у тебя массив вводится (просто не посмотрел)
Код:
for(i=0;i<m;i++){ bool o=true;
for (j=0; j<n && arr[i][j]<0; j++);
if (j==n) cout<<"Homep cToJI6ca "<<i<<endl;
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.06.2011, 18:02   #6
Jully19
Новичок
Джуниор
 
Регистрация: 22.06.2011
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Значит m и n местами меняй. Я не увидел как у тебя массив вводится (просто не посмотрел)
Код:
for(i=0;i<m;i++){ bool o=true;
for (j=0; j<n && arr[i][j]<0; j++);
if (j==n) cout<<"Homep cToJI6ca "<<i<<endl;
}

Всё равно что-то не так.

И что значит
Цитата:
bool o=true;
? Оно тут вообще нужно?
Jully19 вне форума Ответить с цитированием
Старый 22.06.2011, 18:06   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
У вас j не переобозначается, поэтому выводится мне то, что я ввёл+1 =)
ой, точнее вроде как-то так должно работать)
Код:
for(int i=0; i<m; i++)
	{
		int c=0;
		for(int j=0; j<n; j++)
			if(arr[i][j]<0) c++;
		if(c==n) cout << ' ' << i+1;
	}
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 22.06.2011, 19:34   #8
Jully19
Новичок
Джуниор
 
Регистрация: 22.06.2011
Сообщений: 4
По умолчанию

Разобрался, всем спасибо.

Код:
// TwoMass.cpp: главный файл проекта.

#include "stdafx.h"
#include <iostream>
#include <time.h>
#include <stdio.h>
#include <math.h>

using namespace System;
using namespace std;

int main(array<System::String ^> ^args)
{
	srand (time(NULL));
    int m,n,i,j,c;
	double arr[20][20];
	cin>>m;
	cin>>n;
	for(i=0;i<m;i++)
	{
		for(j=0;j<n;j++)
		{
			/*cin>>*/arr[i][j]=(3-rand()%17)/3.0;
		}
	}
	for(i=0;i<m;i++)
	{
		for(j=0;j<n;j++)
		{
			cout.setf(ios::fixed);
			cout.precision(3);
			cout<<arr[i][j];
			cout<<"\t";
		}
		cout<<"\n";
	}

	for(int j=0; j<n; j++)
	{
		c=0;
		for(int i=0; i<m; i++)
			if(arr[i][j]<0) c++;
		if(c==m) cout << " " << j;
	}
	
	system("PAUSE");
    return 0;
}
Jully19 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Матрица целых чисел М(3,4). Все отрицательные элементы заменить их квадратами. (Basic) AnnKarpinskaya Помощь студентам 1 16.05.2011 14:51
Все отрицательные элементы массива А заменить на сумму, а положительные на полусумму предшествующих Lada05 Помощь студентам 1 27.10.2010 15:44
В двухмерном массиве все отрицательные элеметны заменить на их модули. А новый массив вывести на экран JulLy Паскаль, Turbo Pascal, PascalABC.NET 11 28.04.2009 08:13
в начале все отрицательные, затем все положительные элементы в матрице motaro Паскаль, Turbo Pascal, PascalABC.NET 2 07.03.2008 19:16