Компьютерный форум NoWa.cc

Компьютерный форум NoWa.cc (https://nowa.cc/index.php)
-   Visual C++ / С/C++ (https://nowa.cc/forumdisplay.php?f=302)
-   -   хелп - как сосчитать сколько заглавных букв в предложении? (https://nowa.cc/showthread.php?t=152636)

XXXAlex 20.03.2008 11:16

хелп - как сосчитать сколько заглавных букв в предложении?
 
Помогите с кодом плиз на си++ - я еще новичок не смог везде разобраться.

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

как это можно сделать? Пример если можно! :sos:

спасибо!

zss 21.03.2008 07:57

Ответ: хелп - как сосчитать сколько заглавных букв в предложении?
 
Код:

char text[]="Aaaaaaaa Bbbbbbbb Ccccccc";
int n=0;
for(int i=0;i<strlen(text);i++)
  if(text[i]>='A' && text[i]<='Z')
          n++;


flipBoy 31.03.2008 22:50

Ответ: хелп - как сосчитать сколько заглавных букв в предложении?
 
В предыдущем примере испльзуется функция strlen столько раз сколько букв в строке, а это стоит времени, достаточно использовать тот факт, что при такой инициализации строки, на конце ставиться знак о коде 0.
char tab[]="AaAaA bBbbbbbb Cccccc";
char *point=tab;
int count=0; // счётчик
while(*point!=0){
if ( (*(point)>='A') && (*(point)<='Z')){
++count;
}
++point;
}

ev_Genius 02.04.2008 18:50

Ответ: хелп - как сосчитать сколько заглавных букв в предложении?
 
И лаконичный код:

char tab[] = "AaAaA bBbbbbbb Cccccc";
int count = 0;
for (char *point = tab; *point; ++point)
{
if ( ((*point) >= 'A') && ((*point) <= 'Z'))
{
++count;
}
}

seimur 21.04.2008 18:45

Ответ: хелп - как сосчитать сколько заглавных букв в предложении?
 
Код:

#include <stdio.h>
#include <ctype.h>

void main()
{
        char Tab[] = "AaAaA bBbbbbbb Cccccc";

        int ucl = 0;
        int idx;

        for (idx = 0; Tab[idx]; ++idx)
        {
                if (isalpha(Tab[idx]) && toupper(Tab[idx]) == Tab[idx])
                        ucl++;
        }

        printf("Found %d upper case letters.\n", ucl);
}

Избегайте таких условий if(text[i]>='A' && text[i]<='Z')
это не везде будет работать!

seimur 24.04.2008 09:17

Ответ: хелп - как сосчитать сколько заглавных букв в предложении?
 
Вот ещё более простой вариант:
Код:

#include <stdio.h>
#include <ctype.h>

void main()
{
        char Tab[] = "AaAaA bBbbbbbb Cccccc";

        int ucl = 0;
        int idx;

        for (idx = 0; Tab[idx]; ++idx)
        {
                if ( isupper(Tab[idx]) )
                        ucl++;
        }

        printf("Found %d upper case letters.\n", ucl);
}


picman 06.05.2008 16:25

Ответ: хелп - как сосчитать сколько заглавных букв в предложении?
 
Цитата:

Сообщение от ev_Genius (Сообщение 1574234)
И лаконичный код:

char tab[] = "AaAaA bBbbbbbb Cccccc";
int count = 0;
for (char *point = tab; *point; ++point)
{
if ( ((*point) >= 'A') && ((*point) <= 'Z'))
{
++count;
}
}

А если вводится текст на русском?

seimur 06.05.2008 18:03

Ответ: хелп - как сосчитать сколько заглавных букв в предложении?
 
Хороший вопрос.. Но что то я не припомню что бы в домашних работах по программированию просили отнестись к юникоду тем более для начинающих, а вы?

picman 06.05.2008 18:40

Ответ: хелп - как сосчитать сколько заглавных букв в предложении?
 
Цитата:

Сообщение от seimur (Сообщение 1648188)
Хороший вопрос.. Но что то я не припомню что бы в домашних работах по программированию просили отнестись к юникоду тем более для начинающих, а вы?

Полностью согласен! Но если вместо строки: if(text[i]>='A' && text[i]<='Z') начинающий напишет: if((text[i]>='A' && text[i]<='Z')||(text[i]>='А' && text[i]<='Я')) - это ему зачтется. Разработка алгоритма - это искуство, а кодирование - ремесло.

seimur 06.05.2008 18:49

Ответ: хелп - как сосчитать сколько заглавных букв в предложении?
 
Я не совсем понимаю что вы имеете ввиду "зачтёться" но эта проверка на определённых машинах не верна.. для этого есть функции типа isalpha и скорее всего я думаю есть их аналоги для юникода..

picman 06.05.2008 20:33

Ответ: хелп - как сосчитать сколько заглавных букв в предложении?
 
Цитата:

Сообщение от seimur (Сообщение 1648282)
Я не совсем понимаю что вы имеете ввиду "зачтёться"

"Зачтется" - это значит преподаватель поставит более высокую оценку за решение с дополнительной проверкой, но это не значит, что он не оценит более оптимальный код.

Цитата:

Сообщение от seimur (Сообщение 1648282)
но эта проверка на определённых машинах не верна

А вот здесь по подробнее! Например!:)
Строка: if((text[i]>='A' && text[i]<='Z')||(text[i]>='А' && text[i]<='Я')) "прокатит" даже для 8-ми разраядных микроконтроллеров с объемом памяти команнд 2 кбайта.

seimur 06.05.2008 21:23

Ответ: хелп - как сосчитать сколько заглавных букв в предложении?
 
Такие конструкции, как: if (('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z')) не эффективны, не говоря уже о нудности их написания и большой вероятности ошибок (На машинах с символьным набором EBCDIC через это сравнение пройдут и не алфовитные символы).

ungdn 13.05.2008 10:25

Ответ: хелп - как сосчитать сколько заглавных букв в предложении?
 
Предлагаю заменить знаки ">=" и "<=" на знаки "<" и ">", с замей букв до и после. Конечно более непонятно. Но эти операции по тактам процессора выполняются быстрее.

mirag_ga 15.10.2008 15:38

Re: хелп - как сосчитать сколько заглавных букв в предложении?
 
Перевести все слова в строчные буквы и посчитать количество несовпадений.

zss 16.10.2008 20:53

Re: хелп - как сосчитать сколько заглавных букв в предложении?
 
Цитата:

Сообщение от mirag_ga (Сообщение 1946222)
Перевести все слова в строчные буквы...

А как Вы это собираетесь сделать?


Текущее время: 07:50. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2026, vBulletin Solutions, Inc. Перевод: zCarot
Copyright ©2004 - 2025 NoWa.cc

Время генерации страницы 0.02886 секунды с 9 запросами