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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2011, 10:28   #1
Johny_Jumper
Новичок
Джуниор
 
Регистрация: 26.04.2011
Сообщений: 4
По умолчанию Строки.. опять эти строки...

Ребят, прошу не пинать меня сильно, но у меня вот такая проблема:

Вводные данные: записанны в единственную строку символы ( или ) без пробелов.
Требуется: Перевести '(' символ в единичку а ')' в минус единичку.

Ну вот и как мне это сделать?

Та проблема с которой я столкнулся:

Незнаю длинну строки что будут вводить, или же просто не знаю как ему задать услови до перевода строки.

Спасите утопающего : )

Вот как я попытался сделать:

Код:
#include <iostream>
using namespace std;

int main()
{
    char z;
    int a[100000]={0};
    int n=0;
    while((z=cin.get())!='\n')
    {
        cin>>z; if (z=='(') a[n]=1; else a[n]=-1;
        n++;
    }
     for (int i=0; i<n; i++) cout<<a[i]<<" ";
    return 0;
}
правда не получилось =(

Последний раз редактировалось Johny_Jumper; 26.04.2011 в 10:41.
Johny_Jumper вне форума Ответить с цитированием
Старый 26.04.2011, 10:29   #2
Johny_Jumper
Новичок
Джуниор
 
Регистрация: 26.04.2011
Сообщений: 4
По умолчанию

Ps забыл, пишу на C++
Johny_Jumper вне форума Ответить с цитированием
Старый 26.04.2011, 10:36   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Перевести '(' символ в единичку а ')' в минус единичку
Что? ( заменить на 1, а ) на -1?оО upd: а, понял, невнимательно прочитал первые строки.


А длину строки же возвращает strlen() или size()/length() для string,
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 26.04.2011 в 10:39.
Alex11223 вне форума Ответить с цитированием
Старый 26.04.2011, 10:40   #4
Johny_Jumper
Новичок
Джуниор
 
Регистрация: 26.04.2011
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Что? ( заменить на 1, а ) на -1?оО

А длину строки же возвращает strlen() или size()/length() для string, правда не понял зачем тут длина.
ну почти так, это часть задачи которую у меня просто не получается сделать. все было бы хорошо просто я никогда не работал со строками, и со всем этим количеством информации в интернете просто мозги взьелись на бикрень =(
Johny_Jumper вне форума Ответить с цитированием
Старый 26.04.2011, 10:46   #5
malinoff
Форумчанин
 
Аватар для malinoff
 
Регистрация: 08.01.2010
Сообщений: 205
По умолчанию

Используйте класс string, там не надо думать про размер строки.
Про него можно почитать в учебнике Павловская, С/С++ Программирование на языке высокого уровня
Если помог - кликни на значок весов под аватаром.
malinoff вне форума Ответить с цитированием
Старый 26.04.2011, 10:47   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Код:
char str[80];
cin.get(str, 80);
int n = strlen(str);
for (int i=0; i<=n; i++)
   {
        if(str[i] == '(' )
            str[i] = '1';
        else if (str[i] == ')' )
            str[i]='-1';
   }
Как-то так вроде, но не проверял.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 26.04.2011, 10:54   #7
Johny_Jumper
Новичок
Джуниор
 
Регистрация: 26.04.2011
Сообщений: 4
По умолчанию

Цитата:
Сообщение от malinoff Посмотреть сообщение
Используйте класс string, там не надо думать про размер строки.
Про него можно почитать в учебнике Павловская, С/С++ Программирование на языке высокого уровня
Спасибо за ресурс.

Цитата:
Код:

char str[80];
cin.get(str, 80);
int n = strlen(str);
for (int i=0; i<=n; i++)
{
if(str[i] == '(' )
str[i] = '1';
else if (str[i] == ')' )
str[i]='-1';
}

Как-то так вроде, но не проверял
Спасибо огромное !! )
Johny_Jumper вне форума Ответить с цитированием
Старый 26.04.2011, 11:03   #8
Alt_Shift
Пользователь
 
Аватар для Alt_Shift
 
Регистрация: 11.11.2010
Сообщений: 74
По умолчанию

Цитата:
str[i]='-1';
как то странно выглядит
Alt_Shift вне форума Ответить с цитированием
Старый 26.04.2011, 11:35   #9
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ага.
Как-то так тогда (вероятно не лучший способ, но вроде работает)
Код:
int main()
{
	char str[80];
	cin.get(str, 80);
	int n = strlen(str);
	for (int i=0; i<=n; i++)
	{
		if(str[i] == '(' )
			str[i] = '1';
		else if (str[i] == ')' )
		{
			for(int j=n; j>=i; j--)
				str[j+1]=str[j];
			str[i]='-';
			str[i+1]='1';
			n++;
		}
	}
	cout << str;
	return 0;

}
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 26.04.2011, 15:55   #10
Alt_Shift
Пользователь
 
Аватар для Alt_Shift
 
Регистрация: 11.11.2010
Сообщений: 74
По умолчанию

может проще к инту привести?
Alt_Shift вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
и опять строки..... brans Microsoft Office Excel 8 21.10.2010 13:14
Что означают эти строки? DriverSTi Помощь студентам 15 09.01.2010 13:36
Опять паскаль и снова строки A.S.W Помощь студентам 1 07.01.2010 15:18
Опять строки huck_mid Общие вопросы Delphi 9 14.06.2007 21:14