Автор Тема: Ув. пользователи форума, помогите пожалуйста решить задачки по С / С++  (Прочитано 2824 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Phantom

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Ув. пользователи, помогите пожалуйста решить задачки по С / С++, заранее благодарю!

1) Переписать все элементы целочисленного массива BG, кратные 3, подряд в массив ZBG. Массив BG имеет N элементов. (для описания массивов, использовать класс Massiv)

2) Найти целое арифметическое наименьших, отрицательных элементов каждого столбца столбца матрицы FZ{m,m} находящихся над главной диагональю. (прочитать И.Д. из файла на диске)

3) Найти наименьший по абсолютной величине, элемент матрицы A{m,n}, (записать И.Д. и результат в файл на диск)
 
« Последнее редактирование: 01 Июня 2011, 23:37:53 от Phantom »

Оффлайн Phantom

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Помогите решить Задачу по С / С++
« Ответ #1 : 01 Июня 2011, 23:27:28 »
Ув. пользователи, помогите пожалуйста решить задачки по С / С++, заранее благодарю!

1) Переписать все элементы целочисленного массива BG, кратные 3, подряд в массив ZBG. Массив BG имеет N элементов. (для описания массивов, использовать класс Massiv)

2) Найти целое арифметическое наименьших, отрицательных элементов каждого столбца столбца матрицы FZ{m,m} находящихся над главной диагональю. (прочитать И.Д. из файла на диске)

3) Найти наименьший по абсолютной величине, элемент матрицы A{m,n}, (записать И.Д. и результат в файл на диск)
 
Люди помогите пожалуйста...

Оффлайн testtest

  • Старожил
  • ****
  • Сообщений: 376
    • Просмотр профиля
первая:
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>

template<int m>
bool zeroMod(int x)
{
return ((x % m) == 0);
}
template<int m>
bool noMod(int x)
{
return ((x % m) != 0);
}

class Massiv
{
public:
Massiv(std::vector<int> &x)
: a_(x)
{
;
}
~Massiv()
{
;
}

void printme(std::ostream& s)
{
std::ostream_iterator<int> o(s, " ");
std::copy(a_.begin(), a_.end(), o);
s << std::endl;
}

void filtermod(int x, std::vector<int> &b)
{
b.resize(std::count_if(a_.begin(), a_.end(), zeroMod<3>));
std::remove_copy_if(a_.begin(), a_.end(), b.begin(), noMod<3>);
}

protected:
private:
std::vector<int> &a_;
};

int main()
{
std::vector<int> x;
std::back_insert_iterator<std::vector<int> > i(x);
const int N = 15;
int t = 0;

while (++t <= N)
*i++ = t;

Massiv bg(x);
std::cout << "BG: " << std::endl;
bg.printme(std::cout);

std::vector<int> y(0);
bg.filtermod(3, y);

Massiv zbg(y);

std::cout << "ZBG: " << std::endl;
zbg.printme(std::cout);

return 0;
}
« Последнее редактирование: 15 Июня 2011, 16:39:07 от testtest »

Оффлайн testtest

  • Старожил
  • ****
  • Сообщений: 376
    • Просмотр профиля
вторая:
/*
data.txt:

3
1 -2 3
4 5 -3
7 8 9

*/

#include <iostream>
#include <fstream>
#include <vector>
#include <iterator>
#include <algorithm>

int main()
{
std::vector<float> x;
unsigned int m = 0, i = 0;
std::ifstream infile("data.txt");
if (!infile)
{
std::cerr << "data.txt not found!" << std::endl;
return -1;
}

infile >> m;
if (m <= 0 || infile.fail())
{
std::cerr << "joke right?" << std::endl;
return -1;
}
x.resize(m * m);

std::istream_iterator<float> in(infile);
std::istream_iterator<float> eos;

while (in != eos && i < m * m)
x[i++] = *(in++);

if (i != m * m)
{
infile.close();
std::cerr << "not enough data" << std::endl;
return -1;
}

float sum = 0;
int count = 0;
for (unsigned int i = 0; i < m; ++i)
for (unsigned int j = i + 1; j < m; ++j)
if (x[i * m + j] < 0)
{
sum += x[i * m + j];
++count;
}

if (count > 0)
std::cout << "Mid: " << sum / count << std::endl;
else
std::cout << "No subzeros over diag" << std::endl;

return 0;
}

Оффлайн testtest

  • Старожил
  • ****
  • Сообщений: 376
    • Просмотр профиля
третья:

/*
data.txt:

1 -2 3 4
5 -3 7 8
9 3 -10 3

*/

#include <iostream>
#include <fstream>
#include <vector>
#include <iterator>
#include <cmath>

int main()
{
std::vector<float> x;
std::ifstream infile("data.txt");
if (!infile)
{
std::cerr << "data.txt not found!" << std::endl;
return -1;
}

std::istream_iterator<float> in(infile);
std::istream_iterator<float> eos;

while (in != eos)
x.push_back(*(in++));

if (x.size() == 0)
{
std::cerr << "empty data.txt" << std::endl;
return -1;
}

float min = x[0];
float absmin = fabsf(min);
std::vector<float>::iterator i;
for (i = x.begin(); i != x.end(); ++i)
{
if (fabsf(x[0]) < absmin)
{
min = x[0];
absmin = fabsf(min);
}
}

std::ofstream("result.txt") << min;

return 0;
}