Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.65
сашк
0 / 0 / 0
Регистрация: 08.11.2009
Сообщений: 111
#1

Написать функцию, которая переводит введенную пользователем маленькую букву в большую - C++

12.03.2010, 08:57. Просмотров 3776. Ответов 40
Метки нет (Все метки)

Ребят помогите пожалуйста написать функцию, которая переводит введенную пользователем маленькую букву в большую, надо сделать для английских и русских букв, если мы вводим число, то должно выйти сообщение об ошибке, помогите пожалуйста)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.03.2010, 08:57
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Написать функцию, которая переводит введенную пользователем маленькую букву в большую (C++):

Написать функцию, которая переводит число в другую систему счисления
Написать функцию, которая получает в качестве аргументов целое положительное...

Программа, которая копировала бы строку, введенную пользователем с клавиатуры в новую
Написать программу, которая копировала бы строку, введенную пользователем с...

Написать функцию, которая выписывает имена на поданную букву
Доброго времени суток знатаки! Нужна помощь ? Как написать функцию, которая...

Написать функцию, которая определяет количество вхождений в СПИСОК елемента, заданого пользователем.
Ребята помогите пожалуйста, срочно надо!!!!!! Есть програма, но надо что бы она...

Написать функцию, которая из двух введённых пользователем фамилий определяет, какая длиннее
Доброй ночи. Очень прошу помочь написать программу. Требуется написать функцию,...

Используя стек, определить функцию, которая переводит выражение в префиксную форму
Есть задание - Используя стек, определить функцию, которая переводит выражение,...

40
Day
1159 / 964 / 83
Регистрация: 29.10.2009
Сообщений: 1,385
12.03.2010, 10:29 #2
C
1
2
3
4
5
6
7
8
9
10
11
  unsigned char c;
  if (c>='0' && c<='9') ... // Это цифра
  if (c>=97 && c<=122) c -= 32;  // Английские
     //  Для Русских зависит от кодировки
  // DOS (OEM)
  if (c>=160 && c<=175) c -= 32;
  if (c>=224 && c<=239) c -= 80;
  if (c==241) c = 240;
   // Windows (ANSI)
  if (c>=224 && c<=255) c -= 32;
  // Unix-Linux (KOI-8) - как-то еще, нет таблицы под рукой
0
M128K145
Эксперт JavaЭксперт С++
8320 / 3540 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
12.03.2010, 10:59 #3
сашк, используйте стандартные функции isdigit и ToUpper(как-то так пишутся)
0
dyosick
62 / 62 / 17
Регистрация: 25.08.2008
Сообщений: 178
12.03.2010, 11:25 #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
27
28
#include <iostream>
using namespace std;
 
int main()
{
    char lit;
    int code=0;
    
    cout<<"Write little character : ";
    cin>>lit;
    
    code=static_cast<int>(lit);
    
    if(code>96 && code<123)
       cout<<"It`s an English alphabet! "<<"\nBig character : "
       <<static_cast<char>(lit-32)<<endl<<endl;
    if(code<-80)
       cout<<"It`s a Russian alphabet!"<<"\nBig character : "
       <<static_cast<char>(lit-32)<<endl<<endl;
    if(code>-33 && code<-16)
       cout<<"It`s a Russian alphabet!"<<"\nBig character : "
       <<static_cast<char>(lit-80)<<endl<<endl;
    if(code>47 && code<58)
       cout<<"You write a number but you must write character!!!"<<endl<<endl;
    
    system("pause");
    return 0;
}
1
сашк
0 / 0 / 0
Регистрация: 08.11.2009
Сообщений: 111
13.03.2010, 08:57  [ТС] #5
блин, нельзя использовать станадартную функцию перевода из маленьких в большие, нужно как то написать свою функцию с параметрами перевода, помогите пожалуйста)))
0
AnonymC
1178 / 461 / 86
Регистрация: 23.06.2009
Сообщений: 6,363
Завершенные тесты: 1
13.03.2010, 11:50 #6
а че помогать уже 2 кода есть,не устраивает?
C++
1
2
3
4
char c;
cin>>c;
if (c>=97 && c<=122) c -= 32;
cout<<c;
1
сашк
0 / 0 / 0
Регистрация: 08.11.2009
Сообщений: 111
13.03.2010, 17:13  [ТС] #7
нужно в виде функции с параметрами)))
0
fasked
Эксперт С++
4976 / 2556 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
13.03.2010, 17:21 #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
 
void foo(char &c)
{
    if (c>=97 && c<=122) 
        c -= 32;
    else
        cerr << "ERROR" << endl;
}
 
int main()
{
    char c = 0;
    cout << "enter char: ";
    cin >> c;
    foo(c);
    cout << c;
}
0
сашк
0 / 0 / 0
Регистрация: 08.11.2009
Сообщений: 111
13.03.2010, 17:28  [ТС] #9
как задержку экрана здесь сделать??
0
fasked
Эксперт С++
4976 / 2556 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
13.03.2010, 17:34 #10
C++
1
2
3
4
5
6
#include <cstdlib>
int main()
{
    // ---
    system("PAUSE");
}
1
сашк
0 / 0 / 0
Регистрация: 08.11.2009
Сообщений: 111
13.03.2010, 17:36  [ТС] #11
а для русских букв можешь в эту функцию добавить??
0
fasked
Эксперт С++
4976 / 2556 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
13.03.2010, 17:39 #12
http://www.cyberforum.ru/post594579.html
Смотри сюда, тебе все уже написали. Если не знаешь, что такое функции, почитай в книге.
0
сашк
0 / 0 / 0
Регистрация: 08.11.2009
Сообщений: 111
13.03.2010, 17:42  [ТС] #13
спасибо!!!
0
AnonymC
1178 / 461 / 86
Регистрация: 23.06.2009
Сообщений: 6,363
Завершенные тесты: 1
13.03.2010, 21:47 #14
Цитата Сообщение от сашк Посмотреть сообщение
нужно в виде функции с параметрами)))
разве написать
C++
1
char text()
потом в скобках писать
C++
1
cahr c;
и в конце функции писать
C++
1
return c;
трудно?
0
сашк
0 / 0 / 0
Регистрация: 08.11.2009
Сообщений: 111
14.03.2010, 16:35  [ТС] #15
балин(((( может кто нибудь нормальный полный рабочий код написать, чтоб если мы несколько маленьких букв русских или английских букв вводим, чтоб в большие переводились и чтоб ошибка выходила если мы не букву вводим....
0
AnonymC
1178 / 461 / 86
Регистрация: 23.06.2009
Сообщений: 6,363
Завершенные тесты: 1
14.03.2010, 16:44 #16
C++
1
2
3
4
5
unsigned char c;
loop: cin.getline(c,10000);
 if (c>='0' && c<='9'){cout<<"ошибка!!!"<<endl; goto loop;}
  if (c>=97 && c<=122) {c -= 32;  cout<<c<<endl;}
  if (c>=192 && c<=224) {c -= 32;  cout<<c<<endl;}
0
сашк
0 / 0 / 0
Регистрация: 08.11.2009
Сообщений: 111
14.03.2010, 16:46  [ТС] #17
loop что означает?
0
AnonymC
1178 / 461 / 86
Регистрация: 23.06.2009
Сообщений: 6,363
Завершенные тесты: 1
14.03.2010, 16:50 #18
Функциональность

В абсолютном большинстве языков программирования, поддерживающих его использование, оператор GOTO состоит из двух частей: собственно имени оператора и метки, маркирующей целевую точку перехода в программе, то есть имеет вид GOTO метка. Метка, в зависимости от правил языка, может быть либо числом (как, например, в классическом Бейсике), либо правильным идентификатором используемого языка программирования. Чтобы оператор перехода был корректным, необходимо наличие в тексте программы места, помеченного той же самой меткой, которая использована в данном операторе. Пометка может выглядеть по-разному, например, в языке Паскаль она имеет вид метка: (то есть имя метки, за которым следует двоеточие), возможны и другие соглашения.
Выполнение оператора перехода состоит в том, что следующим после него будет выполнен тот оператор программы, который стоит в тексте непосредственно за помеченным меткой местом (оператор, помеченный меткой), и далее будут последовательно выполняться операторы, расположенные после него (разумеется, до следующего оператора перехода, ветвления или цикла). В случае машинных языков (ассемблеров или непосредственно машинного кода) технический смысл команды перехода элементарен: она записывает в регистр процессора, хранящий адрес следующей выполняемой команды, адрес команды, помеченной меткой.
[править] Распространение

GOTO имеется в таких языках, как Фортран, Алгол, КОБОЛ, Бейсик, Си, C++, D, Паскаль, Perl, Ада, PHP, а также во многих других. GOTO присутствует также во всех языках ассемблера в форме JMP, JUMP или BRA (от англ. branch — ветвь) и используется там чрезвычайно активно. Свобода использования оператора GOTO в различных языках сильно различается. Если в ассемблерах или языках типа Фортрана он может применяться произвольно (допускается передача управления внутрь ветви условного оператора или внутрь тела цикла, а иногда и процедуры), то в более поздних языках высокого уровня его использование ограничено: как правило, с помощью GOTO запрещено передавать управление между различными процедурами и функциями, внутрь выделенного блока операторов, между ветвями условного оператора и оператора множественного выбора.
GOTO отсутствует в некоторых языках высокого уровня, например в Forth (но может быть реализовано средствами самого языка). В Паскаль GOTO первоначально включён не был, но недостаточность имеющихся языковых средств вынудила Никлауса Вирта его добавить. В более поздних своих языках Вирт всё же отказался от GOTO: этого оператора нет ни в Модуле-2, ни в Обероне и Компонентном Паскале. В Java есть зарезервированное слово goto, но оно не несёт никаких функций — оператора безусловного перехода в языке нет. При этом в языке сохранились метки — они могут применяться для выхода из вложенных циклов операторами break и continue.
[править] Критика

Оператор GOTO в языках высокого уровня является объектом критики, поскольку чрезмерное его применение приводит к созданию нечитаемого «спагетти-кода». Впервые эта точка зрения была отражена в статье Эдсгера Дейкстры «Доводы против оператора GOTO»[1], который заметил, что качество программного кода обратно пропорционально количеству операторов GOTO в нём. Статья приобрела широкую известность как среди теоретиков, так и среди практиков программирования, в результате чего взгляды на использование оператора GOTO были существенно пересмотрены. В своей следующей работе Дейкстра обосновал тот факт, что для кода без GOTO намного легче проверить формальную корректность.
Код с GOTO трудно форматировать, так как он может нарушать иерархичность выполнения (т.е. парадигму структурного программирования), и потому отступы, призванные отображать структуру программы, не всегда могут быть выставлены правильно. GOTO также аннулирует многие возможности компилятора по оптимизации управляющих структур[2].
Доводы против оператора GOTO оказались столь серьёзны, что в структурном программировании его стали рассматривать как крайне нежелательный. Это нашло своё отражение при проектировании новых языков программирования. Например, GOTO был намеренно полностью запрещён в Java и Ruby. Вместе с тем, в Аде — одном из наиболее продуманных с точки зрения архитектуры языке за всю историю[3], GOTO всё же был оставлен.
Формально доказано, что применение GOTO не является обязательным (то есть не существует такой программы с GOTO, которую нельзя было бы переписать без этого оператора с полным сохранением функциональности) (однако с потерями эффективности (см. ниже)).
[править] Оправданное применение

Тем не менее, в практическом программировании применение GOTO в некоторых случаях можно считать допустимым. Поскольку GOTO — «простейший», «атомарный» оператор перехода, а все остальные являются «составными», производными от него, то применение GOTO допустимо и оправданно, когда другие средства языка не реализуют или недостаточно эффективно реализуют нужную функциональность. К таким случаям можно отнести:
[править] Выход из нескольких вложенных циклов сразу

Обычно считается, что в языках, где операторы досрочного завершения цикла (такие, как break и continue в Си) могут относиться только к тому из вложенных циклов, в котором они расположены, использование goto допустимо, чтобы выйти из нескольких вложенных циклов сразу. Здесь GOTO значительно упрощает программу, избавляя от необходимости создания вспомогательных переменных-флагов и условных операторов.
Другие варианты решения этой проблемы — помещение вложенных циклов в отдельную процедуру и использование команды досрочного выхода из процедуры, а в языках с поддержкой исключений — генерацию исключения, обработчик которого располагается за пределами циклов. Однако подобные решения могут снижать производительность, в особенности если этот участок кода вызывается многократно (поскольку и вызовы процедур, и операторы работы с исключениями транслируются далеко не в одну машинную инструкцию).
Пример:
int matrix[n][m];
int value;
...
for(int i=0; i<n; i++)
for (int j=0; j<m; j++)
if (matrix[i][j] == value)
{
printf("value %d found in cell (%d,%d)\n",value,i,j);
//act if found
goto end_loop;
}
printf("value %d not found\n",value);
//act if not found
end_loop: ;


0
сашк
0 / 0 / 0
Регистрация: 08.11.2009
Сообщений: 111
14.03.2010, 16:53  [ТС] #19
спасибо, теперь понятно))) балин а код не компилится((((
0
AnonymC
1178 / 461 / 86
Регистрация: 23.06.2009
Сообщений: 6,363
Завершенные тесты: 1
14.03.2010, 16:55 #20
сашк, че хочет
0
14.03.2010, 16:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.03.2010, 16:55
Привет! Вот еще темы с решениями:

Написать программу которая переводит строку в обратную сторону
написать программу которая переводит строку в обратную сторону при этом не...

Написать программу, которая будет зеркально выводить введенную строку
Доброго времени суток! Стоит задача: написать программу, которая будет...

Написать программу, которая переводит число из 4-й системы счисления в 14-ю через 10-ю
Написать программу, которая переводит число из 4-й системы счисления в 14-ю...

Написать программу, которая переводит число из 13-й системы счисления в 3-ю через 10-ю
Написать программу, которая переводит число из 13-й системы счисления в 3-ю...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru