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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2016, 16:44   #1
VlAdislaV__
 
Регистрация: 13.11.2016
Сообщений: 6
Восклицание Помогите найти ошибку

Даны две строки длиной до 80 символов.Заменить в каждой строке один заданный символ на другой заданный символ.Описать в виде функции замену символа в строке.
Код HTML:
#include <iostream>
#include <cstdlib> 
#include <locale>
#include <cstdio>
#include <string>
using namespace std;
char fun(char str1, char one, char two)
{
	for (int i = 0; str1[i]!='\0'; i++)
	{
		if (str1[i] == one) str1[i] = two;
		return str1;
	}
}
char fun2(char str2, char one, char two)
{
	for (int i = 0; str2[i] != '\0'; i++)
	{
		if (str2[i] == one) str2[i] = two;
		return str2;
	}
}
void main()
{
	setlocale(LC_ALL, "Russian");
	char str1[80];
	char str2[80];
	char one, two;
	cout << "Введите строки " << 1 << endl << 2;
	gets_s(str1);
	gets_s(str2);
	cout << "Введите символ,который нужно заменить" << endl;
	cin >> one;
	cout << "На что заменить ваш символ?" << endl;
	cin >> two;
	cout << "Ответ" << endl;
	fun(str1,one,two)
	fun2(str2, one, two);
	for (int i = 0; str1[i] != '\0'; i++)
		putchar(str1[i]);
	for (int i = 0; str1[i] != '\0';i++)
		putchar(str2[i]);
	system("pause");
}
VlAdislaV__ вне форума Ответить с цитированием
Старый 13.11.2016, 16:51   #2
Hailov
Пользователь
 
Регистрация: 08.10.2016
Сообщений: 18
По умолчанию

fun(char * str1
Hailov вне форума Ответить с цитированием
Старый 13.11.2016, 17:26   #3
VlAdislaV__
 
Регистрация: 13.11.2016
Сообщений: 6
По умолчанию

Меняет теперь только 1 символ каждой строки
Код:
#include <iostream>
#include <cstdlib> 
#include <locale>
#include <cstdio>
#include <string>
using namespace std;
char fun(char *str1, char one, char two)
{
	for (int i = 0; str1[i]!='\0'; i++)
	{
		if (str1[i] == one) str1[i] = two;
		return *str1;
	}
}
char fun2(char *str2, char one, char two)
{
	for (int i = 0; str2[i] != '\0'; i++)
	{
		if (str2[i] == one) str2[i] = two;
		return *str2;
	}
}
void main()
{
	setlocale(LC_ALL, "Russian");
	char str1[80];
	char str2[80];
	char one, two;
	cout << "Введите строки " << 1 <<" " << 2 <<endl;
	gets_s(str1);
	gets_s(str2);
	cout << "Введите символ,который нужно заменить" << endl;
	cin >> one;
	cout << "На что заменить ваш символ?" << endl;
	cin >> two;
	cout << "Ответ" << endl;
	fun(str1, one, two);
	fun2(str2, one, two);
	for (int i = 0; str1[i] != '\0'; i++)
		putchar(str1[i]);
	cout;
	for (int i = 0; str1[i] != '\0';i++)
		putchar(str2[i]);
	system("pause");
}
______________________
Используйте тег [CODE] (кнопка с решеткой # в форме сообщения) при вставке кода на форум.

Последний раз редактировалось Alex11223; 13.11.2016 в 17:37.
VlAdislaV__ вне форума Ответить с цитированием
Старый 13.11.2016, 17:42   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Так у вас return на первой итерации цикла.

Этот код эквивалентен
Код:
char fun(char *str1, char one, char two)
{
	if (str1[0] != '\0')
	{
		if (str1[0] == one) str1[0] = two;
	}
	return *str1;
}
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 13.11.2016, 17:45   #5
VlAdislaV__
 
Регистрация: 13.11.2016
Сообщений: 6
По умолчанию

А как тогда нужно изменить код?
VlAdislaV__ вне форума Ответить с цитированием
Старый 13.11.2016, 17:51   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Зависит от того того что вы хотите сделать.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 13.11.2016, 17:59   #7
VlAdislaV__
 
Регистрация: 13.11.2016
Сообщений: 6
По умолчанию

Мне нужно,чтобы менялись все указанные символы,а не только первый
VlAdislaV__ вне форума Ответить с цитированием
Старый 13.11.2016, 18:05   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А зачем вы тогда запихнули туда return? + возвращаемое им значение все равно нигде не используете.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 13.11.2016, 18:11   #9
VlAdislaV__
 
Регистрация: 13.11.2016
Сообщений: 6
По умолчанию

Все я убрал return и программа нормально заработала.Спасибо большое
VlAdislaV__ вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Язык C]: В массиве числа образуют неубывающую последовательность. Найти количество различных чисел в массиве. Помогите найти ошибку. Yulia24* Помощь студентам 0 18.10.2016 20:41
Дан массив а(n) типа SWORD. найти сумму всех отрицательных элементов массива.помогите найти ошибку Юлия123456 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 07.09.2016 06:12
Найти седловые точки в матрице(помогите найти ошибку) - pascal tdsotm Помощь студентам 0 20.11.2014 18:57
Помогите найти ошибку - StrToFloat выдаёт ошибку EConvertError для ячеек StringGrid (Delphi) Artsiom Помощь студентам 10 18.12.2013 14:10