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

Манипуляции с массивами. Как сделать? - C++

Восстановить пароль Регистрация
 
Andrey1990
0 / 0 / 0
Регистрация: 31.12.2011
Сообщений: 4
31.12.2011, 16:10     Манипуляции с массивами. Как сделать? #1
Товарищи, с наступающим всех!

Очень нужна помощь. А то в новом году не допустят к сессии.

Есть две небольших задачки. Алгоритмы писать не надо, просто написать какие функции надо использовать.
1) Сделать пару манипуляций с массивом. И вывести сумму элементов в MessageBox. MessageBox, в принципе не столь важен, главное работа с массивом.
2) Найти дробную часть числа.

Все комментарии сделал в коде, думаю будет понятно. Вроде все расписал. Но если что, то могу дополнительные комментарии сделать.

Задача №1:

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include "stdafx.h"
#include <Windows.h> // для MessageBox
 
double ArrayManipulation(double array[]); // функция для работы с массивом
 
int _tmain(int argc, _TCHAR* argv[])
{
    double sum = 0.0; // сумма элементов массива
    double my_array[] = {15.3, 12.0, 12.0, 7.7, 3.3, 4.0, 1.5, 8.0, 9.0, 19.6, 18.0}; // исходный (передоваемый) массив
 
    sum = ArrayManipulation(my_array);
 
    // 7) Как вывести параментр sum в MessageBox???
 
    MessageBox(NULL, L"Сумма элементов Sum массива my_array[] равна ", L"Решение", MB_ICONINFORMATION | MB_OK);
 
    
    return 0;
}
 
double ArrayManipulation(double array[])
{
    int n = 0; // количество элементов в исходном (передоваемом) массиве
    double sum = 0.0; // сумма элементов массива
    double inner_array[] = {0}; // внутренний массив 
 
    // А можно ли как-нибудь задать безразмерный массив???
    // Что-то наподобие: double inner_array[];
 
    // Собственно, основное что нужно сделать...
    /*
    
    Среда: Microsoft Visual Studio 2010 C++ Express 
    
    Писать алгоритмы не надо. Нужны наиболее подходящие стандартные функции C++ и что для этого подключаем в заголовке.
    Единственное, последовательность действий должна быть именно такой. Эта условия задачи.
 
    1) Определить размерность исходного (передоваемого) массива array[] и присвоить это значение параметру n.
 
    2) Поменять размерность внутреннего массива inner_array[] на размерность исходного (передоваемого) массива array[].
    Это как раз то, что мы нашли в пункте номер 1.
 
    3) Скопировать ВСЕ элементы исходного массива array[] во внутренний массив inner_array[]
 
    4) Отсортировать внутренний массив inner_array[] по возрастанию 
 
    5) Отсортировать внутренний массив inner_array[] по убыванию
 
    */
 
    // 6) Найти сумму всех элементов inner_array[], но это я вроде знаю. :) Так что основное это манипуляции с массивом.
 
    for(int i = 0; i <= n - 1; i++)
        sum += inner_array[i];
 
    return sum;
}
Задача №2:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "stdafx.h"
 
int _tmain(int argc, _TCHAR* argv[])
{
    double x = 4.7;
    double x_FractionalPart = 0.0; 
 
    /*
 
    Вопрос??? Как наити дробную часть x (т.е. в данном примере x_FractioanPart должно быть равно 0.7)???
    
    x_FractionalPart = ???;
    
    Смотрел math.h, там такого нет :(
    */
 
    return 0;
}
PS. Еще раз всех с наступающим.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
S_A_L
 Аватар для S_A_L
8 / 8 / 0
Регистрация: 22.12.2011
Сообщений: 14
31.12.2011, 16:46     Манипуляции с массивами. Как сделать? #2
2)
double x =4.7;
double x_FractionalPart = x - int(x)
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16828 / 5249 / 321
Регистрация: 30.03.2009
Сообщений: 14,133
Записей в блоге: 26
31.12.2011, 16:47     Манипуляции с массивами. Как сделать? #3
2.

C
1
x_FractionalPart = x - floor (x);
Если препод окажется более-менее шарящим, то он скажет, что такой код для отрицательных чисел не подойдёт, в этом случае надо добавить код:

C
1
2
if (x < 0)
  1.0 - x_FractionalPart;
Это из-за того, что у floor округление всегда делается в меньшую (по значению) сторону, а потому для отрицательных чисел меньшая сторона удаляет число от нуля

Добавлено через 52 секунды
Цитата Сообщение от S_A_L Посмотреть сообщение
2)
double x =4.7;
double x_FractionalPart = x - int(x)
Проблема с этим кодом такая, что для больших чисел приведение к int'у будет с потерей точности. Правда студентам об этом задумываться не положено, а потому такой вариант сойдёт
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
31.12.2011, 16:52     Манипуляции с массивами. Как сделать? #4
Цитата Сообщение от Andrey1990 Посмотреть сообщение
просто написать какие функции надо использовать.
сортировка
сумма
asm
 Аватар для asm
62 / 35 / 1
Регистрация: 05.10.2011
Сообщений: 137
31.12.2011, 17:03     Манипуляции с массивами. Как сделать? #5
Цитата Сообщение от Evg Посмотреть сообщение
в этом случае надо добавить код:
C
1
2
if (x < 0)
 1.0 - x_FractionalPart;

C
1
if (x < 0) x_FractionalPart = 1. - x_FractionalPart;
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16828 / 5249 / 321
Регистрация: 30.03.2009
Сообщений: 14,133
Записей в блоге: 26
31.12.2011, 17:14     Манипуляции с массивами. Как сделать? #6
да, ошибся
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.12.2011, 18:13     Манипуляции с массивами. Как сделать?
Еще ссылки по теме:

Как работают указатели с массивами C++
C++ Как заставить sscanf работать с динамическими массивами?
C++ Работа со строками, как с массивами

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

Или воспользуйтесь поиском по форуму:
Andrey1990
0 / 0 / 0
Регистрация: 31.12.2011
Сообщений: 4
31.12.2011, 18:13  [ТС]     Манипуляции с массивами. Как сделать? #7
Рябят спасибо! Со второй задачкой понятно все.

А вот насчет первой, где массивы, не очень. Можно немного поподробнее, а то я не очень въехал.
С sort я ещё потыкаюсь, может чё получится).

А вот как быть с выводам sum (сумма элементов в массиве) в MessageBox??? ) То что в ссылке, это совсем не то. Там просто суммирование.

PS. И , кстати, как избежать потери точности при нахождении дробной части? А то вдруг мне такой вопрос на засыпку зададут?)

Добавлено через 3 минуты
Слушайте, а самое главное-то!)) Помимо сортировки то надо ещё размерность исходного массива выяснить, переопределить размер внутреннего и скопировать один в другой.
С этим то как быть???? ))))
Yandex
Объявления
31.12.2011, 18:13     Манипуляции с массивами. Как сделать?
Ответ Создать тему
Опции темы

Текущее время: 15:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru