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

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

Восстановить пароль Регистрация
 
l2ded
 Аватар для l2ded
80 / 68 / 11
Регистрация: 10.05.2011
Сообщений: 284
07.09.2012, 13:23     Задачи с массивами #1
Объясните, как решить.
Пример 1.
void *v=static_cast<void*>(&mas)// mas - массив это имелось в виду*?
не пойму, что дальше делать, вижу, что надо написать функцию, но передать void* понятно, а число кол-во байт, что к чему? я знаю, что такой байты биты знаю как вывести.

Пример 2.
Создаю 2 массива. Там не написано, но я так понимаю надо инициализировать два массива и в цикле for перебрать 2 массива и отменить для каждого элемента const and volatile, и надо присвоить те ъначение которые были или что?
Миниатюры
Задачи с массивами   Задачи с массивами  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Andsteadur
152 / 136 / 3
Регистрация: 23.05.2009
Сообщений: 275
07.09.2012, 14:11     Задачи с массивами #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
#include <iostream>
#include <algorithm>
 
using std::cout;
 
void func(void* src, int sz, unsigned char val)
{
   unsigned char *ptr = static_cast<unsigned char *>(src);
   for(int i = 0; i < sz; ++i)
   {
      ptr[i] = val;
   }
}
 
void print(int &val)
{
   cout<<val<<", ";
}
 
int main()
{
   const size_t szArray = 10;
   int mas[szArray];
   cout<<"Before execution of func\n";
   std::for_each(mas, mas + szArray, print); //всякий мусор
   func(mas, sizeof(int) * szArray , 0);
   cout<<"\nAfter execution of func\n";
   std::for_each(mas, mas + szArray, print); //нули
   return 0;
}

Пример 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
#include <iostream>
#include <algorithm>
 
using std::cout;
 
 
void print(double val)
{
   cout<<val<<", ";
}
 
int main()
{
   const double constArray[] = {1.1, 2.2, 3.3};
   volatile double volatileArray[] = {10.1, 20.2, 30.3};
   cout<<"constArray before changes\n";
   std::for_each(constArray, constArray + 3, print);
   cout<<"\nvolatileArray before changes\n";
   std::for_each(volatileArray, volatileArray + 3, print);
   for(int i = 0; i < 3; ++i)
   {
      double * ptr = const_cast<double*>(constArray + i);
      *ptr = 0;
      volatileArray[i] = 0;
   }
   cout<<"\nconstArray after changesn";
   std::for_each(constArray, constArray + 3, print);
   cout<<"\nvolatileArray after trying to change\n";
   std::for_each(volatileArray, volatileArray + 3, print);   
   return 0;
}
Правда не понятно зачем и как отменять действие модификатора volatile.
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
07.09.2012, 14:47     Задачи с массивами #3
Первый пример вижу так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void func(void* p, int size, int n)
{
    for (int i = 0; i<size; i++)
        static_cast<int*>(p)[i] = n;
}
int main()
{
    int arr[] = {1,2,3,4,5};
    void* parr = static_cast<void*>(arr);
    func(parr, sizeof arr/sizeof (int), 10);
    for (int i = 0; i<sizeof arr/sizeof (int); i++)
        cout<<static_cast<int*>(parr)[i]<<" ";
    cout<<endl;
    system("pause");
    return 0;
}
Andsteadur
152 / 136 / 3
Регистрация: 23.05.2009
Сообщений: 275
07.09.2012, 14:49     Задачи с массивами #4
В задании написано "Функция должна присваивать передаваемое значение каждому байту в заданном диапазоне"
Yandex
Объявления
07.09.2012, 14:49     Задачи с массивами
Ответ Создать тему
Опции темы

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