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

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

Войти
Регистрация
Восстановить пароль
 
 
SnapeEye
0 / 0 / 0
Регистрация: 16.05.2013
Сообщений: 217
Завершенные тесты: 1
#1

Коррекция - C++

22.07.2013, 10:04. Просмотров 841. Ответов 21
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <string>
#include <cstring>
int main()
{
    using namespace std;
    char charr[20];
    string str;
 
    cout << "Lenght of string in charr before input: " << strlen(charr) << endl;
    cout << "Lenght of string in str before input: " << str.size() << endl;
    cout << "Enter a line of text:\n";
    cin.getline(charr, 20);
    cout << "You entered: " << charr << endl;
    cout << "Enter another line of text:\n";
    getline(cin, str);
    cout << "You entered: " << str << endl;
    cout << "Lenght of string in charr after input: " << strlen(charr) << endl;
    cout << "Lenght of string in str after input: " << str.size() << endl;
    system("pause");
    return 0;
}
Должно выйти:
Lenght of string in charr before input: 27
Lenght of string in str before input: 0
Enter a line of text:
peanut butter
You entered: peanut butter
Enter another line of text:
blueberry jam
You entered: bueberry jam
Lenght of string in charr after input: 13
Lenght of string in str after input: 13

Выходит:
Lenght of string in charr before input: 31
Lenght of string in str before input: 0
Но в тоге выходит по 13 в последних строках.
Почему сначала не то число?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.07.2013, 10:04     Коррекция
Посмотрите здесь:

Коррекция строк - C++
Как из строки, в которую входят и цифры и буквы, убрать все буквы и оставить цифры? Знаю только как проверить на наличие букв( при помощи...

Перспективная коррекция в 2D - C++
Всем привет. Надеюсь это не противоречит правилам форума. Я создал эту тему в разделе &quot;геометрия&quot;. Возможно это был не самый подходящий...

Коррекция перевода float > char[] - C++
Вечер добрый! Задача такова - из float'а получить строку, но после запятой нужно оставить N знаков. Собственно я вывожу FPS на экран если...

2-10 коррекция - Assembler
хто має якісь накидки на 2-10 корекцію:)

коррекция программы - Pascal ABC
есть программа, но она как то не адекватно работает, помогите пожалуйста ее исправить, вот код моей программы program lol; uses...

3-х 2-х битовая коррекция - Дискретная математика
Собственно вычисляю значения в двоично-восьмеричной и двоично-четверичной СС. Суммирую как положено в прямых, дополнительных кодах. Не...

Гамма коррекция - DirectX
Испрашиваю вашего совета, гуру! ;-) Коллеги, у меня возник тупик следующего рода, работаю с видеокамерами, кадры которых...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
22.07.2013, 10:09     Коррекция #2
Цитата Сообщение от SnapeEye Посмотреть сообщение
Почему сначала не то число?
Переменные не инициализированы. Почему должно выводить "то число" ?
SnapeEye
0 / 0 / 0
Регистрация: 16.05.2013
Сообщений: 217
Завершенные тесты: 1
22.07.2013, 11:04  [ТС]     Коррекция #3
Цитата Сообщение от lazybiz Посмотреть сообщение
Переменные не инициализированы. Почему должно выводить "то число" ?
это пример из книги, ввел всё правильно, перепроверил, но выходит другое, не было такого ранее
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
22.07.2013, 11:05     Коррекция #4
Если этот пример в точности как из книги - тогда выкинь эту книгу, она тебя хорошему не научит.
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
22.07.2013, 11:07     Коррекция #5
Цитата Сообщение от SnapeEye Посмотреть сообщение
char charr[20];
Цитата Сообщение от SnapeEye Посмотреть сообщение
Должно выйти:
Lenght of string in charr before input: 27
такого не может быть
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
22.07.2013, 11:08     Коррекция #6
Цитата Сообщение от SnapeEye Посмотреть сообщение
это пример из книги
Может там написано что это пример того как делать не надо!?
SnapeEye
0 / 0 / 0
Регистрация: 16.05.2013
Сообщений: 217
Завершенные тесты: 1
22.07.2013, 13:42  [ТС]     Коррекция #7
Цитата Сообщение от BigLow Посмотреть сообщение
такого не может быть
честно, не я придумал
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
22.07.2013, 13:44     Коррекция #8
Цитата Сообщение от SnapeEye Посмотреть сообщение
это пример из книги
Из какой книги? Если есть электронный вариант кинь ссылку.
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,354
22.07.2013, 14:12     Коррекция #9
Тут я согласен с lazybiz: если этот код точь-в-точь переписан из книги - выкинь книгу в Корзину, она тебя хорошему не научит. И огласи, плз, автора и название, чтобы другие не повелись.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.07.2013, 14:41     Коррекция #10
Цитата Сообщение от BigLow Посмотреть сообщение
такого не может быть
Может.
Цитата Сообщение от SnapeEye Посмотреть сообщение
Почему сначала не то число?
Потому что массив неинициализирован. srtlen() будет искать в массиве терминальный ноль, а так как его там нет, то выйдет за границу массива и где-то в памяти найдет '\0'. Где найдет, зависит от компилятора и от случая. У меня в студии выводит 31, в mingv - 1.
Schizorb
509 / 461 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
22.07.2013, 14:50     Коррекция #11
Это пример из книжки Стивена Праты. SnapeEye, прочитай внимательно пояснение к коду и все встанет на свои места.

Кликните здесь для просмотра всего текста
"Где именно встретится нулевой символ в неинициализированном массиве, определяется случаем, поэтому весьма вероятно, что при запуске этой программы вы получите другое значение".
SnapeEye
0 / 0 / 0
Регистрация: 16.05.2013
Сообщений: 217
Завершенные тесты: 1
26.07.2013, 11:06  [ТС]     Коррекция #12
Цитата Сообщение от CheshireCat Посмотреть сообщение
Тут я согласен с lazybiz: если этот код точь-в-точь переписан из книги - выкинь книгу в Корзину, она тебя хорошему не научит. И огласи, плз, автора и название, чтобы другие не повелись.
Стивен Прата: Язык программирования C++ 6-е издание
CheshireCat
26.07.2013, 11:46
  #13

Не по теме:

Спасибо. Не читал и читать не буду.

castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
26.07.2013, 11:52     Коррекция #14
SnapeEye, почитай лучше Страуструпа.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.07.2013, 15:32     Коррекция #15
Цитата Сообщение от CheshireCat Посмотреть сообщение
Тут я согласен с lazybiz: если этот код точь-в-точь переписан из книги - выкинь книгу в Корзину, она тебя хорошему не научит. И огласи, плз, автора и название, чтобы другие не повелись.
О чём, вообще, разговор? В книге приведён пример, как не нужно делать, и объяснено почему. Что, такие примеры недопустимы в книгах? Если ТС не понял суть примера, то это его проблемы, книга тут не при чём.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
26.07.2013, 16:14     Коррекция #16
Цитата Сообщение от alsav22 Посмотреть сообщение
О чём, вообще, разговор?
А разговор как раз о том, что ТС предоставил этот код как рабочий. В связи с чем был сделан вывод что он учится по плохой литературе. К тому же саму книгу он вначале не обозначил.

Добавлено через 57 секунд
Цитата Сообщение от alsav22 Посмотреть сообщение
Если ТС не понял суть примера, то это его проблемы, книга тут не при чём.
С этим не могу не согласиться.
Croessmah
Модератор
Эксперт CЭксперт С++
12980 / 7292 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
26.07.2013, 16:16     Коррекция #17
Ну как бы вот еще:
Цитата Сообщение от SnapeEye Посмотреть сообщение
cout << "Lenght of string in charr before input: " << strlen(charr) << endl;
castaway
26.07.2013, 16:18
  #18

Не по теме:

Ну.., как бы слово "before" не говорит о том что это пример неправильного кода.

alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.07.2013, 16:29     Коррекция #19
Цитата Сообщение от SnapeEye Посмотреть сообщение
Стивен Прата: Язык программирования C++ 6-е издание
2011 года? Если можно страницу, что-то там я не нахожу этого кода.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2013, 16:47     Коррекция
Еще ссылки по теме:

Небольшая коррекция - Python
l = l1 = s = 0 for i in l: for j in l1: if i == j: s = int(i)+int(j) print (s)

Биоакустическая коррекция - КИП, датчики
добрый день. задумалось сделать сию штуку, информации кроме общего описания,по ней практически нет. смысл насколько получилось понять в...

Коррекция монотонного кода - Цифровая обработка сигналов
Посоветуйте какие-нибудь методы, литературу, мб варианты. Дано: 20-26 разрядный монотонный грееподобный (однопеременный) код...

Коррекция яркости изображения - Delphi
Доброго времени препровождения на форуме! Наведите на мысль с чего и как начать: &quot;Разработать программу коррекции яркости путем приведения...

Гамма - коррекция изображения - C++ Qt
Здравствуйте. Нужно реализовать алгоритм гамма - коррекции изображения в оттенках серого. Формула следующая r = ( s / 255) ^ x * 255,...


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

Или воспользуйтесь поиском по форуму:
Schizorb
509 / 461 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
26.07.2013, 16:47     Коррекция #20
Цитата Сообщение от alsav22 Посмотреть сообщение
Если можно страницу
151 - 152. 6 издание 2012 год.
Yandex
Объявления
26.07.2013, 16:47     Коррекция
Ответ Создать тему
Опции темы

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