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

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

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

Обращение содержимого массива - C++

17.05.2011, 19:56. Просмотров 487. Ответов 4
Метки нет (Все метки)

ЗАДАЧА:Реализуйте и протестируйте процедуру bool reverse ( float * array, int N), которая осуществляет обращение содержимого массива, т. е первый становится последним элементом, второй предпоследним и т.д. Время выполнения должно быть О(N), выделяемая дополнительная память O(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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
//reverse.h  и swap.hЗаголовочный файл
bool reverse ( float * array, int N);
bool swap ( float * a, float * b);
------------------------------------------------------
//reverse.cpp Описание процедуры в её корректности я не уверена)))
 
#include "reverse.h"
#include "swap.h"
bool reverse (float * array, int N)
{
    float first = * array;
    float last = * (array + N - 1);
    while (first < last)
    {
        mswap(&first, &last);
        first++; last--;
        return true;
    }
 
}
--------------------------------------------------------------------
//mswap.cpp Описание процедуры точно работает
 
#include "swap.h"
bool mswap (float * a, float * b)
{
    int  aold = *a;
    *a = *b;
    *b = aold;
   
    return true;
-------------------------------------------------------
//testreverse.cpp Проверка программы
 
#include <iostream>
#include <vector>
#include "reverse.h"
//init
using namespace std;
 
int main()
{
    cout << "Input number of elenemets in array: ";
    int N;
    cin >> N; cout << endl;
 
/*  float array[N];
 
    for (int i = 1; i <=N; i++)
    {   float s;
        cout << "Input " << i << " element: " ;
        cin >> s;
        array[i] = s;
    }*/
 
    vector <float> array;
    for(int i = 1; i <= N; i++)
    {
        cout << "Input element: ";
        float r;
        cin >> r;
        array.push_back(r);
    }
 
    cout << endl;
 
    cout << "Before reverse: ";
    for (int i = 0; i < N; i++)
        cout << " " << array[i] << " ";
 
    cout << endl; cout << endl;
 
    cout << "After reverse: ";
 
    reverse(&array, N); -> Здесь проблемусечка!
 
//reverse
    for (int i = 0; i < N; i++)
    cout << " " << array[i] << " ";
    return 0;
ОШИБОЧКА

$ make all
g++ -g -c testrev.cpp -o testrev.o
testrev.cpp: In function 'int main()':
testrev.cpp:40: error: cannot convert 'std::vector<float, std::allocator<float>
>*' to 'float*' for argument '1' to 'bool reverse(float*, int)'
make: *** [testrev.o] Error 1

 Комментарий модератора 
Используйте теги форматирования кода!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2011, 19:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Обращение содержимого массива (C++):

Проверка содержимого массива - C++
Допустим если есть массив char array = { '_' '_' '_' '_' '_' '_' '_' '_' '_' '_' '_'} // и тд.. Как проверить если 1==2==3 элемент...

Отображение содержимого массива - C++
Как можно проще/компактнее отобразить действия с содержимым массива: int sum1 = books + books + books + books + books + books ...

Обращение к элементам массива в C++ - C++
#include &lt;SFML\Graphics.hpp&gt; const int number_units = 1; Sprite Person; Sprite unitsSprite = { Person }; for (int i = 0; i &lt;...

Обращение к элементу массива - C++
Объясните пожалуйста, что происходит в строке помеченной *** void main(){ char str; char ptr; cin &gt;&gt; str; cout &lt;&lt; ...

Обращение к элементу массива - C++
Как мне обратиться к последнему элементу массива? например: Array // i = 0 тут нужно что бы -1 был последним т.е N-1 //можно ли с...

Обращение к элементам массива структур - C++
Вводим n-ое количество имен и количество оценок каждому из имен.(студент - оценки) #include &lt;iostream&gt; using namespace std; ...

4
kazak
3038 / 2359 / 157
Регистрация: 11.03.2009
Сообщений: 5,405
Завершенные тесты: 1
18.05.2011, 04:37 #2
Оно и понятно, т.к. float* и vector<float> совсем не одно и тоже. Убираешь vector, раскомментируешь код со статическим массивом меняешь float array[N] на float *array = new float [N].
1
Selle
0 / 0 / 0
Регистрация: 13.05.2011
Сообщений: 15
19.05.2011, 19:05  [ТС] #3
Ага...
reverse.cpp без видимых ошибок?

Добавлено через 3 часа 42 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "reverse.h"
#include "swap.h"
 
bool mreverse (float * array, int N)
{
    float  first = * array;
    float  last =  * (array + N-1);
    cout << endl;
   
    for(int i=0,j=N; i < N/2.0, j > N/2.0; i++,j--)
    {
            mswap(&first,&last);
            *(array+i) = first;
            *(array +j-1) = last;
            first = *(array +i +1);
            last = *(array +j - 2);
 
    }
        return true;
}
Вот это правильная программа!)))

Добавлено через 3 минуты
Ща займёмся псевдокодом!!! Хеххехехе.....
0
OstapBender
584 / 523 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
19.05.2011, 19:07 #4
простите разве это не проще делается?? ...
C++
1
2
3
4
5
6
bool swapmem(double* arr, int n) {
    int sz=n;
    for (int i=0; i<sz/2; i++)
        std::swap(arr[i],arr[sz-i-1]);
    return 0;
}
0
Selle
0 / 0 / 0
Регистрация: 13.05.2011
Сообщений: 15
22.05.2011, 21:27  [ТС] #5
Делается, делается!
Только я уж сдала!))))Не хочется возвращаться....
Есть вопросы поважнее, например, размер очереди посчитать!)))Псевдокод!
0
22.05.2011, 21:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.05.2011, 21:27
Привет! Вот еще темы с ответами:

Обращение к элементу массива из строк - C++
Здравствуйте! Имеется такой код: string mesiaci = //Massiv iz strok { &quot;Ianvar'&quot;, &quot;Fevral'&quot;, &quot;Mart&quot;, &quot;Aprel'&quot;, ...

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

Осуществить обращение к элементам массива по указателю - C++
Здравствуйте. Каким образом можно изменить код, чтобы обращение к переменным и элементам массива осуществлялся через указатели (например,...

Обращение к элементам двухмерного динамического массива - C++
Строки в двумерном динамическом массиве расположены не вплотную друг к другу. Тогда почему чтобы получить значение из массива оператор ar...


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

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

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