7 / 7 / 0
Регистрация: 05.10.2009
Сообщений: 31
1

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

05.10.2009, 18:49. Показов 3694. Ответов 21

Author24 — интернет-сервис помощи студентам
Возникла проблема с подсчетом прописных букв, вот условие задачи:

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

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


Мой код в 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

Ошибка в коде программы или надо дополнительно переводить числа в десятичный код? Если да, то как?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.10.2009, 18:49
Ответы с готовыми решениями:

Подсчитать, сколько было введено: латинских прописных букв, кириллических прописных букв, цифр, знаков переноса, прочих символов.
Помогите, пожалуйста, написать программу :scratch: Подсчитать, сколько было введено: латинских...

Подсчет прописных и строчных букв
Суть программы такова, что она считает прописные, строчные буквы, а так же говорит каким является...

Подсчет количества прописных и строчных букв
Пусть дан текст, состоящий из строчных и прописных латинских букв и цифр. Определить, каких букв -...

Подсчёт количества прописных и строчных букв и преобразование строки
Надо подсчитать в строке количество прописных и строчных букв и преобразовать строку соответственно...

21
Эксперт С++
2255 / 770 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
05.10.2009, 19:19 2
vonorf, ты распечатал адрес функции. Кстати,она еще и неправильно написана
0
7 / 7 / 0
Регистрация: 05.10.2009
Сообщений: 31
05.10.2009, 19:23  [ТС] 3
Учу этот C++ меньше месяца, очень, очень, очень много еще не знаю. Можешь ли ты подсказать, как правильно написать?
0
Эксперт С++
2255 / 770 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
05.10.2009, 19:25 4
Цитата Сообщение от vonorf Посмотреть сообщение
Учу этот C++ меньше месяца, очень, очень, очень много еще не знаю. Можешь ли ты подсказать, как правильно написать?
Могу.Функцию надо вызывать,чтобы получить ее результат.
0
7 / 7 / 0
Регистрация: 05.10.2009
Сообщений: 31
05.10.2009, 19:26  [ТС] 5
А если показать на моем примере?
0
Эксперт С++
2255 / 770 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
05.10.2009, 19:27 6
f1(string1,string2);
1
эволюционирую потихоньку
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
05.10.2009, 19:31 7
это тока самое начало. STL конечно ещё не известен. то есть нужен вариант с совсем простыми и всем известными элементами языка, я так понимаю
щас поем и напишу
если XuTPbIu_MuHTAu не опередит
0
7 / 7 / 0
Регистрация: 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 прописные буквы, но если строчные буквы находятся в середине слова он их не воспринимает...
0
эволюционирую потихоньку
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
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 вверхнем регистре, и ноль, если в нижнем
0
7 / 7 / 0
Регистрация: 05.10.2009
Сообщений: 31
05.10.2009, 19:52  [ТС] 10
Понятно, а есть возможность сделать так, чтобы рассматривался не только первый символ?
0
Эксперт С++
2255 / 770 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
05.10.2009, 19:56 11
Цитата Сообщение от vonorf Посмотреть сообщение
Понятно, а есть возможность сделать так, чтобы рассматривался не только первый символ?
Есть.Рассматривай каждый в цикле и только после этого делай return.

P.S, Tant, готовый код я все равно в эту тему не буду постить
0
эволюционирую потихоньку
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
05.10.2009, 20:10 12
Цитата Сообщение от XuTPbIu_MuHTAu Посмотреть сообщение
Есть.Рассматривай каждый в цикле и только после этого делай return.

P.S, Tant, готовый код я все равно в эту тему не буду постить
причина: воспитание или комерческая тайна?
P.S. вопрос вполне серьёзный.
0
Эксперт С++
2255 / 770 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
05.10.2009, 20:17 13
TanT, Это скорее подход к проблеме. Можно помогать,а можно решить проблему вместо автора. Исходя из сегодняшнего расположения звезд я выбрал первый вариант
vonorf, return осуществляет выход из функции,поэтому цикла фактически не получается. Заведи внутри отдельную переменную,в которой посчитаешь количество,а потом ее верни ретёрном.
0
эволюционирую потихоньку
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
05.10.2009, 20:22 14
Цитата Сообщение от XuTPbIu_MuHTAu Посмотреть сообщение
TanT, Это скорее подход к проблеме. Можно помогать,а можно решить проблему вместо автора. Исходя из сегодняшнего расположения звезд я выбрал первый вариант
хитро, хотя глядя на ник, думаю не один я так думаю
0
7 / 7 / 0
Регистрация: 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;
}
Если вы имели ввиду это, то он вообще ничего не считает
0
Эксперт С++
2255 / 770 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
05.10.2009, 20:32 16
vonorf, интересно,какой логикой ты пользовался,
1. Объявляя S как float.Думаешь,там может получиться дробное число?
2. не присваивая S никакого начального значения? Он считает начиная непонятно с какого числа.
3. ничего не суммируя,а заново перезаписывая что-то в S?
1
эволюционирую потихоньку
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
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
1
7 / 7 / 0
Регистрация: 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;
}
0
эволюционирую потихоньку
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
05.10.2009, 20:37 19
нет, S - неопределено, точнее не обнулено
1
7 / 7 / 0
Регистрация: 05.10.2009
Сообщений: 31
05.10.2009, 20:39  [ТС] 20
TanT, XuTPbIu_MuHTAu, большое вам спасибо. Все понял, все работает.
0
05.10.2009, 20:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.10.2009, 20:39
Помогаю со студенческими работами здесь

Память видеобуфера, подсчет количества заглавных и прописных букв
Определить каких символов на экране больше: заглавных букв латинского алфавита, или прописных букв...

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

Подсчет и нахождение нужных букв
Есть еще два задания которых нужно сделать: 1. напишите логическую программу подсчета согласных...

В введенном тексте подсчитать количество цифр, всех букв, прописных букв, заглавных букв
Помогите,пожалуйста программа на QBasic В введенном тексте подсчитать количество цифр,всех букв,...

Определите, каких букв (строчных или прописных ) в нем больше: если больше прописных, чем строчных=> все буквы
Определите, каких букв (строчных или прописных ) в нем больше: если больше прописных, чем...

Подсчитать количество содержащихся в ней цифр, прописных букв и строчных букв.
Дана строка. Подсчитать количество содержащихся в ней цифр, прописных букв и строчных букв.


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru