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

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

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

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

31.12.2011, 16:10. Просмотров 644. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Манипуляции с массивами. Как сделать? (C++):

Как сделать это с массивами? - C++
Задан (и уже заполнен положительными числами) массив int A. Необходимо написать фрагмент программы, который: а) выведет на экран число,...

Манипуляции со списками - C++
Есть класс class anyclass { public: int pone; int ptwo; int pthree; int pfour; war()

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

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

Как работать с массивами в пользовательских классах? - C++
есть программа для записи в класс Auto, но она ругается если я хочу записать в массив следующим методом: #include &lt;iostream&gt; using...

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

6
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)
0
Evg
Эксперт CАвтор FAQ
18030 / 6262 / 427
Регистрация: 30.03.2009
Сообщений: 17,205
Записей в блоге: 27
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
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
31.12.2011, 16:52 #4
Цитата Сообщение от Andrey1990 Посмотреть сообщение
просто написать какие функции надо использовать.
сортировка
сумма
0
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;
0
Evg
Эксперт CАвтор FAQ
18030 / 6262 / 427
Регистрация: 30.03.2009
Сообщений: 17,205
Записей в блоге: 27
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
Привет! Вот еще темы с ответами:

Как всегда у новичков недоразумения с массивами:) - C++
Короче у меня есть массив динамический 2-х мерный массив заполненный случайными числами от 0-до 100, нужно хотя бы вывести главную и...

Как заставить sscanf работать с динамическими массивами? - C++
Как заставить sscanf работать с динамическими массивами или есть этому альтернатива(кроме strtok)?

Поясните с массивами, как делать это задание - C++
1. Дана последовательность натуральных чисел а1, a2, ..., а20. Определить, есть ли в последовательности хотя бы одна пара соседних нечетных...

Как использовать указатели при работе с массивами? - C++
подскажите пожалуйста как правильно использовать указатели при работе с массивами. Как написать этк программу используя указатели? ...


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

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

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