Поменять согласные буквы на гласные во введенной пользователем строке, а гласные — на соответствующий ASCII код, используя функции.
Если вы еще не знаете, что такое ASCII код, прочитайте статью — Расширенный набор символов ASCII. Если захотите реализовать данную программу с помощью функций, то не забудьте прочитать статью — Функции в С++. Результат работы программы показан ниже:
// alphavit.cpp: определяет точку входа для консольного приложения.
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <ctime>
using namespace std;
int poisk(const char *c, const int); // прототип функции
int main(int argc, char* argv[])
{
char in_string[101]; // размер вводимой строки ограничивается сотней символов
cout << "Enter the string of characters: ";
cin >> in_string;
cout << "Result: ";
poisk(in_string, strlen(in_string)); // запуск функции
system("pause");
return 0;
}
int poisk(const char *c,//передаем в функцию введенную строку
const int size) // размер введенной строки
{
const char glas[] = "AEIOUYaeiouy"; // массив гласных букв
const char sogl[] = "BCDFGHJKLMNPQRSTVWXZbcdfghjklmnpqrstvwxz"; // массив согласных букв
srand( time(0) ); //засеваем генератор случайных чисел значением возвращаемым функцией time()
for (int i = 0; i < size; i++)
{
if ( strchr(sogl, c[i]) == NULL) // определяем вхождение символа из введенного массива в массив согласных букв
{
cout << int(c[i]) << " "; // заменяем гласную букву на целое значение соответствующее этой букве в таблице аски
} else
{
cout << glas[rand() % 12] << " "; // заменяем согласную букву на случайную гласную
}
}
cout << endl;
return 0;
}
Пример работы программы:
CppStudio.com
Enter the string of characters: cppstudio
Result: O E i o o 117 e 105 111
Комментарии
Роман Максимов
/* ѕомен€ть согласные буквы на гласные во введенной пользователем строке, а гласные - на соответсвующий ASCII код, использу€ функции. */ //--------------------------------------------------------------------------- #include <iostream> //--------------------------------------------------------------------------- using namespace std; //--------------------------------------------------------------------------- char vowel() { char vowels[12] = "AEIOUYaeiouy"; srand(time(NULL)); return vowels[(rand() % 12)]; } //--------------------------------------------------------------------------- bool isConsonant(char symbol) { char consonants[] = "BCDFGHJKLMNPQRSTVWXZbcdfghjklmnpqrstvwxz"; return strchr(consonants, symbol) ? true : false; } //--------------------------------------------------------------------------- int main() { string str; cout << "Enter the string of characters: "; cin >> str; cout << "Result: "; for (int i = 0; i < str.size(); i++) if (isConsonant(str[i])) cout << vowel() << " "; else cout << (int)str[i] << " "; cout << endl; system("pause"); return 0; } //---------------------------------------------------------------------------Anufree
#include <iostream> #include <string> #include <ctime> using namespace std; int main() { setlocale(LC_ALL, "Russian"); srand(time(0)); bool b = false; char arr[] = { 'A', 'a', 'E', 'e', 'I', 'i', 'U', 'u', 'O', 'o', 'Y', 'y' }; string str; cout << "Enter the string of characters: "; cin >> str; cout << "Result: "; for (int i = 0; i < str.size(); ++i) { b = false; for (int j = 0; j < sizeof(arr); ++j) { if (str[i] == arr[j]) { cout << int(str[i]) << ' '; b = true; } } if (b == false) { cout << arr[2 + rand() % 10] << ' '; } } cout << endl; system("pause"); return 0; }Boss
#include <iostream> #include <windows.h> #include <ctime> using namespace std; int main() { srand(time(0)); char startstring[30]; char consonant[20] = {'b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'z'}; char vowel[12] = {'A', 'a', 'E', 'e', 'I', 'i', 'O', 'o', 'U', 'u', 'Y', 'y'}; cout << "Enter the string: "; cin >> startstring; for (int i = 0; i < strlen(startstring); i++) { int counter1(0); // Find all consonant letters and change they to lowercase for (int j = 0; j < strlen(vowel); j++) { if (startstring[i] == vowel[j]) counter1 = 1; } if (counter1 == 0) startstring[i] = tolower(startstring[i]); // Change consonant letters to vowel for (int j = 0; j < strlen(consonant); j++) { if (startstring[i] == consonant[j]) cout << vowel[rand() % (strlen(vowel))] << " "; } // Change vowel letters to ASCII code for (int j = 0; j < strlen(vowel); j++) { if (startstring[i] == vowel[j]) { cout << static_cast<int>(startstring[i]) << " "; } } } cin.sync(); cin.get(); return 0; }Boss
Вопрос по альтернативному решению задания. Все решения, указанные выше, анализируют исходную строку и далее используют функцию вывода результата на экран. Задачу можно решить иначе: анализировать исходную строку и записывать результат в другую строку, которую далее выводить на экран. Понятно, что для решения задачи достаточно и первого варианта, но второй вариант более универсальный.
При попытке создать программу по второму варианту столкнулся с проблемой записи в итоговую сроку номера символа ACSII. Например, ‘A’ соответствует 65. Для записи числа 65 в строку нужны два символа с кодами 54 и 53. В этом случае задача становится куда более сложной. Буду признателен, если светлая голова выложит решение данной задачи. P.S. готовой штатной функции перевода символа в ASCII код и запись его в переменную типа char не нашел. Скорее всего, не существует.
Smile Time
#include <iostream> #include <conio.h> #include <windows.h> #include <string> #include <ctime> using namespace std; const int iMaxSize = 255; void swapAndOther(char*, int); int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); srand(time(0)); char strMain[iMaxSize]; cout << "Введите строку: "; cin.getline(strMain, iMaxSize); swapAndOther(strMain, strlen(strMain)); cout << endl; system("pause"); return 0; } void swapAndOther(char *temp, int iSize) { char vowels[] = "ЙйУуЕеЪъЫыАаОоЭэЯяИиЬьЮю"; char consonants[] = "ЦцКкНнГгШшЩщЗзХхФфВвПпРрЛлДдЖжЧчМмТтБб"; cout << "Изменённая строка: "; for (int i = 0; i < iSize; i++){ for (int j = 0; j < strlen(vowels); j++){ //проверяем гласные if (temp[i] == vowels[j]) cout << (int)temp[i] << ' '; } for (int j = 0; j < strlen(consonants); j++){ //проверяем согласные if (temp[i] == consonants[j]){ temp[i] = vowels[rand() % strlen(vowels)]; cout << temp[i] << ' '; } } } }NaikoN
#include <iostream> #include <time.h> #include <cstdlib> using namespace std; void fn_change(string,string); int main() { srand(time(NULL)); string vowel="aeiouy",enter_str,new_vowel; cin>>enter_str; for(int i=0;i<enter_str.length();++i)///выбираем все гласные из введенной строки { for(int j=0;j<vowel.length();++j) { if(enter_str[i]==vowel[j]) { new_vowel+=enter_str[i]; } } } fn_change(enter_str,new_vowel); return 0; } void fn_change(string enter_str,string new_vowel) { for(int i=0;i<enter_str.length();++i) { for(int j=0;j<new_vowel.length();++j) { if(enter_str[i]==new_vowel[j])///если гласныя буква { cout<<int(enter_str[i])<<ends; break; } if(j==new_vowel.length()-1) { ///выбирает случайную гласную букву из введенной пользователм строки cout<<new_vowel[0+rand()%new_vowel.length()]<<ends;///если согласная } } } }plaha
void charReplace(char user[]) { char glasn[] = "aeiouy"; char soglasn[] = "bcdfghjklmnpqrstvwxz"; for(int i = 0; i < strlen(user); i++) { for(int j = 0; j < strlen(soglasn); j++) { if(user[i] == soglasn[j]) { cout << glasn[rand() % strlen(glasn)] << " "; } else if(user[i] == glasn[j]){ cout << (int)user[i] << " "; } } } }int main() { srand(time(0)); char user[50]; cout << "Введите слово: "; cin >> user; charReplace(user); return 0; }