Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
Andrey1990
0 / 0 / 0
Регистрация: 31.12.2011
Сообщений: 4
1

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

31.12.2011, 16:10. Просмотров 744. Ответов 6
Метки нет (Все метки)

Товарищи, с наступающим всех!

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

Есть две небольших задачки. Алгоритмы писать не надо, просто написать какие функции надо использовать.
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. Еще раз всех с наступающим.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.12.2011, 16:10
Ответы с готовыми решениями:

Как сделать это с массивами?
Задан (и уже заполнен положительными числами) массив int A. Необходимо написать...

Манипуляции со списками
Есть класс class anyclass { public: int pone; int ptwo; int pthree;...

Манипуляции с двумерным массивом
Дана действительная матрица размером n * m. В каждой строке выбирается элемент...

Работа со строками, как с массивами
Написать программу, которая принимает у пользователя строку и выводит ее по 4...

Как работают указатели с массивами
Хочу на простом примере перестановки двух элементов уяснить - как работают...

6
S_A_L
8 / 8 / 3
Регистрация: 22.12.2011
Сообщений: 14
31.12.2011, 16:46 2
2)
double x =4.7;
double x_FractionalPart = x - int(x)
0
Evg
Эксперт CАвтор FAQ
19359 / 7208 / 538
Регистрация: 30.03.2009
Сообщений: 20,159
Записей в блоге: 30
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'у будет с потерей точности. Правда студентам об этом задумываться не положено, а потому такой вариант сойдёт
2
Jupiter
Каратель
Эксперт С++
6570 / 3991 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
31.12.2011, 16:52 4
Цитата Сообщение от Andrey1990 Посмотреть сообщение
просто написать какие функции надо использовать.
сортировка
сумма
0
asm
62 / 35 / 3
Регистрация: 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;
0
Evg
Эксперт CАвтор FAQ
19359 / 7208 / 538
Регистрация: 30.03.2009
Сообщений: 20,159
Записей в блоге: 30
31.12.2011, 17:14 6
да, ошибся
0
Andrey1990
0 / 0 / 0
Регистрация: 31.12.2011
Сообщений: 4
31.12.2011, 18:13  [ТС] 7
Рябят спасибо! Со второй задачкой понятно все.

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

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

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

Добавлено через 3 минуты
Слушайте, а самое главное-то!)) Помимо сортировки то надо ещё размерность исходного массива выяснить, переопределить размер внутреннего и скопировать один в другой.
С этим то как быть???? ))))
0
31.12.2011, 18:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.12.2011, 18:13

Как работать с массивами в пользовательских классах?
есть программа для записи в класс Auto, но она ругается если я хочу записать в...

Как выйти из цикла с символьными массивами?
Допустим, хочу сделать цикл, в котором бы считывалась символьная строка с...

Как всегда у новичков недоразумения с массивами:)
Короче у меня есть массив динамический 2-х мерный массив заполненный случайными...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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