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

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

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

почему? - C++

11.12.2013, 18:54. Просмотров 224. Ответов 7
Метки нет (Все метки)

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <string>
#include <iostream>
using namespace std;
int main()
{
    int k;
    char str[100];
    char str1[50] = { 0 }, str2[50] = { 0 };
    cout << "Vvedite stroky" << endl;
    gets_s(str);
    cout << "Vvedite k" << endl;
    cin >> k;
    while (str[k] != ' '&& k>0)
        k--;
 
    strncpy_s(str1, str, k);
    strcpy_s(str2, str + k);
 
    cout << "1-" << str1 << endl;
    cout << "2-" << str2 << endl;
    system("pause");
    return 0;
}
Объясните почему здесь while (str[k] != ' '&& k>0) нужно указывать условие k>0. Препод сказал что оно здесь не нужно , а без него программа работает криво. и что вообще этот цикл делает?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.12.2013, 18:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос почему? (C++):

Почему возможно задать массив с размером -1 (почему такое вообще компилируется)? - C++
Всем привет. Долгое время не писал на плюсах, решил пройтись по основам, вспомнить. По непонятным для меня причинам этот код...

Почему выводится в виде таблицы и почему не работает сортировка - C++
почему выводится в виде таблицы? почему не работает сортировка? и как туда можно вставить классы комнат? hotel.h #include...

IDE wxDev-C++, при создании кнопки на форме она почему-то становится во весь экран, почему? - C++
То есть ребята не смешно ни разу. Создаю форму, кидаю кнопку, ничего не предвещает плохого. Собираю проект, запускаю- и вот кнопка размером...

Почему не взяли на обучение в CQG, на сайте нашел испытательное задание, сделал и отослал. Не взяли и не объяснили почему. Хочу услышать мнения. - C++
/ Программа получает на вход текстовый файл и расшифровывает его первую строчку получая ключ. // #include &quot;stdafx.h&quot; ...

Почему MS-DOS не любит кириллицу ? (Или почему она не любит меня ?) - C++
Здравствуйте Почему MS-DOS не любит кириллицу ? У меня есть несколько консольных проектор различной сложности. Почти везде...

Участок B кода выполняется позже, чем участок A кода, но почему-то B влияет на работоспособность A! Почему? - C++
Друзья! То есть суть такая, создаю объект и в конструктор передаю имя процесса и хэндл снимка системы. А в конструкторе начинается...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
lpvoid
322 / 305 / 17
Регистрация: 06.03.2013
Сообщений: 869
11.12.2013, 18:57 #2
Lexa_Okatow, потому что не бывает отрицательных элементов в массиве. строка - массив.
StackOverflow
All rights reserved.
91 / 81 / 5
Регистрация: 03.08.2013
Сообщений: 258
11.12.2013, 19:04 #3
Это своеобразное разбиение строки на токены.
zss
Модератор
Эксперт С++
6355 / 5919 / 1919
Регистрация: 18.12.2011
Сообщений: 15,215
Завершенные тесты: 1
11.12.2013, 19:04 #4
Здесь разумно выражения поменять местами,
чтобы при k<0 не вычислялось str[k]
C++
1
2
3
if(k>=strlen(str))
     k=strlen(str)-1; 
while (k>0 && str[k] != ' ')
Lexa_Okatow
0 / 0 / 0
Регистрация: 10.11.2013
Сообщений: 22
11.12.2013, 19:09  [ТС] #5
дело в том что у меня во второй строке выводит какой то бред, если я убираю k>0, препод сказал что оно здесь не нужно, во ткак мне ему объяснить что он не прав?
lpvoid
322 / 305 / 17
Регистрация: 06.03.2013
Сообщений: 869
11.12.2013, 19:09 #6
Lexa_Okatow, загружайте изображения на форум.
Lexa_Okatow
0 / 0 / 0
Регистрация: 10.11.2013
Сообщений: 22
11.12.2013, 19:20  [ТС] #7
Цитата Сообщение от lpvoid Посмотреть сообщение
Lexa_Okatow, загружайте изображения на форум.
http://rghost.ru/50895140/image.png

http://rghost.ru/50895199/image.png
zss
Модератор
Эксперт С++
6355 / 5919 / 1919
Регистрация: 18.12.2011
Сообщений: 15,215
Завершенные тесты: 1
11.12.2013, 21:29 #8
Цитата Сообщение от Lexa_Okatow Посмотреть сообщение
как мне ему объяснить что он не прав
Если больше пробелов не окажется, то цикл надо завершить на самом первом символе
(т.е. когда k=0 получим первое слово).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.12.2013, 21:29
Привет! Вот еще темы с ответами:

почему 3.? - C++
Добрый день a / (2 * sqrt(3.)); почему корень из 3 так пишется? это формула нахождения радиуса вписанной окружности.

Почему 0? - C++
Такой вопpосец. Почему в данном коде, компилятоp в ответе выдает 0? А не 0,6666? #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using...

Почему...? - C++
Проргамма печатает данные текстовово фаила dog.txt который находится в той же директории что и компилятор. Име либо вводится...

Почему z=2 , а b=1? - C++
Почему z=2 , а b=1? int z=1; int b; b=z++;


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

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

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