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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2010, 15:21   #1
Экзорцист
 
Регистрация: 17.12.2010
Сообщений: 7
По умолчанию Напишите прогу на языке C

Каждую закрывающую скобку ')', для которой нет парной открывающей '(', заменить на '?'.

на языке С. прошу помощи
Экзорцист вне форума Ответить с цитированием
Старый 17.12.2010, 15:42   #2
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

народ, вы совесть имеете? какая же это помощь, если хочешь целиком готовое задание получить. думаете людям больше заняться нечем? показывай, что не получается, либо предлагай вознаграждение
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 18.12.2010, 00:46   #3
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Вводите строку. Потом идете по ней циклом и проверяете:
если stroka[i] == '(', то переменная++
если stroka[i] == ')', то переменная--.
Если переменная < 0, то { stroka[i] = '?'; переменная = 0}

Как-то так...
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 18.12.2010, 08:57   #4
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Цитата:
Если переменная < 0, то { stroka[i] = '?'; переменная = 0}
Точнее,
Если переменная < 0, то { stroka[i] = '?'; переменная++}
раз уж для каждой нужно. Только что-то я сомневаюсь, что автору был нужен всего лишь невинный совет по алгоритму... Особенно учитывая название темы.
Вот где у меня уже сидят эти темы.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 21.12.2010, 19:44   #5
Экзорцист
 
Регистрация: 17.12.2010
Сообщений: 7
По умолчанию

ну и это тоже поможет. спс.
но он мне при вводе символов показывает (null) и не меняет, мб я чо в проге накосячил, посмотрите?

Цитата:
#include <stdio.h>
#include <conio.h>
#include <string.h>

void main ()
{
int i,k;
char str[255];
gets(str);
printf("%d\n",strlen(str));
for (i=0;i<strlen(str);i++)
{
if (str[i]=='(')k++;
if (str[i]==')')k--;
if (k<0)
{ str[i]='?';
k++;
}
}
printf("%s\n",str[i]);
getch ();
}

Последний раз редактировалось Экзорцист; 21.12.2010 в 20:08.
Экзорцист вне форума Ответить с цитированием
Старый 21.12.2010, 21:58   #6
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Во-первых, прежде чем делать переменная++, нужно ее сначала проинициализировать(в данном случае нулем), иначе такая лабудень получится...
Во-вторых, когда вы выводите printf("%s\n",str[i]); цикл уже завершен, i на данном этапе выходит за пределы строки.
В-третьих, в функцию printf с параметром %s нужно отдавать не отдельный символ, а целую строку.
В общем, так:
Код:
#include <stdio.h>
#include <conio.h>
#include <string.h>

void main ()
{
	int i,k = 0;
	char str[255];
	gets(str);
	printf("%d\n",strlen(str));
	for (i=0;i<strlen(str);i++){
		if (str[i]=='(')k++;
		if (str[i]==')')k--;
		if (k<0) {	
			str[i]='?';
			k++;
		}
	}
	printf("%s",str);
	getch ();
}
Предупреждаю сразу: подобный вывод строки выводит строку с нулевым завершающим байтом, поэтому не пугайтесь, когда прога вам выдаст вашу строку с ноликом в конце.

P.S. Увижу еще раз просьбу о помощи в ЛС, стукну вас чем-то тяжелым!
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 21.12.2010, 22:07   #7
Экзорцист
 
Регистрация: 17.12.2010
Сообщений: 7
По умолчанию

блин, ну не заменяет. эти ошибки я ранее исправил.
на выводе он выводит такую же последовательность что и была введена
Экзорцист вне форума Ответить с цитированием
Старый 21.12.2010, 22:34   #8
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

У меня все заменяет.
Что вы туда вводите-то?
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 21.12.2010, 22:36   #9
Экзорцист
 
Регистрация: 17.12.2010
Сообщений: 7
По умолчанию

так, все, туплю, большое спасибо, все работает
Экзорцист вне форума Ответить с цитированием
Старый 29.12.2014, 20:13   #10
stalse
Новичок
Джуниор
 
Регистрация: 29.12.2014
Сообщений: 1
По умолчанию Помогите, очень прошу! Язык C

Написать функцию, которая делает обход заданной директории и выводит все ее файлы и папки в виде дерева. В долгу не останусь
stalse вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не могу сделать напишите само решение на языке паскаль Знаменок Паскаль, Turbo Pascal, PascalABC.NET 1 06.10.2010 09:57
Напишите задачку на языке паскаль Знаменок Помощь студентам 0 05.10.2010 21:27
Напишите прогу!!!!!! KoC aka HoC Помощь студентам 1 23.06.2010 18:20
напишите пожалуйста прогу! tim777777 Помощь студентам 2 01.03.2009 22:56