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

С++ для начинающих

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

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

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

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

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

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

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

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

Функция islower() - C++
Функция islower() возвращает 2 при любой вводимой строчной букве,так и должно быть?Я знаю,что функция выводит ненулевое значение,если буква...

Функция islower - C++
#include <iostream> // для оператора cout #include <cctype> // для функции islower using namespace std; int main(){ char c; ...

setfill на одну строку - C++
Добрый день, подскажите пожалуйста, как сделать, что б setfill заполнял пустые места только у одного, определенного, поля, а не у всех?

Std::setfill - зачем - C++
std::setfill - расскажите что означает этот код и как его приминяти

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
asics
Freelance
Эксперт С++
2847 / 1784 / 144
Регистрация: 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_
841 / 183 / 16
Регистрация: 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_
841 / 183 / 16
Регистрация: 01.08.2011
Сообщений: 502
22.08.2011, 10:26 #6
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Olga_, чем конструкция (выражение) ? (если оно истенно) : (если оно не истенно) отличается от if()else которую выше привёл (? : - тотже оператор ветвления, что и if)
-=ЮрА=-, все у вас хорошо, просто написано для разнообразия
0
diagon
Higher
1929 / 1195 / 49
Регистрация: 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
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
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_
841 / 183 / 16
Регистрация: 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
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
22.08.2011, 11:26 #10
Цитата Сообщение от Olga_
так как islower() тип int принимает
char может быть знаковым
символ может находиться за пределами 127 бит
тогда будет неявное приведение отрицательного числа к типу int
там, наверное, нужен static_cast

Цитата Сообщение от Olga_
Тут еще от задания зависит, может пробелы, '\t', '\n' тоже считаются, тогда
Цитата Сообщение от AmiGOmen
Напишите программу, которая принимает букву от пользователя
нужно isalpha()
0
Olga_
841 / 183 / 16
Регистрация: 01.08.2011
Сообщений: 502
22.08.2011, 11:26 #11
Цитата Сообщение от accept Посмотреть сообщение
char может быть знаковым
символ может находиться за пределами 127 бит
прототип функции islower() такой:
int islower(int)
Она может принимать и -1 - признак конца файла, так что ничего страшного
0
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
22.08.2011, 11:31 #12
Цитата Сообщение от Olga_
Она может принимать и -1 - признак конца файла, так что ничего страшного
это откуда следует, что -1 не вызовет неопределённого поведения ?
признак конца файла:
1) это любое целое отрицательное число типа int (про EOF ведь речь ?)
2) это не символ, его нельзя проверять через эти функции
0
Olga_
841 / 183 / 16
Регистрация: 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
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
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_
841 / 183 / 16
Регистрация: 01.08.2011
Сообщений: 502
22.08.2011, 11:40 #15
Цитата Сообщение от accept Посмотреть сообщение
C89 (draft)

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

Добавлено через 49 секунд
Цитата Сообщение от accept Посмотреть сообщение
обычно EOF определяется в stdio.h
Так вот он обычно и есть -1
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.08.2011, 11:40
Привет! Вот еще темы с ответами:

Функции tolower,islower,isupper - C++
Если кто знаком с функциями tolower,islower,isupper, дайте пожалуйста с каждой примитивный пример с маленьким коментом, как их...

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

Out of range при использовании islower, isupper - C++
Ошибка вылезает при использовании islower, isupper. В первом варианте кода использовал такой вариант: bool pre_oxide_1,pre_oxide_2; ...

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
22.08.2011, 11:40
Ответ Создать тему
Опции темы

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