Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 27.02.2011, 21:57   #1
Guzal
Форумчанин
 
Аватар для Guzal
 
Регистрация: 11.09.2010
Сообщений: 101
Репутация: 10
По умолчанию куда вставить еще одно условие?С++

программа находит кол-во седловых точек матрицы n*m,
проблема в том, что если матрица нулевая, то кол-во седловых точек ведь будет равно ко-ву нулей?то есть n*m, куда можно вставить это условие?
Код:

 		 for(i=0; i<n; i++)
		  for(j=0; j<m; j++)
		  	    if (a[i][j]==0) l=n*m; out<<l;

сам код
Код:

#include <iostream>
#include <fstream>
	using namespace std;
int main()
{

    int n, m;

		ifstream in;
		ofstream out;	
		 out.open("output.txt");
		 in.open("input.txt");
		
    in>>n>>m;
				  
	int a[n][m],i,j, count=0,l;
	int max=0,min=32565,jmin,imax; 
		
	           
		for(i=0; i<n; i++)
		  for(j=0; j<m; j++)
		 
		   in>>a[i][j];
		   	
	                      
		 for(i=0; i<n; i++)
		  for(j=0; j<m; j++)
		   {
		      if(a[i][j]<min)
		      {
					min=a[i][j];
			     jmin=j;
		      }
		      if(j==m-1)
		      {
		      for(int k=0; k<m; k++)
					if(a[k][jmin]>max)
						{
		            max=a[k][jmin];
                                   imax=k;  
                                 						
                  }	
					if(max==min)
                    	{count++;  out<<count<<endl;}
					min=32565;
					max=0;
			} 
			
		   }
return 0;
}

заранее спасиибо
__________________
I'm a rebel. [I think positively].
Guzal вне форума   Ответить с цитированием
Старый 27.02.2011, 22:04   #2
fizteh
Пользователь
 
Регистрация: 27.02.2011
Адрес: Москва
Сообщений: 46
Репутация: 10

icq: 265879269
skype: m..simka
По умолчанию

При вводе элементов массива пусть будет так:
Код:

int index=1;
l=n*m;
for(i=0; i<n; i++)
 for(j=0; j<m; j++)
 {
	 in>>a[i][j]; 
	 if (a[i][j]!=0)
		 index=0;
 }
 if (index==0)
{
	 cout<<l<<endl;
         return 0;
}

fizteh вне форума   Ответить с цитированием
Старый 27.02.2011, 22:13   #3
Guzal
Форумчанин
 
Аватар для Guzal
 
Регистрация: 11.09.2010
Сообщений: 101
Репутация: 10
По умолчанию

Цитата:
Сообщение от fizteh Посмотреть сообщение
При вводе элементов массива пусть будет так:
Код:


	 if (a[i][j]!=0)

тут видимо a[i][j]==0 наоборот, спасибо большое, работает!
__________________
I'm a rebel. [I think positively].
Guzal вне форума   Ответить с цитированием
Старый 27.02.2011, 22:20   #4
fizteh
Пользователь
 
Регистрация: 27.02.2011
Адрес: Москва
Сообщений: 46
Репутация: 10

icq: 265879269
skype: m..simka
По умолчанию

Нет!!! именно (a[i][j]!=0) !!! я подразумевал, что изначально матрица нулевая, поэтому посчитал l, а если нашелся элемент не нуль, то она уже не нулевая.

Последний раз редактировалось fizteh; 27.02.2011 в 22:23.
fizteh вне форума   Ответить с цитированием
Старый 27.02.2011, 22:28   #5
Guzal
Форумчанин
 
Аватар для Guzal
 
Регистрация: 11.09.2010
Сообщений: 101
Репутация: 10
По умолчанию

тогда ответ будет неправильный ни для нулевой ни для не нулевой матриц..
Код:

#include <iostream>
#include <fstream>
	using namespace std;
int main()
{

    int n, m;

		ifstream in;
		ofstream out;	
		 out.open("output.txt");
		 in.open("input.txt");
		
    in>>n>>m;
				  
	int a[n][m],i,j, count=0,l;
	int max=0,min=32565,jmin,imax; 
		
	     int index=1;
	     l=n*m;      
		for(i=0; i<n; i++)
		  for(j=0; j<m; j++)
		   {
		   in>>a[i][j];
		   if(a[i][j]!=0)
		   	index=0;
		   }	
	        if(index==0)
	        {
	        	out<<l<<endl;
	        	return 0;
	        }              
		 for(i=0; i<n; i++)
		  for(j=0; j<m; j++)
		   {
		      if(a[i][j]<min)
		      {
					min=a[i][j];
			     jmin=j;
		      }
		      if(j==m-1)
		      {
		      for(int k=0; k<m; k++)
					if(a[k][jmin]>max)
						{
		            max=a[k][jmin];
                                   imax=k;  
                                 						
                  }	
					if(max==min)
                    	{count++;  out<<count<<endl;}
					min=32565;
					max=0;
			} 
			
		   }
return 0;
}

__________________
I'm a rebel. [I think positively].
Guzal вне форума   Ответить с цитированием
Старый 27.02.2011, 22:43   #6
fizteh
Пользователь
 
Регистрация: 27.02.2011
Адрес: Москва
Сообщений: 46
Репутация: 10

icq: 265879269
skype: m..simka
По умолчанию

прошу прощение, if (index==1) {...} , а не нулю!
fizteh вне форума   Ответить с цитированием
Старый 27.02.2011, 23:05   #7
Guzal
Форумчанин
 
Аватар для Guzal
 
Регистрация: 11.09.2010
Сообщений: 101
Репутация: 10
По умолчанию

да, спасибо,
но вот только заметила, если в матрице есть нули например
1 0 3
4 5 0
7 0 9
то ответ должен быть 7, а так ничего не выходит (
__________________
I'm a rebel. [I think positively].
Guzal вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как к условию, добавить еще условие valerij Microsoft Office Excel 8 22.10.2010 21:59
Куда вставить проверку на чётность? ElektrikMaximka Помощь студентам 5 09.10.2010 22:08
куда вставить код программы делфи Резеда Помощь студентам 9 21.12.2009 13:00
Одно поле StringField в DataView в Rave. Как добавить еще? Leser Помощь студентам 1 06.10.2008 15:00


04:42.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru