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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 64, средняя оценка - 4.69
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,235
Завершенные тесты: 1
#1

не понимаю момент \0 - C++

27.10.2009, 19:51. Просмотров 8350. Ответов 26

C++
1
2
3
4
5
6
7
string s;
cin>>s;
int n=0;
int w=0;
while(s='\0'){
++n;
if(s=' ')++w;
ошибки
Error 1 error C2679: binary '>>' : no operator found which takes a right-hand operand of type 'std::string' (or there is no acceptable conversion) c:\documents and settings\ag\my documents\visual studio 2008\projects\proba\proba\code.cpp 13 proba
Error 2 error C2451: conditional expression of type 'std::basic_string<_Elem,_Traits,_Ax>' is illegal c:\documents and settings\ag\my documents\visual studio 2008\projects\proba\proba\code.cpp 16 proba
Error 3 error C2451: conditional expression of type 'std::basic_string<_Elem,_Traits,_Ax>' is illegal c:\documents and settings\ag\my documents\visual studio 2008\projects\proba\proba\code.cpp 18 proba
что не так?Объясните мне когда нужн юзать \0????или же в данном случае что буде правильнее?как объяснить компилятору,что мне нужен конец строки?

Добавлено через 57 секунд
и EOF попробовал,тоже самое
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.10.2009, 19:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос не понимаю момент \0 (C++):

Каков вращающий момент, действующий на маховик, если момент сил трения в подшипниках 0,2 Нм - Механика
Маховик, имеющий форму диска, массой 35кг и диаметром 60 см через 3 с после включения мотора приобретает угловую скорость 480 об/мин. Каков...

Найти момент инерции I и момент импульса земного шара относительно оси вращения - Механика
Найти момент инерции I и момент импульса земного шара относительно оси вращения.Масса Земли равна m=6*10^24 кг,радиус Земли считать равным...

Найти момент сил M, действующие на шар в момент времени t =2 с после начала движения - Механика
Шар, радиус которого 15 R= см, масса 5 m= кг, движется вокруг неподвижной оси, проходящей через его центр. Уравнение движения шара имеет...

Определить момент силы торможения, если момент инерции маховика равен 1кг/м^2 - Механика
маховик делал 10 оборотов в секунду,при торможении он остановился,сделав 30 оборотов от начало торможения до остановки Определить момент...

Найти момент импульса карандаша относительно точки опоры в момент его падения на стол - Механика
Карандаш длиной 15 см и массой 10 г, поставленный вертикально, падает на стол . Найти момент импульса карандаша относительно точки опоры в...

Изменение кнопки (ее картинки) в момент наведения и момент нажатия - C#
Ребят, я сделал форму, с кнопочками, как изменять картинку в кнопке в момент наведения и в момент нажатия, что бы кнопка изменялась только...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
=DelFin=
1 / 1 / 0
Регистрация: 26.10.2009
Сообщений: 8
27.10.2009, 19:57 #2
C++
1
2
3
4
5
6
7
char s[16];
cin>>s;
int n=0;
int w=0;
while(s=='\0'){
++n;
if(s==' ')++w;
Оператор '=' присвоения в условии цикла не стоит использовать, лучше все таки оператор равенства '=='. Это из того что вижу, а вообще целиком можно посмотреть код?

Типа string в си нет и небыло, есть тип char[]. В скобках размерность.

прр... Идея понятна... Зачем сравнивать всю строку с нуль символом? Операция недопустимая, на счет нуль символа ты прав
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,235
Завершенные тесты: 1
27.10.2009, 19:58  [ТС] #3
=DelFin=,
Error 1 error C2679: binary '>>' : no operator found which takes a right-hand operand of type 'std::string' (or there is no acceptable conversion) c:\documents and settings\ag\my documents\visual studio 2008\projects\proba\proba\code.cpp 13 proba
Error 2 error C2678: binary '==' : no operator found which takes a left-hand operand of type 'std::string' (or there is no acceptable conversion) c:\documents and settings\ag\my documents\visual studio 2008\projects\proba\proba\code.cpp 16 proba
Error 3 fatal error C1903: unable to recover from previous error(s); stopping compilation c:\documents and settings\ag\my documents\visual studio 2008\projects\proba\proba\code.cpp 16 proba
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
27.10.2009, 20:10 #4
МедведЪ, в Си юзай символ конец строки
в С++ есть str.length() - длина строки. str[str.length()-1] - последний символ строки.
=DelFin=
1 / 1 / 0
Регистрация: 26.10.2009
Сообщений: 8
27.10.2009, 20:14 #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "iostream"
 
using namespace std;
int main()
{
char s[16]; //обьявляем строку длинной 16 символов
cin >> s; // вводим через поток ввода
int i; //счетчик цикла
int n=0; //счетчики
int w=0;
 
for (i=0;i<15;i++) // перебираем все символы
{
    if (s[i]='\0') ++n; //символ конца, добавить к счетчику
    else
    if(s[i]=' ') ++w; // пробел, добавить 1 к счетчику
}
 
сout << "Probels:" << w << endl;
сout << "Ends:" << n << endl;
 
return 0; //завершиться
}
Присоединяюсь к предидущему посту, если программа не учебная. Полностью твоя прога выглядит так.
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,235
Завершенные тесты: 1
27.10.2009, 20:16  [ТС] #6
TanT, у меня половина С половина С++в си как это делать?ну конец строки?У меня ошибки

Добавлено через 1 минуту
Цитата Сообщение от =DelFin= Посмотреть сообщение
if (s[i]='\0') ++n;
а это уже не массив?мне надо со string
=DelFin=
1 / 1 / 0
Регистрация: 26.10.2009
Сообщений: 8
27.10.2009, 20:18 #7
Ну, в С строка есть массив символов, это стандарт языка. В других языках это тоже массив символов, только в С запись более наглядно отражает сущность строки.
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
27.10.2009, 20:19 #8
Цитата Сообщение от МедведЪ Посмотреть сообщение
TanT, у меня половина С половина С++в си как это делать?ну конец строки?У меня ошибки

Добавлено через 1 минуту

а это уже не массив?мне надо со string
давай отделим мух от котлет. на каком языке пишешь С/С++?
и второй самый главный вопрос: зачем тебе конец строки или, иначе, какова суть задания?
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,235
Завершенные тесты: 1
27.10.2009, 20:22  [ТС] #9
Цитата Сообщение от TanT Посмотреть сообщение
какова суть задания?
ну просто определисть длину строки(символы) и подсчет слов в строке..

Цитата Сообщение от TanT Посмотреть сообщение
давай отделим мух от котлет. на каком языке пишешь С/С++?
С++ну так что,варианты есть?
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
27.10.2009, 20:24 #10
ещё один важный момент.
cin>>s - берёт строку до пробела или энтера, скомпили и введи две строки через пробел

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string>
 
using namespace std;
 
int main()
{
    string s,ss;
    cin>>s>>ss;
    
    cout<<"s:"<<s<<"; ss:"<<ss<<endl;
 
    system("pause");
    return 0;
}
Добавлено через 54 секунды
длина строки str.length()
=DelFin=
1 / 1 / 0
Регистрация: 26.10.2009
Сообщений: 8
27.10.2009, 20:24 #11
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
#include <iostream>
 
 
using namespace std;
int main()
{
char s[16]; //обьявляем строку длинной 16 символов
cin >> s; // вводим через поток ввода
int i; //счетчик цикла
int n=0; //счетчики
int w=0;
 
for (i=0;i<15;i++)
{
    if (s[i]='\0') n=i-1;
    else
    if(s[i]=' ') ++w;
}
w=w+1;
 
сout << "Words:" << w << endl;
сout << "Dlina:" << n << endl;
 
 
return 0;
}
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,235
Завершенные тесты: 1
27.10.2009, 20:27  [ТС] #12
Цитата Сообщение от TanT Посмотреть сообщение
cin>>s - берёт строку до пробела или энтера, скомпили и введи две строки через пробел

Цитата Сообщение от TanT Посмотреть сообщение
cin>>s>>ss;
я этот трюк не знал,как понять?

Добавлено через 20 секунд
Цитата Сообщение от TanT Посмотреть сообщение
длина строки str.length()
я знаю,но сам хочу написать

Добавлено через 1 минуту
Цитата Сообщение от =DelFin= Посмотреть сообщение
char s[16]; //обьявляем строку длинной 16 символов
Цитата Сообщение от МедведЪ Посмотреть сообщение
мне надо со string
я ведь написал
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
27.10.2009, 20:34 #13
вот тебе простой пример на твою задачу
умные человеки типа Rififi сказали бы что для поиска пробела надо ползоваться find, но это тебе пример чтобы познакомиться со string

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
#include <iostream>
#include <string>
 
using namespace std;
 
int main()
{
    string s;
    int count=0, countWord=0, countPrev=0;
 
    getline(cin,s);  // получить строку до нажатия энтер (по умолчанию)
    cout<<"s:"<<s;
 
    while (count<s.length())
    {
        if (s[count]==' ')
        {
            ++countWord;
            cout<<"\n word: "<<countWord<<" length: "<<count-countPrev;
            countPrev=count;
        }
        ++count;
    }
 
    system("pause");
    return 0;
}
Добавлено через 1 минуту
Цитата Сообщение от МедведЪ Посмотреть сообщение

я этот трюк не знал,как понять?
cin>>s>>ss; это тоже что cin>>s; cin>>ss;
в книжках пишут
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,235
Завершенные тесты: 1
27.10.2009, 20:38  [ТС] #14
TanT,
Error 1 error C3861: 'getline': identifier not found c:\documents and settings\ag\my documents\visual studio 2008\projects\proba\proba\code.cpp 15 proba
Error 2 error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'std::string' (or there is no acceptable conversion) c:\documents and settings\ag\my documents\visual studio 2008\projects\proba\proba\code.cpp 16 proba
Добавлено через 34 секунды
Цитата Сообщение от TanT Посмотреть сообщение
в книжках пишут
у меня щас КиР а в Си cout нету

Добавлено через 12 секунд
cin то есть
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
27.10.2009, 20:45 #15
Цитата Сообщение от МедведЪ Посмотреть сообщение
С++ну так что,варианты есть?
какое С ?

только С++ весь код вставь и откомпили. поробуй закоментить using namespace std;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2009, 20:45
Привет! Вот еще темы с ответами:

Найти момент силы, действующей на диск в момент времени - Механика
однородный диск радиусом R = 0,2 м и массой m = 5 кг вращается вокруг оси, проходящей через его центр. зависимость углового пути от...

Найти момент инерции J вентилятора и момент сил торможения - Механика
Вентелятор вращается с частотой n=900 об/мин. После выключения вентилятор, вращаясь равно замедленно, сделал до остановки N= 75 об. Работа...

Найти момент силы, действующей на диск в момент времени - Механика
диск диаметром 30 см и массой 5 кг вращается вокруг оси, которая находится на расстоянии 10 см от его центра и перпендикулярна к плоскости...

Тема:Момент Импульса. Момент Силы - Физика
Расположенный вертикально однородный стержень массой 6 кг может вращаться относительно горизонтальной оси, проходящей через его верхний...


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

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

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