Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Fesmer
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 18
#1

Задача на массивы - C++

13.11.2012, 22:26. Просмотров 301. Ответов 5
Метки нет (Все метки)

Дана матрица размерностью N на M, где большинство элементов равно 0. Нужно все элементы матрицы разделить на самое большое число по модулю.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.11.2012, 22:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Задача на массивы (C++):

задача на массивы. - C++
Ломаю голову над такой вот загагулиной допусим есть 16ти элементный массив возможные значения в нем так же 1 -16 13 13 13 4 13 14 6...

Задача на массивы - C++
Прозрачная пластина состоит из 8 слоев, показатели преломления заданы массивом n=. Луч входит в пластину из ваккума под углом...

Задача на массивы c++ - C++
В одномерном массиве, состоящем из n целых элементов, вычислить: 1) номер максимального элемента массива; 2) произведение элементов...

Задача на массивы - C++
Удалить из массива M(25) все элементы, значения которых в этом массиве, оставить по одному. Элементы массива задать рандомно. Есть...

Задача на массивы - C++
Просмотрел все по поиску, есть одна похожая тема, но без окончания, решил создать новую из уважения к автору, чтобы не вклиниваться...не...

Задача на массивы. - C++
Помогуте сделать задачи по массивам! 1.Написать функцию, которая возвращает количество элементов заданного в качестве параметра массива...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
John Prick
779 / 712 / 131
Регистрация: 27.07.2012
Сообщений: 2,045
Завершенные тесты: 3
13.11.2012, 22:45 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/*
Дана матрица размерностью N на M, где большинство элементов равно 0.
Нужно все элементы матрицы разделить на самое большое число по модулю.
*/
 
#include <iostream>
#include <algorithm>
#include <iterator>
#include <functional>
#include <stdlib.h>
 
const int N = 10;
const int M = 5;
 
double getRand(void) { return 36.0 / double(rand() % 10 + 1); }
 
int main(void)
{
    setlocale(0, "rus");
 
    double Matrix[N][M];
    double * begin = &Matrix[0][0];
    double * end = &Matrix[0][0] + N * M;
    std::generate(begin, end, getRand);
 
    for (int i = 0; i < M; ++i)
    {
        std::copy(begin + i * N, begin + i * N + N, std::ostream_iterator<double>(std::cout, " "));
        std::cout << '\n';
    }
 
    double max = *std::max_element(begin, end);
    std::cout << '\n' << "Макс.элемент: " << max << "\n\n";
 
    std::transform(begin, end, begin, std::bind2nd(std::divides<double>(), max));
 
    for (int i = 0; i < M; ++i)
    {
        std::copy(begin + i * N, begin + i * N + N, std::ostream_iterator<double>(std::cout, " "));
        std::cout << '\n';
    }   system("pause");
    return 0;
}
UMZ
1 / 1 / 0
Регистрация: 15.06.2010
Сообщений: 12
14.11.2012, 00:53 #3
Задание: Для Х, принимающего значения от XN=-30 до XK=50 с шагом ∆X=0,6, определить Y.
При условии:

Y= log3x, если x>6,8
Y= x-32, если 0<=x<=6,8
Y= sin(x), если x<0.
Результат выдать в форме таблицы значений X иY.

Проверьте, пожалуйста, решение, которое я здесь приведу. Исправьте, если что не так или предложите свой вариант, если считаете, что ваш вариант лучше. Только не судите строго, я С++ совсем недавно начал изучать и ошибки вполне возможны.
Код писал для компилятора Visual C++ 2008.
Решение:
#include "stdafx.h"
#include <iostream>
#include <string>
#include <fstream>
#include <math>
using namespace std;

//int _tmain(int argc, _TCHAR* argv[])
int main()
{
double a[35]; //задаю одномерный массив a[x] размерностию 35 на 35
for (double x=-20; x<0; x=x+0,6) // начальное значение х, конечное значение х, шаг х
a[x]= sin(x); // присваию значение массива функции
for (double x=0; x<=6,8; x=x+0,6)
a[x]= x-32;
for (double x=6,8; x<20; x=x+0,6)
a[x]= ln(x)/ln(3);
for (double j=0; j<=100; j++)
cout<<"x="<<x<<"y="<<a[x]<<endl; //вывод значения на экран (используя консольное приложение)
return 0;
}
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
14.11.2012, 01:02 #4
John Prick, в условии еще модуль требовался. Вроде как, надо найти максимальный по модулю элемент матрицы, а потом на него делить

Добавлено через 2 минуты
UMZ, создайте свою тему и там задавайте вопрос
John Prick
779 / 712 / 131
Регистрация: 27.07.2012
Сообщений: 2,045
Завершенные тесты: 3
14.11.2012, 09:59 #5
I.M., да, про модуль забыл. Но тогда в одну строчку не записать, потому что нужен шаблон compose, которого в стандарте нет (В MSVC2008 нету). Два раза transform применять придётся.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
14.11.2012, 10:07 #6
Цитата Сообщение от Fesmer Посмотреть сообщение
Дана матрица размерностью N на M, где большинство элементов равно 0. Нужно все элементы матрицы разделить на самое большое число по модулю.
Если большинство элементов равны некоторой константе, или могут быть быстро вычислены, то их можно вообще не хранить, а только подразумевать, матрица, в которой так и делается называется разреженной. Причём, если потом 0 поменяется на что то другое, то его можно добавить в физический массив, который есть внутреннее составное данное разреженного массива, состоящее из действительно хранимых его элементов. Достаточно ли велика твоя матрица, чтоб применение разреженной матрицы вместо обычной было выгодно?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2012, 10:07
Привет! Вот еще темы с ответами:

задача на массивы - C++
Дан массив размера N и целое число K (1 ≤ K ≤ N). Перед элементом массива с порядковым номером K вставить новый элемент с нулевым значением.

Задача на массивы - C++
Помогите пожалуйста. С задачей на массивы.12 вариант 1 задание

Задача на массивы - C++
Дана действительная квадратная матрица порядка 12. Заменить нулями все ее элементы, расположенные на главной диагонали и выше нее.

Задача на массивы - C++
Дан массив размером n*n,элементы которого целые числа.Вычислить А^n,где n-натуральное число.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
14.11.2012, 10:07
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru