Форум программистов, компьютерный форум CyberForum.ru

Поменять каждую согласную русскую букву на цифру «8», а каждую гласную – на символ «–» - C++

Восстановить пароль Регистрация
 
Leert
0 / 0 / 0
Регистрация: 20.03.2014
Сообщений: 37
10.06.2014, 18:04     Поменять каждую согласную русскую букву на цифру «8», а каждую гласную – на символ «–» #1
Задание: Поменять каждую согласную русскую букву на цифру «8», а каждую гласную – на символ «–»
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <locale.h>
#include<iostream>
int main(void)
{
setlocale(LC_ALL,"rus");
using namespace std;
char string[256];
int i;
char t;
//bool good = true; //Определяет является ли введенная строка идентификатором
printf("Введите строку: ");
scanf("%s",string);
for(int i=0; strlen(string); i++) 
if((string[i] >= 'B', 'C', 'D', 'F', 'G', 'H', 'J', 'K', 'L', ' M', 'N', 'P', 'Q', 'R', ' S', 'T', 'V', 'W', 'X', 'Z')|| (string[i] = 'b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', ' m', 'n', 'p', 'q', 'r', ' s', 't', 'v', 'w', 'x', 'z'))
{
string[i]='8';
}
else
if((string[i] >= 'A', 'E', 'I', 'O', 'U', 'Y')||( string[i] = 'a', 'e', 'i', 'o', 'u', 'y'))
{
string[i]='-';
}
printf("Получившаяся строка: %s",string[i]);
return 0;
getch();
}
Выдает ошибку: Необработанное исключение в "0x772b15ee" в "***.exe": 0xC0000005: Access violation.
Подскажите, пожалуйста, где не правильно....
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2014, 18:04     Поменять каждую согласную русскую букву на цифру «8», а каждую гласную – на символ «–»
Посмотрите здесь:

C++ Удвоить каждую букву
Каждую цифру числа забить в ячейку массива C++
C++ Строковые литералы (заменить каждую цифру 0…9 на слова)
Убрать из слова каждую вторую гласную букву в диапазоне от 8 до 13 буквы C++
Прокомментировать каждую строку кода (или хотя бы каждую функцию) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.06.2014, 18:38     Поменять каждую согласную русскую букву на цифру «8», а каждую гласную – на символ «–» #2
Цитата Сообщение от Leert Посмотреть сообщение
for(int i=0; strlen(string); i++)
Что за условие работы цикла?

Добавлено через 1 минуту
C++
1
for(int i=0; i < strlen(string); i++)
Leert
0 / 0 / 0
Регистрация: 20.03.2014
Сообщений: 37
10.06.2014, 18:40  [ТС]     Поменять каждую согласную русскую букву на цифру «8», а каждую гласную – на символ «–» #3
Цитата Сообщение от alsav22 Посмотреть сообщение
for(int i=0; i < strlen(string); i++)
теперь он выводит: Run-Time Check Failure #3 - The variable 'i' is being used without being initialized.
и показывает на эту строчку
Цитата Сообщение от Leert Посмотреть сообщение
printf("Получившаяся строка: %s",string[i]);
FraidZZ
Модератор
 Аватар для FraidZZ
3878 / 1504 / 227
Регистрация: 06.01.2013
Сообщений: 4,029
Завершенные тесты: 1
10.06.2014, 18:43     Поменять каждую согласную русскую букву на цифру «8», а каждую гласную – на символ «–» #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
#include <cstring>
#include <clocale>
 
using namespace std;
 
bool in_list(char symbol, char *list){
  bool tmp = false;
  for (int i = 0; list[i] != '\0'; i++) if (symbol == list[i]) {tmp = true; break;}
  return tmp;
}
 
int main(){
  setlocale(0, "");
  char buf[1024];
  printf("Введите строку (Не более 1023 символов):");
  gets(buf);
  char s_list[] = "BbCcDdFfGgHhJjKkLlMmNnPpQqRrSsTtVvXxYyZz";
  char g_list[] = "AaEeIiOoUuWw";
  
  for (int i = 0; buf[i] != '\0'; i++){
    if (in_list(buf[i], s_list)) buf[i] = '8';
    if (in_list(buf[i], g_list)) buf[i] = '-';
  }
  printf("%s", buf);
}
Сделал для английских символов, так как все русские символы на моем устройстве воспринимаются как многобайтные.

Добавлено через 34 секунды
Переделать, надеюсь, не составит труда.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.06.2014, 18:47     Поменять каждую согласную русскую букву на цифру «8», а каждую гласную – на символ «–» #5
Цитата Сообщение от Leert Посмотреть сообщение
и показывает на эту строчку
И зачем там i ?

Добавлено через 2 минуты
Цитата Сообщение от Leert Посмотреть сообщение
Поменять каждую согласную русскую букву
И где, здесь в коде, русские буквы? Вот это?
C++
1
if((string[i] >= 'B', 'C', 'D', 'F', 'G', 'H', 'J', 'K', 'L', ' M', 'N', 'P', 'Q', 'R', ' S', 'T', 'V', 'W', 'X', 'Z')|| (string[i] = 'b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', ' m', 'n', 'p', 'q', 'r', ' s', 't', 'v', 'w', 'x', 'z'))
Yandex
Объявления
10.06.2014, 18:47     Поменять каждую согласную русскую букву на цифру «8», а каждую гласную – на символ «–»
Ответ Создать тему
Опции темы

Текущее время: 17:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru