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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> работа со строками в С++ 
:(
    Опции темы
dron2010
Дата 11.12.2011, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Условие:
Вводятся две строки типа Слово1 Слово2. Необходимо исправить ошибки, связанные с неверным использованием прописных и строчных букв. Возможно появление десятичных цифр. В этом случае необходимо выдать сообщение об ошибке.

Код:
Код

#include<stdio.h>   /*стандартный заголовочный файл ввода/вывода*/
#include<conio.h>   /*консольный ввод-вывод, используемый в старых компиляторах*/
#include<string.h>   /*заголовочный файл содержащий функции для работы с нуль-термированными строками и различными функциями работы с памятью*/
#include<ctype.h>   /*заголовочный файл стандартной библиотеки Си содержащей объявления функций для классификации и преобразования символов/
void main()
{
 char *s1, *s2; 
 int i,k,l,k1=0,k2=0;
 clrscr();
printf("\n Vvedite dve stroku: \n");
gets(s1); gets(s2); /*функция ввод строки s1 и s2*/
k=strlen(s1);
 for(i=0;i<k;i++)
 { /* tolower – преобразование буквы в нижний регистр*/
   /*toupper – преобразование буквы в верхний регистр*/

 s1[i]=tolower(s1[i]);
 s1[0]=toupper(s1[0]); 
 if (isdigit(s1[i]))  k1=k1+1;
 }

 if (k1!=0)   /*если k не равно нулю*/
 {    /*тогда*/
 printf("Oshibka:%d",k1);   /*вывод ошибки*/
 printf("\n");
 }
 else printf(s1); /*иначе печатется строка 1*/
 printf(" ");  /*печатается пробел*/
gets(s2);  /*и далее ввод строки 2*/
l=strlen(s2);
 for(i=0;i<l;i++) /*для i присвоить равному нулю, i должно быть больше 1 и увеличиваем переменную i на 1, после проведенного действия*/
 {
 s2[i]=tolower(s2[i]);
 s2[0]=toupper(s2[0]);
 if (isdigit(s2[i]))  k2=k2+1;
 }
 if (k2!=0) { printf("Oshibka:%d",k2);  /*если k не равно нулю, тогда печатать ошибка*/
 printf("\n");}
 else printf(s2);  /*иначе печатать строку 2*/
 getch();
}


что выполняют эти циклы:
1) 
Код
k=strlen(s1);
for(i=0;i<k;i++)
{ /* tolower – преобразование буквы в нижний регистр*/
/*toupper – преобразование буквы в верхний регистр*/

s1[i]=tolower(s1[i]);
s1[0]=toupper(s1[0]); 
if (isdigit(s1[i])) k1=k1+1;
}


2) 
Код
l=strlen(s2);
for(i=0;i<l;i++) /*для i присвоить равному нулю, i должно быть больше 1 и увеличиваем переменную i на 1, после проведенного действия*/
{
s2[i]=tolower(s2[i]);
s2[0]=toupper(s2[0]);
if (isdigit(s2[i])) k2=k2+1;
}

спасибо заранее!

Модератор: не забываем пользоваться кнопочкой "Код"

Это сообщение отредактировал(а) bsa - 11.12.2011, 22:08
PM MAIL   Вверх
bsa
Дата 11.12.2011, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



И кто вас учит так форматировать код?!? Ведь ничего не видно!!!
1) данный цикл преобразует всю строку в нижний регистр, а первый символ в верхий. Строка 7 должна быть вынесена за цикл (так как только замедляет работу).
2) тоже самое. Данный код надо было выделить в отдельную функции, дабы "не плодить сущности".
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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