Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2013, 15:21   #1
Ghost3
Ученик в c++
Форумчанин
 
Аватар для Ghost3
 
Регистрация: 28.02.2011
Сообщений: 162
По умолчанию Измерение длины строки в C++

Здравствуйте! У меня возникла проблема с языком c++, я не могу найти в нем подобие length(string) как в паскале.

Вот я набросал одну задачку в MS visual express studio 2010 (написал на всякий, если компилятор вообще имеет значение...)
Код:
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
    ifstream infile ("input.txt");
    ofstream outfile ("output.txt");
	int i,s,max=0,min=0,k=0; string c;
	infile >> c;
	for (i=1;i<=strlen(c);i++) //<- Здесь ошибка
	{
		if (c[i]='1') k++; if (c[i]='2') k--;
		if (k>max) max=k; if (k<min) min=k;
	}
	s=max+abs(min);
	outfile << s;
	return 0; 
}
Ошибка:
Цитата:
error C2664: strlen: невозможно преобразовать параметр 1 из "std::string" в "const char *"
Ghost3 вне форума Ответить с цитированием
Старый 02.02.2013, 15:32   #2
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

с.length , не?
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com
kventin_zhuk вне форума Ответить с цитированием
Старый 02.02.2013, 15:36   #3
Ghost3
Ученик в c++
Форумчанин
 
Аватар для Ghost3
 
Регистрация: 28.02.2011
Сообщений: 162
По умолчанию

Ну попробовал:
Код:
for (i=1;i<=c.length;i++)
Цитата:
1>c:\users\user\documents\visual studio 2010\projects\zadachi\zadachi\zadac ha2.cpp(13): error C3867: std::basic_string<_Elem,_Traits,_Ax >::length: в вызове функции отсутствует список аргументов; используйте "&std::basic_string<_Elem,_Traits,_ Ax>::length" для создания указателя на член
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>,
1> _Ax=std::allocator<char>
1> ]
1>c:\users\user\documents\visual studio 2010\projects\zadachi\zadachi\zadac ha2.cpp(13): error C2446: <=: нет преобразования "unsigned int (__thiscall std::basic_string<_Elem,_Traits,_Ax >::* )(void) const" в "int"
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>,
1> _Ax=std::allocator<char>
1> ]
1> Не существует контекста, в котором такое преобразование возможно
1>c:\users\user\documents\visual studio 2010\projects\zadachi\zadachi\zadac ha2.cpp(13): error C2297: <=: недопустимо, правый оператор имеет тип "unsigned int (__thiscall std::basic_string<_Elem,_Traits,_Ax >::* )(void) const"
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>,
1> _Ax=std::allocator<char>
1> ]
Ghost3 вне форума Ответить с цитированием
Старый 02.02.2013, 15:39   #4
shelest
Пользователь
 
Аватар для shelest
 
Регистрация: 01.11.2009
Сообщений: 99
По умолчанию

c.length()
shelest вне форума Ответить с цитированием
Старый 02.02.2013, 15:42   #5
Ghost3
Ученик в c++
Форумчанин
 
Аватар для Ghost3
 
Регистрация: 28.02.2011
Сообщений: 162
По умолчанию

Да пробовал я это, когда пытался самый в первый раз:
Цитата:
1>c:\users\user\documents\visual studio 2010\projects\zadachi\zadachi\zadac ha2.cpp(13): warning C4018: <=: несоответствие типов со знаком и без знака
1>zadacha2.obj : error LNK2005: _main уже определен в zadacha.obj
1>C:\Users\User\documents\visual studio 2010\Projects\Zadachi\Debug\Zadachi .exe : fatal error LNK1169: обнаружен многократно определенный символ - один или более
Еще раз код выложу чтоб не было вопросов:
Код:
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
    ifstream infile ("input.txt");
    ofstream outfile ("output.txt");
	int i,s,max=0,min=0,k=0; string c;
	infile >> c;
	for (i=1;i<=c.length();i++)
	{
		if (c[i]='1') k++; if (c[i]='2') k--;
		if (k>max) max=k; if (k<min) min=k;
	}
	s=max+abs(min);
	outfile << s;
	return 0; 
}
Ghost3 вне форума Ответить с цитированием
Старый 02.02.2013, 15:45   #6
shelest
Пользователь
 
Аватар для shelest
 
Регистрация: 01.11.2009
Сообщений: 99
По умолчанию

ну читайте, что пишет компилятор.
for (i=1;i<= (int) c.length();i++)
shelest вне форума Ответить с цитированием
Старый 02.02.2013, 15:48   #7
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

Код:
#include <iostream>
#include <string>
#include <cmath>
 
using namespace std;
 
int main()
{
    int s,max=0,min=0,k=0;
    string c;
    cin >> c;
    for (unsigned int i=0;i<c.length();++i) {
        if (c[i]=='1') k++;
        if (c[i]=='2') k--;
        if (k>max) max=k; if (k<min) min=k;
    }
    s=max+abs(min);
    cout << s;
    return 0; 
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 02.02.2013, 15:54   #8
Ghost3
Ученик в c++
Форумчанин
 
Аватар для Ghost3
 
Регистрация: 28.02.2011
Сообщений: 162
По умолчанию

shelest, BDA, не работает по вашим примерам, одинаковая ошибка:
Цитата:
1>C:\Users\User\documents\visual studio 2010\Projects\Zadachi\Debug\Zadachi .exe : fatal error LNK1169: обнаружен многократно определенный символ - один или более
BDA, добавил по твоему примеру:
Код:
#include <cmath>
и
Код:
	int s,max=0,min=0,k=0; string c;
	infile >> c;
	for (unsigned int i=1;i<c.length();i++)
"Работу с файлами" не убирал.
Ghost3 вне форума Ответить с цитированием
Старый 02.02.2013, 22:17   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
по вашим примерам, одинаковая ошибка
Не подтверждаю. У меня в VS2010 все компилится и выполняется. Пересоздай на новый проект.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.02.2013, 23:46   #10
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

Цитата:
Сообщение от Ghost3 Посмотреть сообщение
1>c:\users\user\documents\visual studio 2010\projects\zadachi\zadachi\zadac ha2.cpp(13): warning C4018: <=: несоответствие типов со знаком и без знака
1>zadacha2.obj : error LNK2005: _main уже определен в zadacha.obj
1>C:\Users\User\documents\visual studio 2010\Projects\Zadachi\Debug\Zadachi .exe : fatal error LNK1169: обнаружен многократно определенный символ - один или более
а может проблема в том что у вас в проекте уже есть файл с описанием ф-ции main?
Базиля вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа на языке "Ассемблер" - ввод строки, анализ длины строки, добавление точки в конец строки Алексей_2012 Помощь студентам 1 05.04.2012 11:26
вычисление длины строки fokinamasha Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 01.04.2011 22:06
Вычисление длины строки Agafon Microsoft Office Word 12 17.11.2010 15:43
измерение длины строки Agafon Общие вопросы Delphi 6 11.11.2010 15:13
Поиск длины строки beda Microsoft Office Word 5 21.06.2010 14:27