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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2008, 18:07   #1
Blad47
Пользователь
 
Регистрация: 10.11.2008
Сообщений: 93
По умолчанию Ошибка перестановки эл.массива

Написал программу,но возникла ошибка при перестановке элементов массива в порядке возрастания.
Вок код
Код:
#include "stdafx.h"
#include "conio.h"
#include "stdio.h"
#include "iostream"
#include "stdlib.h"
using namespace std;
int main()

{
 int mas[5][5];
 int i,j;
 int sum=0;
 int summa_vseh=0;
 int perest=0;
 for(i=0;i<5;i++)
 {
	 cout<<"\n";
	for(j=0;j<5;j++)
	{
		mas[i][j]=-30+rand()%21;
		cout<<" "<<mas[i][j];
	}
 }
 
 cout<<"\n"<<"OtsortirovannblU";
for(i=0;i<5;i++)
{
	cout<<"\n";
	for(j=0;j<5;j++)
	{
		if(mas[i][j]>mas[i][j+1])
		  {
			  perest=mas[i][j];
			  mas[i][j]=mas[i][j+1];
			  mas[i][j+1]=perest;
		  }
		cout<<" "<<mas[i][j];      
	}
}

 for(i=0;i<5;i++)
 {
	 for(j=0;j<5;j++)
	 {
        sum=sum+mas[i][j];
		
	 }
	 cout<<"\n";
	 cout<<"sum po strokam "<<sum;
	 sum=0;
 }
  for(j=0;j<5;j++)
  {
    for(i=0;i<5;i++)
	{
		sum=sum+mas[i][j];
		
	}
	    cout<<"\n";
		cout<<"sum po stolbcam "<<sum;
		sum=0;
  }
  for(i=0;i<5;i++)
  {
	  for(j=0;j<5;j++)
	  {
		  summa_vseh=summa_vseh+mas[i][j];
	  }
  }
  cout<<"\n"<<"summa vseh elementov "<<summa_vseh;
  for(i=0;i<4;i++)
  {
	  cout<<"\n";
	  for(j=0;j<5;j++)
	  {
		  if(mas[i][j]<0)
		  {
			  mas[i][j]=0;
		  }
		  cout<<" "<<mas[i][j];
	  }
  }
 
		  
   
 getch();
 return 0;
}
Blad47 вне форума Ответить с цитированием
Старый 13.12.2008, 19:13   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

по строкам сортируй вот так

Код:
for(i=0;i<5;i++)
{
	cout<<"\n";
	for(j=0;j<5;j++)

	{
		for(int k=j+1;k<5;k++)
		{
		if(mas[i][j]>mas[i][k])
		  {
			  perest=mas[i][j];
			  mas[i][j]=mas[i][k];
			  mas[i][k]=perest;
		  }
		}
		cout<<" "<<mas[i][j];      
	}
}

Последний раз редактировалось counter; 13.12.2008 в 19:28.
counter вне форума Ответить с цитированием
Старый 13.12.2008, 23:17   #3
Blad47
Пользователь
 
Регистрация: 10.11.2008
Сообщений: 93
По умолчанию

Спасибо,поясните пожалуйста- почему?
Blad47 вне форума Ответить с цитированием
Старый 13.12.2008, 23:28   #4
Blad47
Пользователь
 
Регистрация: 10.11.2008
Сообщений: 93
По умолчанию

Разобрался,спасибО!
Blad47 вне форума Ответить с цитированием
Старый 13.12.2008, 23:58   #5
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

значит так

первый цикл пробегает массив по строкам
Код:
for(i=0;i<5;i++)
следующая конструкция
сравнивает элементы в строке и переставляет их (сортировка выбором наименьшего)
Код:
for(j=0;j<5;j++)

	{
		for(int k=j+1;k<5;k++)
		{
                          if(mas[i][j]>mas[i][k])
		  {
			  perest=mas[i][j];
			  mas[i][j]=mas[i][k];
			  mas[i][k]=perest;
		  }
		}
		     
	}
counter вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Шифр вертикальной перестановки funny Общие вопросы C/C++ 0 27.09.2008 18:59
программа перестановки чисел натурального ряда от 1 до 10 Ольга 01 Общие вопросы C/C++ 1 28.07.2008 20:09
перебрать все варианты перестановки строк sv_mix Помощь студентам 2 26.07.2008 17:48
переписать из массива в линейный двунаправленный список чётные элементы массива Black_Ak24 Помощь студентам 12 08.01.2008 00:44