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

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

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

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

22.07.2013, 10:04. Просмотров 861. Ответов 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++):

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

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
22.07.2013, 10:09 #2
Цитата Сообщение от SnapeEye Посмотреть сообщение
Почему сначала не то число?
Переменные не инициализированы. Почему должно выводить "то число" ?
SnapeEye
1 / 1 / 0
Регистрация: 16.05.2013
Сообщений: 249
Завершенные тесты: 1
22.07.2013, 11:04  [ТС] #3
Цитата Сообщение от lazybiz Посмотреть сообщение
Переменные не инициализированы. Почему должно выводить "то число" ?
это пример из книги, ввел всё правильно, перепроверил, но выходит другое, не было такого ранее
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 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,078
Записей в блоге: 10
Завершенные тесты: 1
22.07.2013, 11:08 #6
Цитата Сообщение от SnapeEye Посмотреть сообщение
это пример из книги
Может там написано что это пример того как делать не надо!?
SnapeEye
1 / 1 / 0
Регистрация: 16.05.2013
Сообщений: 249
Завершенные тесты: 1
22.07.2013, 13:42  [ТС] #7
Цитата Сообщение от BigLow Посмотреть сообщение
такого не может быть
честно, не я придумал
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
22.07.2013, 13:44 #8
Цитата Сообщение от SnapeEye Посмотреть сообщение
это пример из книги
Из какой книги? Если есть электронный вариант кинь ссылку.
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,368
22.07.2013, 14:12 #9
Тут я согласен с lazybiz: если этот код точь-в-точь переписан из книги - выкинь книгу в Корзину, она тебя хорошему не научит. И огласи, плз, автора и название, чтобы другие не повелись.
alsav22
5417 / 4813 / 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
1 / 1 / 0
Регистрация: 16.05.2013
Сообщений: 249
Завершенные тесты: 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,078
Записей в блоге: 10
Завершенные тесты: 1
26.07.2013, 11:52 #14
SnapeEye, почитай лучше Страуструпа.
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.07.2013, 15:32 #15
Цитата Сообщение от CheshireCat Посмотреть сообщение
Тут я согласен с lazybiz: если этот код точь-в-точь переписан из книги - выкинь книгу в Корзину, она тебя хорошему не научит. И огласи, плз, автора и название, чтобы другие не повелись.
О чём, вообще, разговор? В книге приведён пример, как не нужно делать, и объяснено почему. Что, такие примеры недопустимы в книгах? Если ТС не понял суть примера, то это его проблемы, книга тут не при чём.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2013, 15:32
Привет! Вот еще темы с ответами:

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

Небольшая коррекция - 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 разрядный монотонный грееподобный (однопеременный) код...


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

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

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