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

Нахождение и подсчет прописных букв - C++

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.76
vonorf
6 / 6 / 1
Регистрация: 05.10.2009
Сообщений: 31
05.10.2009, 18:49     Нахождение и подсчет прописных букв #1
Возникла проблема с подсчетом прописных букв, вот условие задачи:

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

В главной программе прочесть с клавиатуры две строки, содержащие текст, и вывести на экран количество общих прописных букв во введенных строках.


Мой код в VS 2008:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "stdafx.h"
#include <iostream>
#include <ctype.h>
#include <stdlib.h>
using namespace std;
int f1(const char*,const char*);
int main(int argc, char* argv[])
{
    char string1[20],string2[20]; 
    cout<<"vvedi dannie:";  
    cin>>string1>>string2;
    cout<<"kolichestvo obshchih propisnyh bukv: "<<f1<<"\n";
    return 0;
}
int f1(const char*s1,const char*s2)
{
    for (;*s1!='\0'&&*s2!='\0';s1++,s2++)
    return (isupper(*s1)+isupper(*s2));
}
В ответе программа выводит вроде бы шестнадцатеричный код, вот пример ее работы:

vvedi dannye:Hello World!
kolichestvo obshchih propisnyh bukv: 01091037

Ошибка в коде программы или надо дополнительно переводить числа в десятичный код? Если да, то как?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.10.2009, 18:49     Нахождение и подсчет прописных букв
Посмотрите здесь:

СИ: Вывод отдельно заглавных и прописных букв из строки C++
C++ Подсчитать слова, состоящие из латинских прописных букв.
поиск слов, состоящих из прописных букв C++
C++ Замена прописных букв строчными
C++ Удалить из строки слова, состоящие только из прописных букв
C++ Сколько слов, состоящих только из прописных букв, содержится в сообщении
C++ Подсчитать, сколько было введено: латинских прописных букв, кириллических прописных букв, цифр, знаков переноса, прочих символов.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
XuTPbIu_MuHTAu
Эксперт C++
 Аватар для XuTPbIu_MuHTAu
2219 / 734 / 10
Регистрация: 27.05.2008
Сообщений: 1,507
05.10.2009, 19:19     Нахождение и подсчет прописных букв #2
vonorf, ты распечатал адрес функции. Кстати,она еще и неправильно написана
vonorf
6 / 6 / 1
Регистрация: 05.10.2009
Сообщений: 31
05.10.2009, 19:23  [ТС]     Нахождение и подсчет прописных букв #3
Учу этот C++ меньше месяца, очень, очень, очень много еще не знаю. Можешь ли ты подсказать, как правильно написать?
XuTPbIu_MuHTAu
Эксперт C++
 Аватар для XuTPbIu_MuHTAu
2219 / 734 / 10
Регистрация: 27.05.2008
Сообщений: 1,507
05.10.2009, 19:25     Нахождение и подсчет прописных букв #4
Цитата Сообщение от vonorf Посмотреть сообщение
Учу этот C++ меньше месяца, очень, очень, очень много еще не знаю. Можешь ли ты подсказать, как правильно написать?
Могу.Функцию надо вызывать,чтобы получить ее результат.
vonorf
6 / 6 / 1
Регистрация: 05.10.2009
Сообщений: 31
05.10.2009, 19:26  [ТС]     Нахождение и подсчет прописных букв #5
А если показать на моем примере?
XuTPbIu_MuHTAu
Эксперт C++
 Аватар для XuTPbIu_MuHTAu
2219 / 734 / 10
Регистрация: 27.05.2008
Сообщений: 1,507
05.10.2009, 19:27     Нахождение и подсчет прописных букв #6
f1(string1,string2);
TanT
эволюционирую потихоньку
 Аватар для TanT
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
05.10.2009, 19:31     Нахождение и подсчет прописных букв #7
это тока самое начало. STL конечно ещё не известен. то есть нужен вариант с совсем простыми и всем известными элементами языка, я так понимаю
щас поем и напишу
если XuTPbIu_MuHTAu не опередит
vonorf
6 / 6 / 1
Регистрация: 05.10.2009
Сообщений: 31
05.10.2009, 19:39  [ТС]     Нахождение и подсчет прописных букв #8
Огромное спасибо за помощь, все получилось.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "stdafx.h"
#include <iostream>
#include <ctype.h>
#include <stdlib.h>
using namespace std;
int f1(const char*,const char*);
int main(int argc, char* argv[])
{
    char string1[20],string2[20]; 
    cout<<"vvedi dannie:";  
    cin>>string1>>string2;
    cout<<"kolichestvo obshchih propisnyh bukv: "<<f1(string1,string2)<<"\n";
    return 0;
}
int f1(const char*s1,const char*s2)
{
    for (;*s1!='\0'&&*s2!='\0';s1++,s2++)
    return (isupper(*s1)+isupper(*s2));
}
При написании Hello World выдает 2 прописные буквы, но если строчные буквы находятся в середине слова он их не воспринимает...
TanT
эволюционирую потихоньку
 Аватар для TanT
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
05.10.2009, 19:48     Нахождение и подсчет прописных букв #9
Цитата Сообщение от vonorf Посмотреть сообщение
int f1(const char*s1,const char*s2)
{
for (;*s1!='\0'&&*s2!='\0';s1++,s2++)
return (isupper(*s1)+isupper(*s2));
}[/CPP]

При написании Hello World выдает 2 прописные буквы, но если строчные буквы находятся в середине слова он их не воспринимает...
правильно, ты возвращаешь сумму значений двух результатов isupper(*s1) и isupper(*s2). где isupper(*s1) - возвращает один, если первый символ строки s1 вверхнем регистре, и ноль, если в нижнем
vonorf
6 / 6 / 1
Регистрация: 05.10.2009
Сообщений: 31
05.10.2009, 19:52  [ТС]     Нахождение и подсчет прописных букв #10
Понятно, а есть возможность сделать так, чтобы рассматривался не только первый символ?
XuTPbIu_MuHTAu
Эксперт C++
 Аватар для XuTPbIu_MuHTAu
2219 / 734 / 10
Регистрация: 27.05.2008
Сообщений: 1,507
05.10.2009, 19:56     Нахождение и подсчет прописных букв #11
Цитата Сообщение от vonorf Посмотреть сообщение
Понятно, а есть возможность сделать так, чтобы рассматривался не только первый символ?
Есть.Рассматривай каждый в цикле и только после этого делай return.

P.S, Tant, готовый код я все равно в эту тему не буду постить
TanT
эволюционирую потихоньку
 Аватар для TanT
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
05.10.2009, 20:10     Нахождение и подсчет прописных букв #12
Цитата Сообщение от XuTPbIu_MuHTAu Посмотреть сообщение
Есть.Рассматривай каждый в цикле и только после этого делай return.

P.S, Tant, готовый код я все равно в эту тему не буду постить
причина: воспитание или комерческая тайна?
P.S. вопрос вполне серьёзный.
XuTPbIu_MuHTAu
Эксперт C++
 Аватар для XuTPbIu_MuHTAu
2219 / 734 / 10
Регистрация: 27.05.2008
Сообщений: 1,507
05.10.2009, 20:17     Нахождение и подсчет прописных букв #13
TanT, Это скорее подход к проблеме. Можно помогать,а можно решить проблему вместо автора. Исходя из сегодняшнего расположения звезд я выбрал первый вариант
vonorf, return осуществляет выход из функции,поэтому цикла фактически не получается. Заведи внутри отдельную переменную,в которой посчитаешь количество,а потом ее верни ретёрном.
TanT
эволюционирую потихоньку
 Аватар для TanT
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
05.10.2009, 20:22     Нахождение и подсчет прописных букв #14
Цитата Сообщение от XuTPbIu_MuHTAu Посмотреть сообщение
TanT, Это скорее подход к проблеме. Можно помогать,а можно решить проблему вместо автора. Исходя из сегодняшнего расположения звезд я выбрал первый вариант
хитро, хотя глядя на ник, думаю не один я так думаю
vonorf
6 / 6 / 1
Регистрация: 05.10.2009
Сообщений: 31
05.10.2009, 20:29  [ТС]     Нахождение и подсчет прописных букв #15
C++
1
2
3
4
5
6
7
int f1(const char*s1,const char*s2)
{
    float S;
    for (;*s1!='\0'&&*s2!='\0';s1++,s2++)
    S=(isupper(*s1)+isupper(*s2));
    return S;
}
Если вы имели ввиду это, то он вообще ничего не считает
XuTPbIu_MuHTAu
Эксперт C++
 Аватар для XuTPbIu_MuHTAu
2219 / 734 / 10
Регистрация: 27.05.2008
Сообщений: 1,507
05.10.2009, 20:32     Нахождение и подсчет прописных букв #16
vonorf, интересно,какой логикой ты пользовался,
1. Объявляя S как float.Думаешь,там может получиться дробное число?
2. не присваивая S никакого начального значения? Он считает начиная непонятно с какого числа.
3. ничего не суммируя,а заново перезаписывая что-то в S?
TanT
эволюционирую потихоньку
 Аватар для TanT
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
05.10.2009, 20:33     Нахождение и подсчет прописных букв #17
покрайней мере так
C++
1
2
3
4
5
6
7
int f1(const char*s1,const char*s2)
{
        float S=0; 
        for (;*s1!='\0'&&*s2!='\0';s1++,s2++)
            S+=isupper(*s1)+isupper(*s2);
        return S;
}
хотя достаточно int
vonorf
6 / 6 / 1
Регистрация: 05.10.2009
Сообщений: 31
05.10.2009, 20:34  [ТС]     Нахождение и подсчет прописных букв #18
а такой вариант верен?

C++
1
2
3
4
5
6
7
int f1(const char*s1,const char*s2)
{
    int S;
    for (S=0;*s1!='\0'&&*s2!='\0';s1++,s2++)
    S=(isupper(*s1)+isupper(*s2));
    return S;
}
TanT
эволюционирую потихоньку
 Аватар для TanT
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
05.10.2009, 20:37     Нахождение и подсчет прописных букв #19
нет, S - неопределено, точнее не обнулено
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.10.2009, 20:39     Нахождение и подсчет прописных букв
Еще ссылки по теме:

C++ Буллеан (степень) множества латинских прописных букв
Перевод букв из прописных в строчные C++
Найти количество прописных букв в строке C++
Количество прописных букв в строке C++
C++ Преобразование всех строчных букв в прописные, а прописных — в строчные

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

Или воспользуйтесь поиском по форуму:
vonorf
6 / 6 / 1
Регистрация: 05.10.2009
Сообщений: 31
05.10.2009, 20:39  [ТС]     Нахождение и подсчет прописных букв #20
TanT, XuTPbIu_MuHTAu, большое вам спасибо. Все понял, все работает.
Yandex
Объявления
05.10.2009, 20:39     Нахождение и подсчет прописных букв
Ответ Создать тему

Метки
Строки, функции
Опции темы

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