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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.02.2010, 20:54   #1
Mariya2009
Пользователь
 
Регистрация: 13.06.2009
Сообщений: 26
Восклицание Строка и замена символа в ней(поправить)

Задание такое:
Дан текст из нескольких строк. Заменить в строке все вхождения одного символа на другой (параметры функции - исходная строка, заменяемый и замещающий символы).
Вот мой код
Код:
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>

char vivod(char **t, int u);
main()
{
	clrscr();
	cout<<"Vvedite kolishestvo strok: ";
	int q;
	int w;
	cin>>q;
	char **a;
	a=new char *[q];
	for (int i=0; i<q; i++)
	{
	a[i]=new char[50];
	}
	for (i=0;i<q;i++)
	{cin>>a[i];
	}
	cout<<"\nVivod vvedennix strok";
	for (i=0; i<q; i++)
	{ cout<<"\n\t"<<a[i]<<" ";}
	cout<<"\nVvidite simvol kotorii budem menyat: ";
	char s;
	cin>>s;
	cout<<"\n Vvedite simvol NA kotorii nuchno zamenit:";
	char m;
	cin>>m;
	for (i=0;i<q;i++)
	{
	 if (a[i]=s)
		    {(a[i]==m)}
	}
	for (i=0; i<q; i++)
	{ cout<<"\n\t"<<a[i]<<" ";}
	getch();

}
не получается правильно задать s и m , а так по логике вроде должно работать, тока как правильно задать эти переменные, ну если еще какие то ошибки есть, буду рада за помощь в их устранениии

Последний раз редактировалось Sazary; 07.02.2010 в 22:06.
Mariya2009 вне форума Ответить с цитированием
Старый 04.02.2010, 21:11   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Код:
if (a[i]=s)
{(a[i]==m)}
Наоборот:
Код:
if (a[i]==s)
{(a[i]=m)}
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 04.02.2010, 21:36   #3
Mariya2009
Пользователь
 
Регистрация: 13.06.2009
Сообщений: 26
По умолчанию

ругается вот так (см каринку)
Изображения
Тип файла: jpg ошибка.jpg (27.2 Кб, 139 просмотров)
Mariya2009 вне форума Ответить с цитированием
Старый 04.02.2010, 21:54   #4
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Код:
for (i = 0; i < q; i++) //i-я строка
   for (int j = 0; j < strlen(a[i])) //j-й символ i-й строки
      if (a[i][j] == s)
         a[i][j] = m;
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 04.02.2010, 22:08   #5
Mariya2009
Пользователь
 
Регистрация: 13.06.2009
Сообщений: 26
По умолчанию

Вот так вот работает но ничего не меняет:

Код:
cout<<"\nVvidite simvol kotorii budem menyat: ";
       char* s;
       cin>>s;
       cout<<"\n Vvedite simvol NA kotorii nuchno zamenit:";
       char* m;
       cin>>m;
	for (i=0;i<q;i++)
	{
	 if (a[i]==s)
	    {(a[i]=m);
	    i++; }
	}
	for (i=0; i<q; i++)
	{ cout<<"\n\t"<<a[i]<<" ";}
	getch();

Последний раз редактировалось Sazary; 07.02.2010 в 22:07.
Mariya2009 вне форума Ответить с цитированием
Старый 04.02.2010, 22:31   #6
Mariya2009
Пользователь
 
Регистрация: 13.06.2009
Сообщений: 26
По умолчанию

если сделать вот так:
Код:
cout<<"\nVvidite simvol kotorii budem menyat: ";
	char* s;
       cin>>s;
       cout<<"\n Vvedite simvol NA kotorii nuchno zamenit:";
       char* m;
       cin>>m;
       int h;
       h=strlen(a[i]);
	for (i=0;i<q;i++)
	{
	for (int j=0;j<h;j++)
	{
	 if (a[i][j]==s)
		    (a[i][j]=m);
		   i++;
	}
	}
	for (i=0; i<q; i++)
	{ cout<<"\n\t"<<a[i]<<" ";}
	getch();
то в строках
Код:
if (a[i][j]==s)
		    (a[i][j]=m);
ругается на s и m
Cannot convert 'char' to 'char *'

Последний раз редактировалось Sazary; 07.02.2010 в 22:07.
Mariya2009 вне форума Ответить с цитированием
Старый 04.02.2010, 22:39   #7
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Так а зачем делать s и m указателями? Делаем их символами и все должно работать! (скорее всего - весь код не смотрел)
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 05.02.2010, 00:26   #8
Matr1x
Студент
Пользователь
 
Аватар для Matr1x
 
Регистрация: 10.11.2009
Сообщений: 49
По умолчанию

это всеже двумерный массив пускай и из символов, про это забывать не надо
Код:
#include<iostream>
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
//using namespace std;

int main()
{
	clrscr();
	cout<<"Vvedite kolishestvo strok: ";
	int q;
	cin>>q;
	char **a;
	a=new char *[q];
	for (int i=0; i<q;i++) a[i]=new char[50];
	for (int i=0;i<q;i++) cin>>a[i];
	cout<<"\nVivod vvedennix strok";
	for (int i=0; i<q; i++) cout<<"\n\t"<<a[i]<<" ";	
	cout<<"\nVvidite simvol kotorii budem menyat: ";
	char s;	cin>>s;
	cout<<"\nVvedite simvol NA kotorii nuchno zamenit: ";
	char m;	cin>>m;
	for (int i=0;i<q;i++)
	{
		for(int k=0;k<strlen(a[i]);k++)
		{
			if(a[i][k]==s) a[i][k]=m;
		}
	}
	for (int i=0; i<q; i++) cout<<"\n\t"<<a[i]<<" ";
	getch();
}
Matr1x вне форума Ответить с цитированием
Старый 05.02.2010, 00:32   #9
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Ну вот еще напишу все же, т.к. ТС хотел с указателями играться))) :
Код:
#include <iostream.h>

int main()
{
	int q;
	cout<<"Vvedite kolishestvo strok: ";
	cin>>q;	

	char **a = new char *[q];
	for (int i = 0; i < q; i++)
	{
		a[i]=new char[50];
	}

	for (int i = 0; i < q ; i++) cin>>a[i];

	char* s = new char[2];
	cout<<"\nVvidite simvol kotorii budem menyat: ";
	cin>>s;

	cout<<"\nVvedite simvol NA kotorii nuchno zamenit:";
	char* m = new char[2];
	cin>>m;

	int h;
	for (int i = 0;i < q; i++)
	{
		h = strlen(a[i]);
		for (int j=0;j<h;j++)
		{
			if (a[i][j] == *s) a[i][j] = *m;
		}
	}

	for (int i = 0; i < q; i++) cout<<"\n\t"<<a[i]<<" ";

	delete[]a;
	delete[]s;
	delete[]m;

	return 0;
}
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замена символа... Glock Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 20.11.2009 15:13
ассемблер, замена символа в строке tiger Помощь студентам 3 05.11.2009 15:25
Замена символа Flippp Общие вопросы C/C++ 20 24.06.2009 17:18
Дана строка S. Преобразовать строку, заменив в ней каждое многоточие одной точкой.Строки в C++ slog Помощь студентам 9 16.12.2008 20:14
Перл. Замена символа \ на символ / Stilet PHP 1 12.04.2008 10:17