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

помогите с islower() и setfill() - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 70, средняя оценка - 4.93
AmiGOmen
 Аватар для AmiGOmen
1 / 1 / 0
Регистрация: 06.08.2011
Сообщений: 8
22.08.2011, 01:24     помогите с islower() и setfill() #1
1)Библиотечная функция islower() принимает в качестве аргумента один символ (букву) и возвращает ненулевое целое значение в том случае, если буква является строчной, и нулевое, если буква является заглавной.Описание функции хранится в файле CTYPE.H.Напишите программу, которая принимает букву от пользователя, а затем выводит нулевое или ненулевое значение в зависимости он того, является буква строчной или нет.

2)Когда размер величины, вводимой на экран с помощью манипулятора setw(), оказывается меньше размера зарезервированного поля, по умолчанию незаполненные поля заполняются пробелами.Манипулятор setfill()принимает в качестве аргумента один символ, который замещает все пробелы на незаполненных позициях поля.

Из этих текстов я не понял как ими пользоваться.
Подскажите пожалуйста(Желательно наглядный простенький пример).Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.08.2011, 01:24     помогите с islower() и setfill()
Посмотрите здесь:

C++ Функции tolower,islower,isupper
setfill на одну строку C++
Ошибка с islower C++
Функция islower() C++
Функция islower() C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
22.08.2011, 01:27     помогите с islower() и setfill() #2
Цитата Сообщение от AmiGOmen Посмотреть сообщение
Из этих текстов я не понял как ими пользоваться.
Подскажите пожалуйста(Желательно наглядный простенький пример).
Тут поищи. И да, гугл еще никто не отменял.
-=ЮрА=-
Заблокирован
Автор FAQ
22.08.2011, 09:36     помогите с islower() и setfill() #3
Цитата Сообщение от AmiGOmen Посмотреть сообщение
помогите с islower() и setfill()
- вот код и скриншот работы
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
#include <iostream.h>//cin, cout
#include <iomanip.h> //setfill,setw
#include <ctype.h>   //islower
 
int main()
{
    char ch;
    int val;
    do
    {
        cout<<"Enter char\r\n";
        cin>>ch;
        if(islower(ch))
            cout<<"islower - true ascii code of symbol: "<<(int)ch<<"\r\n";
        else
            cout<<"islower - false\r\n";
        cout<<"See use setw and setfill: \r\n";
        cout<<"Enter int number\r\n";
        cin>>val;
        cout<<setfill('x')<<setw(10);
        cout<<val<<"\r\n";
        cout<<"[Y/N] Y - new input\r\n";
        cin>>ch;
    }
    while(toupper(ch) == 'Y');
    return 0;
}
Миниатюры
помогите с islower() и setfill()  
Olga_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
22.08.2011, 10:11     помогите с islower() и setfill() #4
Первое задание можно еще и так простенько:
C
1
2
3
4
5
6
7
8
#include<stdio.h>
#include<ctype.h>
int main()
{
   int c = getchar();
   printf("%s\n", islower(c) ? "yes" : "no");
   return 0;
}
-=ЮрА=-
Заблокирован
Автор FAQ
22.08.2011, 10:21     помогите с islower() и setfill() #5
Olga_, чем конструкция (выражение) ? (если оно истенно) : (если оно не истенно) отличается от if()else которую выше привёл (? : - тотже оператор ветвления, что и if)
Olga_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
22.08.2011, 10:26     помогите с islower() и setfill() #6
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Olga_, чем конструкция (выражение) ? (если оно истенно) : (если оно не истенно) отличается от if()else которую выше привёл (? : - тотже оператор ветвления, что и if)
-=ЮрА=-, все у вас хорошо, просто написано для разнообразия
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
22.08.2011, 10:38     помогите с islower() и setfill() #7
Насчет setw/setfil:
Допустим, нужно вывести дату в формате DD.MM.YYYY, при необходимости добавив лидирующие нули. Если день == 1, месяц == 2, а год == 3, то вывод должен быть таким:
Код
01.02.0003
Для этой цели удобно использовать манипуляторы:
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
#include <iomanip>
int main(){
    int day = 1, month = 2, year = 3;
    std::cout << std::setfill('0') 
          << std::setw(2) << day << '.' 
          << std::setw(2) << month << '.' 
          << std::setw(4) << year << std::endl;
}
В setfill указывается символ, которым заполняется оставшееся пространство, в setw - ширина вывода.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
22.08.2011, 11:13     помогите с islower() и setfill() #8
Цитата Сообщение от AmiGOmen
а затем выводит нулевое или ненулевое значение в зависимости он того, является буква строчной или нет.
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
 
using namespace std;
 
int main()
{
    char c;
    
    if (cin >> c)
        cout << (islower((unsigned char) c) != 0) << endl;
    return 0;
}
Olga_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
22.08.2011, 11:21     помогите с islower() и setfill() #9
Тут еще от задания зависит, может пробелы, '\t', '\n' тоже считаются, тогда

C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
using namespace std;
 
int main()
{
    int c;
 
    if (c = cin.get())
        cout << (islower(c)) << endl;
    return 0;
}
Добавлено через 1 минуту
Кстати, accept, приводить тип здесь не обязательно, так как islower() тип int принимает
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
22.08.2011, 11:26     помогите с islower() и setfill() #10
Цитата Сообщение от Olga_
так как islower() тип int принимает
char может быть знаковым
символ может находиться за пределами 127 бит
тогда будет неявное приведение отрицательного числа к типу int
там, наверное, нужен static_cast

Цитата Сообщение от Olga_
Тут еще от задания зависит, может пробелы, '\t', '\n' тоже считаются, тогда
Цитата Сообщение от AmiGOmen
Напишите программу, которая принимает букву от пользователя
нужно isalpha()
Olga_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
22.08.2011, 11:26     помогите с islower() и setfill() #11
Цитата Сообщение от accept Посмотреть сообщение
char может быть знаковым
символ может находиться за пределами 127 бит
прототип функции islower() такой:
int islower(int)
Она может принимать и -1 - признак конца файла, так что ничего страшного
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
22.08.2011, 11:31     помогите с islower() и setfill() #12
Цитата Сообщение от Olga_
Она может принимать и -1 - признак конца файла, так что ничего страшного
это откуда следует, что -1 не вызовет неопределённого поведения ?
признак конца файла:
1) это любое целое отрицательное число типа int (про EOF ведь речь ?)
2) это не символ, его нельзя проверять через эти функции
Olga_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
22.08.2011, 11:35     помогите с islower() и setfill() #13
Цитата Сообщение от AmiGOmen Посмотреть сообщение
Напишите программу, которая принимает букву от пользователя...
Все от определений зависит, так символы ASCII тоже буквами можно считать, это элементы языка

Добавлено через 1 минуту
Цитата Сообщение от accept Посмотреть сообщение
это откуда следует, что -1 не вызовет неопределённого поведения ?
Вы попробуйте, не вызовет

Добавлено через 58 секунд
Цитата Сообщение от accept Посмотреть сообщение
1) это любое целое отрицательное число типа int (про EOF ведь речь ?)
Совсем нет, обычно EOF = -1

Добавлено через 46 секунд
Цитата Сообщение от accept Посмотреть сообщение
2) это не символ, его нельзя проверять через эти функции
Еще как можно
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
22.08.2011, 11:36     помогите с islower() и setfill() #14
C89 (draft)
4.3 CHARACTER HANDLING <ctype.h>

The header <ctype.h> declares several functions useful for testing
and mapping characters./89/ In all cases the argument is an int , the
value of which shall be representable as an unsigned char or shall
equal the value of the macro EOF . If the argument has any other
value, the behavior is undefined.
только EOF она и может принять

Цитата Сообщение от Olga_
Совсем нет, обычно EOF = -1
обычно EOF определяется в stdio.h
Olga_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
22.08.2011, 11:40     помогите с islower() и setfill() #15
Цитата Сообщение от accept Посмотреть сообщение
C89 (draft)

только EOF она и может принять
Так об этом и речь. Мы же символ вводим с клавиатуры. Он либо EOF, либо из таблицы символов, больше вариантов то и нету. Поэтому приводить тип нет смысла

Добавлено через 49 секунд
Цитата Сообщение от accept Посмотреть сообщение
обычно EOF определяется в stdio.h
Так вот он обычно и есть -1
Просто лис
Путешественник вселенной
 Аватар для Просто лис
187 / 153 / 71
Регистрация: 01.03.2011
Сообщений: 664
22.08.2011, 12:25     помогите с islower() и setfill() #16
1)
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std;
 
int main()
{
    char a;
    cout<<"Vvedite bukvy\n";
    cin >> a;
   cout<<islower(a); 
   system("pause");
    return 0;
    }
2) ХЗ не доучил ещё
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
23.08.2011, 01:37     помогите с islower() и setfill() #17
Цитата Сообщение от Olga_
Так об этом и речь. Мы же символ вводим с клавиатуры. Он либо EOF, либо из таблицы символов, больше вариантов то и нету. Поэтому приводить тип нет смысла
Цитата Сообщение от Olga_
Так вот он обычно и есть -1
C89 (draft) 4.9 INPUT/OUTPUT <stdio.h>
EOF

which expands to a negative integral constant expression that is
returned by several functions to indicate end-of-file ,that is, no
more input from a stream;


Цитата Сообщение от Olga_
Мы же символ вводим с клавиатуры.
почему, мы вводим символ из потока ввода
пример
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
 
using namespace std;
 
int main()
{
    char c;
    
    cin >> c;
    cout << int(c) << endl;
    return 0;
}
Код
[guest@localhost tests]$ .iso++ t.cpp -o t
[guest@localhost tests]$ ./t
a
97
[guest@localhost tests]$ ./t
b
98
[guest@localhost tests]$ echo -e '\xff' | ./t
-1
[guest@localhost tests]$ echo -e '\xfe' | ./t
-2
[guest@localhost tests]$
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2016, 13:01     помогите с islower() и setfill()
Еще ссылки по теме:

C++ Std::setfill - зачем
Как с помощью setfill() заполнить определенную часть вывода C++

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

Или воспользуйтесь поиском по форуму:
klits
0 / 0 / 0
Регистрация: 10.11.2016
Сообщений: 7
12.11.2016, 13:01     помогите с islower() и setfill() #18
Просто это тернарная операция и ее используют, если код короткий и простой)))
Yandex
Объявления
12.11.2016, 13:01     помогите с islower() и setfill()
Ответ Создать тему
Опции темы

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