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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.12.2011, 21:28   #1
dronchik2010
Пользователь
 
Регистрация: 20.09.2011
Сообщений: 37
По умолчанию работа со строками в С++

Условие:
Вводятся две строки типа Слово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;
}

заранее спасибо!
dronchik2010 вне форума Ответить с цитированием
Старый 11.12.2011, 22:29   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Первый все буквы латиницы первой строки меняет в регистре - строку в нижний регистр, и первый символ в верхний (коряво кста написано), и считает кол-во циферок в строке
Второй... Я аж задумалсо... Пойду напьюсь что ли...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со строками в С++ Aleksandr22 Помощь студентам 15 26.02.2011 06:15
Работа с матрицами (норма матрицы, работа со строками) Neitrosha Помощь студентам 1 26.11.2010 20:19
работа со строками Darknes Общие вопросы C/C++ 3 05.07.2010 15:37
работа со строками NAZE Общие вопросы Delphi 1 16.06.2010 00:18
Работа со строками eR- Помощь студентам 2 23.02.2009 15:11