Модераторы: Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] Сравнение строчных и заглавных букв. 
:(
    Опции темы
Baltazar5000
Дата 23.3.2007, 07:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 6.12.2006

Репутация: нет
Всего: нет



Мне дан текст - "Sea War The Battles - Красивая трёхмерная версия игры."
Надо инициализировать его строковым массивом.
Сравнить английские заглавные и строчные буквы, каких и на сколько больше, всё это вывести на экран.
Заранее большое спасибо.
PM MAIL   Вверх
agl
Дата 23.3.2007, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 25.6.2006

Репутация: 3
Всего: 3



#include <stdio.h>
#include <ctype.h>
Код

    int amountUpperCh[26] = {0};
    int amountLowerCh[26] = {0};
    char text[] = "abcdABCDaabbccdd1234POkl";
    for(int i = 0; text[i]; i++)
        if(isalpha(text[i]))
        {
    
            if(islower(text[i])) 
                amountLowerCh[text[i] - 'a']++;
        
            else        
                amountUpperCh[text[i] - 'A']++;
        
        }

    for(int j = 0; j < 26; j++)
        printf("%c = %d      %c = %d\n", j+'A', amountUpperCh[j], j+'a', amountLowerCh[j]);


Это сообщение отредактировал(а) agl - 23.3.2007, 11:52
PM   Вверх
Rockie
Дата 23.3.2007, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 23.4.2006

Репутация: 13
Всего: 31



agl, 
Цитата(Baltazar5000 @  23.3.2007,  07:20 Найти цитируемый пост)
"Sea War The Battles - Красивая трёхмерная версия игры."

полагаю там не зря еще русские буквы добавили. Твой вариант (не проверял) сработает только для английского предложения.




--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
agl
Дата 23.3.2007, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 25.6.2006

Репутация: 3
Всего: 3



Цитата(Baltazar5000)
Сравнить английские заглавные и строчные буквы, каких и на сколько больше, всё это вывести на экран


Что автор написал, то и получил, а его текст мимо глаз пролетел))
PM   Вверх
Dov
Дата 24.3.2007, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 50
Всего: 88



Нет, Rockie, сработает нормально. Потому как isalpha() русские буквы за буквы не считает.  smile 
Другое дело, что можно перед выводом какой-нить if добавить, что бы "лишние"  символы не выводились. А так всё нормально.  smile


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Baltazar5000
Дата 27.3.2007, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 6.12.2006

Репутация: нет
Всего: нет



Спасибо, agl, но  amountLowerCh и amountUpperCh мы неизучали. Есть ли другие варианты?
PM MAIL   Вверх
zkv
Дата 27.3.2007, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 21
Всего: 92



Цитата(Baltazar5000 @  27.3.2007,  20:50 Найти цитируемый пост)
но  amountLowerCh и amountUpperCh мы неизучали

какой ужас! Немедленно пожалуйтесь преподавателю, такие вещи надо изучать в самую первую очередь!

Это была шутка smile

Это сообщение отредактировал(а) zkv - 27.3.2007, 22:57
PM MAIL   Вверх
Dov
Дата 27.3.2007, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 50
Всего: 88



Baltazar5000, вот видишь. Всё стало на свои места. Потому как amountLowerCh и amountUpperCh это обычные массивы, элементами которых являются целые числа. agl просто решил хранить в них количество больших и маленьких букв. Ну и что здесь такого? Нормальное решение. А если ты хочешь какое-то специфическое решение, то скажи, что имено ты хочешь. Какие есть ограничения или пожелания. 
           Мы, ведь, чужих мыслей читать не умеем.  smile 


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Baltazar5000
Дата 28.3.2007, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 6.12.2006

Репутация: нет
Всего: нет



Спасибо понял, а что делать если я инициализарую так: str[M][N]="abcdEFgHjsdРУссКИЙ","АнглийСкий dfkDFgfk"([M][N]- это количество строк и столбцов), мне ошибку выдаёт...
PM MAIL   Вверх
apook
Дата 28.3.2007, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 794
Регистрация: 12.7.2006

Репутация: 10
Всего: 23



Цитата

ошибку выдаёт

какую?
Понял :
Код

char str[ ][ M ]={ "fdfdfdfdf", "gfgfgfgФвава, "и т.д"}


Это сообщение отредактировал(а) apook - 28.3.2007, 18:02


--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
Rockie
Дата 28.3.2007, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 23.4.2006

Репутация: 13
Всего: 31



Baltazar5000, например так
Код

#include "stdafx.h"
#include<iostream>

using namespace std;

int main()
{
    char str[4][7] = {"[0][0]", "[0][1]", "[1][1]", "[1][2]"};

    for(int i=0;i<4;i++)
      cout<<str[i]<<'\n';

    return 0;
}

Цитата(Dov @  24.3.2007,  10:33 Найти цитируемый пост)
Другое дело, что можно перед выводом какой-нить if добавить, что бы "лишние"  символы не выводились.

дожили, русские символы уже "лишние" smile 



Это сообщение отредактировал(а) Rockie - 28.3.2007, 18:21


--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
Dov
Дата 28.3.2007, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 50
Всего: 88



Цитата(Rockie @  28.3.2007,  17:19 Найти цитируемый пост)
дожили, русские символы уже "лишние" 

Rockie, гы  smile , я имел ввиду символы, которые не участвуют в процессе. 
К тому же я ошибся, ф-ция isalpha() русские символы учитывает. smile  Поэтому прийдётся извращаться.   smile 
Код
#include <iostream.h>
#include <ctype.h>

#define M 2
#define N 80

int main()
{
    char text[][N] = {"abSDHjsdРУссКИЙf", "QWYАнглийСкийdfkDFk"};
    char upper[N]  = "";
    char lower[N]  = "";
    int  up = 0;
    int  lo = 0;

    for(int i = 0; i < M; i++)
        for(int j = 0; text[i][j] != '\0'; j++)
            if(text[i][j] >= 'a' && text[i][j] <= 'z' || text[i][j] >= 'A' && text[i][j] <= 'Z') 
                islower(text[i][j]) ? lower[lo++] = text[i][j] : upper[up++] = text[i][j];    

    // вывод пишешь сам, а это в качестве примера
    cout << lower << '\t' << lo << endl;
    cout << upper << '\t' << up << endl;    
    if(lo > up)
        cout << "маленьких больше, чем больших на " << lo - up;
    else if(up > lo)
        cout << "больших больше, чем маленьких на " << up - lo;
    else
        cout << "маленьких и больших поровну ";
    cout << endl;
    
    return 0;    
}



--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Baltazar5000
Дата 3.4.2007, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 6.12.2006

Репутация: нет
Всего: нет



Огромнейшее спасибо, Dov. Но тему я ещё не закрываю.....
PM MAIL   Вверх
Baltazar5000
Дата 4.4.2007, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 6.12.2006

Репутация: нет
Всего: нет



Как записать результат программки от Dov в файл(подключить функцию записи из отдельного файла)? И ещё как вывести на экран весь текст, у меня он выводит текст и на заднем фоне лишние символы. Заранее благадарю.

Это сообщение отредактировал(а) Baltazar5000 - 4.4.2007, 17:52
PM MAIL   Вверх
Dov
Дата 4.4.2007, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 50
Всего: 88



Baltazar5000, приведи пример выходного файла, что ты там хочешь увидеть?

Цитата(Baltazar5000 @  4.4.2007,  17:50 Найти цитируемый пост)
 И ещё как вывести на экран весь текст, у меня он выводит текст и на заднем фоне лишние символы.
 
Что такое 'на заднем фоне' ? Покажи.  smile  

Baltazar5000, ты пойми, чем больше покажешь, тем быстрее получишь помощь.  smile 


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0620 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.