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

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

Войти
Регистрация
Восстановить пароль
 
KostyaKulakov
Заблокирован
#1

Не присвается значение - C++

18.02.2013, 20:15. Просмотров 245. Ответов 7
Метки нет (Все метки)

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 <string.h>
 
void reverse(char* s, size_t len)
{
    char* temp = new char[len];
 
    // как можно данное выражение объеденить в 1 строчку?
    len /= sizeof(s[1]);
    --len;
    // ==================================================
 
    for(int i = 0; i < len+1; ++i)
        temp[i] = s[len-i];
    
    temp[len+1] = *"\0";
 
    s = temp;
 
}
 
int main()
{
    char* test = "i am is noob C pluse pluse";
 
    reverse(test, strlen(test));
 
    std::cout << test << std::endl;
 
    return 0;
}

массив в стиле C temp формируется, те всё ок.

при присваивание

C++
1
s = temp;
присваивание не происходит. почему?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2013, 20:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не присвается значение (C++):

Найти значение 3-го по величине элемента и значение всех элементов массива, которые его превышают, заменить на найденное значение - C++
Работа с массивами:

Присвоить логической переменной T значение true, если значение d-цифра, и значение false в противном случае - Pascal ABC
Имеется символьная переменная d, присвоить логической переменной T значение true, если значение d-цифра, и значение false в противном...

Описать процедуру ShiftLeft3(A, B, C), выполняющую левый циклический сдвиг: значение A переходит в C, значение C — в B, значение В-в А - Visual Basic
Описать функцию ShiftLeft3(A, B, C), выполняющую левый циклический сдвиг: значение A переходит в C, значение C — в B, значение B — в A...

В одномерном массиве определить среднее значение всех элементов,значение которых превышает среднее значение - C++
в произвольно заданном одномерном массиве определить среднее значение всех элементов,значение которых превышает среднее значение

определить среднее значение всех элементов, значение которых превышает среднее значение - Pascal
в произвольно заданном одномерном массиве определить среднее значение всех элементов, значение которых превышает среднее значение....

Вывести на экран номер и значение элементов массива, абсолютное значение которых > 10 - Pascal ABC
Помогите с задачей . Вот условие 3.*Дан одномерный массив размерностью 9, заполненный целыми числами, введенными с клавиатуры....

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
gray_fox
What a waste!
1520 / 1223 / 70
Регистрация: 21.04.2012
Сообщений: 2,560
Завершенные тесты: 3
18.02.2013, 20:20 #2
Цитата Сообщение от KostyaKulakov Посмотреть сообщение
присваивание не происходит. почему?
Присваивание происходит, но s - локальная для ф-ии копия аргумента, значение temp так не изменить.
1
KostyaKulakov
Заблокирован
18.02.2013, 20:22  [ТС] #3
только по передачи по ссылки можно достичь желаемого эффекта.

C++
1
void reverse(char*& s, size_t len)
но

задача передача по указателю.
0
coloc
погромист
410 / 246 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
18.02.2013, 20:22 #4
C++
1
static temp
или возвращать указатель
1
gray_fox
What a waste!
1520 / 1223 / 70
Регистрация: 21.04.2012
Сообщений: 2,560
Завершенные тесты: 3
18.02.2013, 20:24 #5
Цитата Сообщение от KostyaKulakov Посмотреть сообщение
C++
1
char* test = "i am is noob C pluse pluse";
C++
1
char const*
Цитата Сообщение от KostyaKulakov Посмотреть сообщение
C++
1
*"\0"
C++
1
'\0'
Цитата Сообщение от KostyaKulakov Посмотреть сообщение
C++
1
char* temp = new char[len];
C++
1
char* temp = new char[len + 1]; // под под завершающий '\0'
это как минимум...
1
KostyaKulakov
Заблокирован
18.02.2013, 20:26  [ТС] #6
Цитата Сообщение от gray_fox Посмотреть сообщение
C++
1
char const*

если мы сделаем константным массив, то ревёрс просто не будет работать.

ладно всем спасибо.
0
gray_fox
What a waste!
1520 / 1223 / 70
Регистрация: 21.04.2012
Сообщений: 2,560
Завершенные тесты: 3
18.02.2013, 20:27 #7
Цитата Сообщение от KostyaKulakov Посмотреть сообщение
присваивание не происходит. почему?
Собственно сам указатель менять не к чему, насколько я понимаю.

Добавлено через 41 секунду
Цитата Сообщение от KostyaKulakov Посмотреть сообщение
если мы сделаем константным массив, то ревёрс просто не будет работать.
C++
1
char test[] = "I am noob in C plus plus";
0
coloc
погромист
410 / 246 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
18.02.2013, 20:30 #8
KostyaKulakovуказатель на строку нельзя присваивать или менять, потому что он указывает на константную область памяти, т.е. литеральную константу в виде строки.
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.02.2013, 20:30
Привет! Вот еще темы с ответами:

Вычислить среднеарифметическое значение элементов массива и определить минимальное положительное значение - C++
Необходимо сформировать двумерный массив A(3x9), используя генератор случайных чисел на интервале (-4, 4). Далее преобразовать массив А в...

Поменять значение строки или столбца файла на введенное пользователем значение - Turbo Pascal
В текстовый файл Hrube.in записано следующее: assign(f,'C:\I-1326\Hrube.in'); rewrite(f); writeln(F,'7 9'); ...

Сохранить значение строки до того, как она получит значение null - Java EE
Есть ли возможность сохранить значение строки, до того как она получит значение null? Просто после нажатия одной кнопки значение...

Вычислить среднее значение элементов массива. Вывести на дисплей полученное значение - Pascal
Вычислить среднее значение элементов массива. Вывести на дисплей полученное значение. После этого изменить исходный массив следующим...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
18.02.2013, 20:30
Ответ Создать тему
Опции темы

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