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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.01.2012, 13:06   #1
Killspamers
Пользователь
 
Регистрация: 21.12.2011
Сообщений: 14
По умолчанию Работа со строками, C++

Народ, снова нужна ваша помощь есть такая задачка
В произвольной тексте на русском языке заменить все буквы "о" буквами "а"

Помогите пжлст =) Она дана как пример на экзамене и ещё несколько подобных, помогите пжлст =) а от неё я уже плясать буду)

По идее задача не сложная, но я с текстом что-то на "вы". Попробовал проделать это с обычной строкой, но работает это только с английским алфавитом((

Код:
// 1 
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <iostream> 
#include <clocale>
using namespace std;
int main() 
{
setlocale(LC_ALL,"rus");
cout<<"Программа заменяет все буквы \"а\" буквами \"о\"";
char s[1024];
cout<<"\nВведите текст: ";
gets(s);
int len = strlen(s);
for (int i = 0; i<len ; i++)
{
 if(s[i] == 'a')
 s[i] = 'o';
}
cout<<"результат "<<s;
getch();
}
Killspamers вне форума Ответить с цитированием
Старый 29.01.2012, 13:47   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А чем помочь то? На первый взгляд решение правильное, только местами символы А и О поменяй в операторе условия.
Ну и я бы gets(s); заменил на cin>>s;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.01.2012, 14:07   #3
Killspamers
Пользователь
 
Регистрация: 21.12.2011
Сообщений: 14
По умолчанию

Не, ну мне знающие люди сказали что я по дубовому память выделил char s[1024], раз текст, то наверное много строк должно быть, ну и проблема с английским алфавитом( на русском языке же =/) на русском ок крякозябры выводит.
Killspamers вне форума Ответить с цитированием
Старый 29.01.2012, 14:41   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
раз текст, то наверное много строк должно быть
Чет я не вижу чтоб он из файла считывался. И потом важно не колво строк а колво символов. Ты что спроможний 1000 символов в прогу вбить? Сомневаюсь.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.01.2012, 14:46   #5
Killspamers
Пользователь
 
Регистрация: 21.12.2011
Сообщений: 14
По умолчанию

Хорошо, а как насчёт латиницы?
Killspamers вне форума Ответить с цитированием
Старый 29.01.2012, 15:45   #6
_kilik_
Пользователь
 
Аватар для _kilik_
 
Регистрация: 16.08.2011
Сообщений: 69
По умолчанию

Попробуйте так:
Код:

#include<iostream>
#include<string>
#include<Windows.h>
#include <stdio.h>
#include <conio.h>

using namespace std;
int main() {
	setlocale(LC_ALL,".1251");
	cout<<"Программа заменяет все буквы \"а\" буквами \"о\"";
	char s[1024];
	cout<<"\nВведите текст: ";

	int cp=GetConsoleCP();
	SetConsoleCP(1251);
	gets(s);
	SetConsoleCP(cp);

	for (int i = 0; s[i]!='\0' ; i++)
		if(s[i] == 'а')
			s[i] = 'о';
	cout<<"результат "<<s;
	getch();
}
Взяло отсюда -http://programmersforum.ru/showthread.php?t=86929
_kilik_ вне форума Ответить с цитированием
Старый 29.01.2012, 16:00   #7
Killspamers
Пользователь
 
Регистрация: 21.12.2011
Сообщений: 14
По умолчанию

Спасибо! Вроде работает!) только что такое SetConsoleCP(1251)?)

Последний раз редактировалось Killspamers; 29.01.2012 в 16:03.
Killspamers вне форума Ответить с цитированием
Старый 29.01.2012, 16:10   #8
_kilik_
Пользователь
 
Аватар для _kilik_
 
Регистрация: 16.08.2011
Сообщений: 69
По умолчанию

Я думаю преподу понравится, если вы сделаете чтения с файла.(сразу все проблемы отпадают)
К примеру:
Код:
#include<iostream>
#include<string>
#include<Windows.h>
#include <stdio.h>
#include <conio.h>
#include<fstream>
using namespace std;


int main(){//помощь
	setlocale(LC_ALL,".1251");
	string fname;
	cout<<"введите имя файла "<<endl;
	cin>>fname;
	fstream in(fname);
    int size;
    if (!in.is_open()){
		cout<<"невозможно открыть файл \n";
		return(-1);
	}
    in.seekg(0, ios::end);
    size = int(in.tellg());
    in.seekg(0, ios::beg);
    char * buff = new char [size];
    memset(buff, 0, size);
    in.read(buff, size);
    in.close();

	for (int i = 0; buff[i]!='\0' ; i++)
		if(buff[i] == 'а')
			buff[i] = 'о';
	cout<<"результат "<<buff<<endl;
    system("PAUSE");
    delete [] buff;
    return 0;
}

Последний раз редактировалось _kilik_; 29.01.2012 в 16:30.
_kilik_ вне форума Ответить с цитированием
Старый 29.01.2012, 16:29   #9
_kilik_
Пользователь
 
Аватар для _kilik_
 
Регистрация: 16.08.2011
Сообщений: 69
По умолчанию

GetConsoleCP() ->получить кодировку символов используемую в консоли
SetConsoleCP() ->установить кодировку символов используемую в консоли
_kilik_ вне форума Ответить с цитированием
Старый 29.01.2012, 16:30   #10
Killspamers
Пользователь
 
Регистрация: 21.12.2011
Сообщений: 14
По умолчанию

Не компилится, "невозможно преобразовать параметр 1 из 'std::string' в 'const char *'"
15 строка.
Killspamers вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа со строками. tinton Помощь студентам 0 14.11.2011 18:31
C# Работа со строками Rikhard Общие вопросы C/C++ 1 08.12.2010 22:29
Работа с матрицами (норма матрицы, работа со строками) Neitrosha Помощь студентам 1 26.11.2010 20:19
Работа со строками (С/С++) 4ery Помощь студентам 3 24.12.2008 22:54
Работа с строками Technolog Microsoft Office Excel 2 17.12.2008 09:58