Код по първа задача
Здравейте,
Кодът ми работи за текстове на латиница.
Например за ATb3 ще покаже две главни букви една малка и един друг символ. Тоест тройката
При кирилица не отчита малки главни, всичко го брои като други символи
При вас как е кирилицата ?
#include <iostream>
#include <map>
#include <string>
#include <ctype.h>
int main()
{
std::string UserInput = "";
std::cout << "Please, input string >>";
std::getline(std::cin,UserInput);
std::cout << "You Enter:" << UserInput;
std::map<std::string,unsigned int> Counters;
Counters["upper"] = 0;
Counters["lower"] = 0;
Counters["other"] = 0;
unsigned int len = UserInput.length();
for(unsigned int i=0;i<len;i++)
{
if ( islower(UserInput[i]) )
{
Counters["lower"]++;
}
else if ( isupper(UserInput[i]) )
{
Counters["upper"]++;
}
else
{
Counters["other"]++;
}
}
std::cout << std::endl << "Uppers: " << Counters["upper"] << std::endl;
std::cout << std::endl << "Lowers: " << Counters["lower"] << std::endl;
std::cout << std::endl << "Other:" << Counters["other"] << std::endl;
return 0;
}
Неочаквано ми се скапа виртуалката.
Ще тествам след преинсталация.
Изход програма:
Версия компилатор:
На windows 7 64 бита
Просто функциите islower isupper не работят с кирлица
Те трябва да се променят или да са други, че дастане
При такова доказателство остава да кажа, че явно, аз не изпълнявам примера по някаква причина коректно и нещо друго в средата влияе при мен.
И че примерът си работи :)
Това само показва, че функциите isupper и islower работят все пак и и с кирилица. А задачата от домашното си е правилно решена. Просто има някакъв проблем с environment-a.
В крайна сметка под Windows за non-Unicode programs си избрах Bulgarian locale и всичко заспа.
Да настройката ми за non-Unicode си е същата.