Форум: Форум C++Разное
Новые темы: 00
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Обработка числовых массивов
 
 автор: Miha_drinking_bout   (22.11.2010 в 15:26)   письмо автору
2.5 Кб
 
 

Дано натуральное число n. Сформировать произвольную матрицу размерностью n*n. Найти наибольший и наименьший элемент заштрихованной части.
См. вложенный файл гиф.
В общем то из всего этого не могу выбрать числа из заштрихованной области в temp массив для сортировки. Размер n матрицы может быть как четный, так и нечетный (вбивается в ручную). Знаю что решение элементарное, но ничего в голову не идет - короче опять туплю. Посоветуйте плиз - как выбрать данные из заштрихованной области.

  Ответить  
 
 автор: Vorox   (25.11.2010 в 15:33)   письмо автору
 
   для: Miha_drinking_bout   (22.11.2010 в 15:26)
 

#include <iostream>
#include <random>
using namespace std;
int main()
{
int n; // размерность исход. массива
cin>>n;
float **a; // исходный массив
float *tmp; // куда будем писать заштрих. область

//инициализация исходного массива
a= new float*[n];
for(int i=0;i<n;i++)
{
a[i]=new float[n];
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
a[i][j]=int((float)rand()/(RAND_MAX+1)*20-10);
}
}
//конец
int count=n;
int m=0;
//определение размерности заштрихованного массива n+(n-2)+(n-4)...
do
{
m+=count;
count-=2;

}while(count>0);

tmp=new float[m];
count=0;
int count2=0;
// запись заштрихованной области a[i... n-i][i] в массив tmp
while(count<(n/2+1))
{
for(int j=count;j<(n-count);j++)
{
tmp[count2]=a[j][count];
count2++;
}
count++;
};
//сортировка пузырьком
bool l=true;
while(l)
{
l=false;
for(int i=0;i<m-1;i++)
if(tmp[i]>tmp[i+1])
{
float t=tmp[i];
tmp[i]=tmp[i+1];
tmp[i+1]=t;
l=true;
}
}
//вывод
cout<<"Matrix:"<<endl;
for(int i=0;i<n;i++)
{
cout<<endl;
for(int j=0;j<n;j++)
{
cout<<a[i][j]<<" ";
}
}

cout<<endl<<endl<<"SHTRIH_MATRIX:"<<endl;
for(int i=0;i<m;i++)
cout<<tmp[i]<<" ";


cout<<endl<<"min = "<<tmp[0]<<" "<<"max = "<<tmp[m-1];
return 1;
}
компилятор Visual Studio

  Ответить  
 
 автор: Miha_drinking_bout   (26.11.2010 в 16:41)   письмо автору
 
   для: Vorox   (25.11.2010 в 15:33)
 

Спасибо огромное. Только ввел меня в заблуждение немного #include <random> - как понял имелась в виду библиотека описывающая ф-цию rand заменил на #include <stdlib.h>. Компилил GCC (в CL тоже компилится). Ура работает!!! Еще раз спасибо.

  Ответить  
 
 автор: Vorox   (26.11.2010 в 22:46)   письмо автору
 
   для: Miha_drinking_bout   (26.11.2010 в 16:41)
 

обращайся :)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования