Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2010, 21:17   #1
Mister_Originalnos
Пользователь
 
Аватар для Mister_Originalnos
 
Регистрация: 10.10.2010
Сообщений: 15
По умолчанию "регистровые" различия

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

Код:
#include <iostream>
#include <conio.h>
#include <cstring>
#include <cstdio>
using namespace std;

int main()
{
 char str1[80],str2[80];
 int i,j;

 cout<<"Vvedite stroku 1 (79 simvolov): ";
 gets(str1);

 cout<<"Vvedite stroku 2 (79 simvolov): ";
 gets(str2);

 for(i=0;str1[i];i++) {
  if(isupper(str1[i])) tolower(str1[i]);
 }

 for(j=0;str2[j];j++) {
  if(isupper(str2[j])) tolower(str2[j]);
 }

 if(!strcmp(str1,str2)){
  cout<<"nakonec-to vy nauchilis' pisat'-stroki identichny";
 }
 else
 {
  cout<<"stroki leksikograficheski ne ravny";
 }

 getch();

 return 0;

}
Не работает при регистровых различиях. Почему?
Любите друг друга. Точна! Точна!

Последний раз редактировалось ACE Valery; 09.12.2010 в 23:53.
Mister_Originalnos вне форума Ответить с цитированием
Старый 09.12.2010, 21:26   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

А если так:
Код:
if(isupper(str1[i])) str[i] = tolower(str1[i]);
pu4koff вне форума Ответить с цитированием
Старый 09.12.2010, 21:26   #3
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Код:
#include <iostream>
#include <conio.h>
#include <cstring>
#include <cstdio>
using namespace std;

int main()
{
char str1[80],str2[80];
int i,j;

cout<<"Vvedite stroku 1 (80 simvolov): ";
gets(str1);

cout<<"Vvedite stroku 2 (80 simvolov): ";
gets(str2);

for(i=0;str1[i];i++) {
if(isupper(str1[i])) str1[i] = tolower(str1[i]);
}

for(j=0;str2[j];j++) {
if(isupper(str2[j])) str2[j] = tolower(str2[j]);
}

if(!strcmp(str1,str2)){
cout<<"nakonec-to vy nauchilis' pisat'-stroki identichny";
}
else
{
cout<<"stroki leksikograficheski ne ravny";
}

getch();

return 0;

}
Думаю, комментариев не требуется.
Как-то вы тут все усложнили, проще так:
Код:
int strcmpl(const char *str1, const char *str2)
{
	while(*str1 && *str2)
	{
		if(tolower(*str1) != tolower(*str2))
			break;
		str1++;
		str2++;
	}
	return tolower(*str1) - tolower(*str2);
}
Функция возвращает отрицательное число при str1 < str2, ноль при str1 == str2 и положительное число при str1 > str2.
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Старый 09.12.2010, 22:10   #4
Mister_Originalnos
Пользователь
 
Аватар для Mister_Originalnos
 
Регистрация: 10.10.2010
Сообщений: 15
По умолчанию

Напишите программу, которая подсчитывает и отображает на экране коли-
чество прописных букв в строке.

Код:
#include <iostream>
#include <conio.h>
#include <cstring>
#include <cstdio>
using namespace std;

int main()
{

 char str[80];
 int i,j;

 cout<<"Vvedite stroku: ";
 gets(str);
 cout<<'\n';

 j=0;

 for(i=0;str[i];i++) {
  if(isupper(str[i])) j++;
 }

 cout<<"kolichestvo propisnyh bukv v stroke "<<i;

 getch();

 return 0;

}
Опять двадцать пять, неправильно что-то)
Любите друг друга. Точна! Точна!

Последний раз редактировалось ACE Valery; 09.12.2010 в 23:53.
Mister_Originalnos вне форума Ответить с цитированием
Старый 09.12.2010, 22:12   #5
Mister_Originalnos
Пользователь
 
Аватар для Mister_Originalnos
 
Регистрация: 10.10.2010
Сообщений: 15
По умолчанию

Тьфу там j надо брр...

Спасибо за подсказки.
Любите друг друга. Точна! Точна!
Mister_Originalnos вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обойти "преобразование типа из "string" в "float" невозможно" lexluter1988 Помощь студентам 1 07.08.2010 12:23
"ОКРВВЕРХ", "ОКР", "ЕСЛИ". Как бы их связать. Каравай Microsoft Office Excel 13 17.02.2010 09:53
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
блок "cont" с права не принимает значение "margin: 10px;" которое описано в body tabikA HTML и CSS 5 24.02.2009 21:50