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

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

22.08.2011, 01:24. Просмотров 11735. Ответов 17
Метки нет (Все метки)

1)Библиотечная функция islower() принимает в качестве аргумента один символ (букву) и возвращает ненулевое целое значение в том случае, если буква является строчной, и нулевое, если буква является заглавной.Описание функции хранится в файле CTYPE.H.Напишите программу, которая принимает букву от пользователя, а затем выводит нулевое или ненулевое значение в зависимости он того, является буква строчной или нет.

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

Из этих текстов я не понял как ими пользоваться.
Подскажите пожалуйста(Желательно наглядный простенький пример).Заранее спасибо.

http://www.cyberforum.ru/cpp-beginners/thread1116816.html

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

setfill на одну строку
Добрый день, подскажите пожалуйста, как сделать, что б setfill заполнял пустые...

Функция islower
#include <iostream> // для оператора cout #include <cctype> // для функции...

Функция islower()
Функция islower() возвращает 2 при любой вводимой строчной букве,так и должно...

Функция islower()
Подскажите пожалуйста пример работы этой функции , в программе Visual Studio...

Ошибка с islower
void func(char a) { char *b; for(int i = 0; i<20; i++) { b=&a;...

17
asics
Freelance
Эксперт С++
2854 / 1789 / 355
Регистрация: 09.09.2010
Сообщений: 3,841
22.08.2011, 01:27 #2
Цитата Сообщение от AmiGOmen Посмотреть сообщение
Из этих текстов я не понял как ими пользоваться.
Подскажите пожалуйста(Желательно наглядный простенький пример).
Тут поищи. И да, гугл еще никто не отменял.
0
-=ЮрА=-
Заблокирован
Автор FAQ
22.08.2011, 09:36 #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;
}
1
Миниатюры
помогите с islower() и setfill()  
Olga_
842 / 184 / 18
Регистрация: 01.08.2011
Сообщений: 502
22.08.2011, 10:11 #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;
}
0
-=ЮрА=-
Заблокирован
Автор FAQ
22.08.2011, 10:21 #5
Olga_, чем конструкция (выражение) ? (если оно истенно) : (если оно не истенно) отличается от if()else которую выше привёл (? : - тотже оператор ветвления, что и if)
0
Olga_
842 / 184 / 18
Регистрация: 01.08.2011
Сообщений: 502
22.08.2011, 10:26 #6
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Olga_, чем конструкция (выражение) ? (если оно истенно) : (если оно не истенно) отличается от if()else которую выше привёл (? : - тотже оператор ветвления, что и if)
-=ЮрА=-, все у вас хорошо, просто написано для разнообразия
0
diagon
Higher
1937 / 1203 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
22.08.2011, 10:38 #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 - ширина вывода.
2
accept
4833 / 3254 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
22.08.2011, 11:13 #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;
}
0
Olga_
842 / 184 / 18
Регистрация: 01.08.2011
Сообщений: 502
22.08.2011, 11:21 #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 принимает
0
accept
4833 / 3254 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
22.08.2011, 11:26 #10
Цитата Сообщение от Olga_
так как islower() тип int принимает
char может быть знаковым
символ может находиться за пределами 127 бит
тогда будет неявное приведение отрицательного числа к типу int
там, наверное, нужен static_cast

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

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

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

Добавлено через 46 секунд
Цитата Сообщение от accept Посмотреть сообщение
2) это не символ, его нельзя проверять через эти функции
Еще как можно
0
accept
4833 / 3254 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
22.08.2011, 11:36 #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
0
Olga_
842 / 184 / 18
Регистрация: 01.08.2011
Сообщений: 502
22.08.2011, 11:40 #15
Цитата Сообщение от accept Посмотреть сообщение
C89 (draft)

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

Добавлено через 49 секунд
Цитата Сообщение от accept Посмотреть сообщение
обычно EOF определяется в stdio.h
Так вот он обычно и есть -1
0
Просто лис
Путешественник вселенной
187 / 154 / 119
Регистрация: 01.03.2011
Сообщений: 664
22.08.2011, 12:25 #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) ХЗ не доучил ещё
1
accept
4833 / 3254 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
23.08.2011, 01:37 #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]$
0
klits
0 / 0 / 2
Регистрация: 10.11.2016
Сообщений: 7
12.11.2016, 13:01 #18
Просто это тернарная операция и ее используют, если код короткий и простой)))
0
12.11.2016, 13:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2016, 13:01
Привет! Вот еще темы с решениями:

Манипуляторы dec hex setfill setw
что такое операторы dec hex setfill sew м как они работают?

Функции tolower,islower,isupper
Если кто знаком с функциями tolower,islower,isupper, дайте пожалуйста с каждой...

Out of range при использовании islower, isupper
Ошибка вылезает при использовании islower, isupper. В первом варианте кода...

Как с помощью setfill() заполнить определенную часть вывода
Ребят нужно что бы setfill заполнял только на определенные участки, даже не на...


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

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

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