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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.01.2013, 14:52   #1
Глеб1991
Пользователь
 
Регистрация: 05.05.2012
Сообщений: 23
По умолчанию Работа со строками в си!

Добрый день форумчане, мне нужна небольшая помощь в программе. Само задание такое. Есть строка в которой латынь и цифры. Если цифры в строке упорядочены по алфавиту вывести цифру 0 иначе вывести символ нарушивший порядок. Т.е. ввели a z - программа должна ответить 0, ввели z a программа должна ответить z-нарушил порядок. Я уже сделал программу но она криво работает
Код:
#include <iostream.h>   //Їа®Ја*¬¬* Є®в®а*п ®Їа **«ЁзЁҐ ®иЁЎ®Є ў *«д*Ёв*®¬ Ї®ап¤ЄҐ
#include <windows.h>
#include <string.h>

int main ()
{
 char mass[255];
 int i = 0, n = 0;
 int b = 1;
 cout << "‚ўҐ¤ЁвҐ бва®Єг : ";
 cin >> mass;
/* Џа®е®¤Ё¬ Ї® ¬*ббЁўг ба*ў*Ёў*п н«Ґ¬Ґ*⠯।л¤гйЁ¬ б® б«Ґ¤гогйЁ¬*/


 for (i = 0; i < strlen(mass) - 1; i++)
 {
  /* …б«Ё ⥪гйЁ© Ў®«миҐ б«Ґ¤гог饣® (**агиҐ*  *«д*ўЁв*л©
  Ї®а冷Є в*Є Є*Є ў ЂЌ‘€ бва®з*лҐ бЁ¬ў®«л
  Ё¤гв a = 97 b = 98... (Ї® ў®§а*бв**Ёо) */
  if (mass[i - n] > mass[i + 1] && (int)mass[i - n] >= 97 && (int)mass[i + 1] >= 97)
  {
   //“бв***ў«Ёў*Ґ¬ ЇҐаҐ¬Ґ**го ®вўҐз*ойго §* Ї®а冷Є ў «®¦м
   b = 0;
   // ўлў®¤Ё¬ бЁ¬ў®« **аги*ойЁ© Ї®а冷Є
   cout <<  mass[i + 1] << endl;
   //Ё ЇаҐалў*Ґ¬ жЁЄ«
   break;
  }
 // n = 0;
  // Ґб«Ё **©¤Ґ* Ё*®© бЁ¬ў®« - 㢥«ЁзЁў*Ґ¬ ᬥйҐ*ЁҐ n ** 1.
  if ((int)mass[i + 1] < 97)
      n++;
 }
 if (b)
 cout << "0" << endl;
 return 0;
 
}
но он загибается на 123z15b т.е. выдает 0, а должен так z - нарушает порядок. Да цифры в строке могут быть, но их программа должна пропускать

Последний раз редактировалось Stilet; 29.01.2013 в 15:11.
Глеб1991 вне форума Ответить с цитированием
Старый 30.01.2013, 14:28   #2
Onni
Форумчанин
 
Аватар для Onni
 
Регистрация: 28.12.2008
Сообщений: 134
По умолчанию

Код:
 char mass[255];
 int i = 0, n = 0;
 bool b = true;
 cout << "Input  : ";
 cin >> mass;



 for (i = 0; i < (int)strlen(mass) - 1; i++)
 {

  if(((int)mass[i])>((int)mass[i+1]))
  {

   b = false;
   cout <<  mass[i] << endl;

   break;
  }

 }
 if (b==true)
 cout << "0" << endl;
 return 0;
протести, но тут есть подвох например разница в регистрах, т.к. по таблице кодов Z - 90, z - 122
Например Za, будет работать неправильно.
Onni вне форума Ответить с цитированием
Старый 30.01.2013, 15:32   #3
ep1a
Пользователь
 
Регистрация: 30.01.2013
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Глеб1991 Посмотреть сообщение
Есть строка в которой латынь и цифры. Если цифры в строке упорядочены по алфавиту вывести цифру 0 иначе вывести символ нарушивший порядок. Т.е. ввели a z - программа должна ответить 0, ввели z a программа должна ответить z-нарушил порядок. Я уже сделал программу но она криво работает
Цитата:
Сообщение от Глеб1991 Посмотреть сообщение
Да цифры в строке могут быть, но их программа должна пропускать
ты уж определись, что именно должно быть упорядочено, по твоим объяснениям можно только строить догадки о задаче, которую нужно решить =\
ep1a вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со строками Gregorii Помощь студентам 0 18.11.2012 19:13
Работа со строками(С++) ALEX777a Помощь студентам 3 20.10.2012 20:20
C++ работа со строками eclipso Общие вопросы C/C++ 3 19.12.2011 12:18
работа со строками маГГ85 PHP 14 18.12.2011 14:00
Работа с матрицами (норма матрицы, работа со строками) Neitrosha Помощь студентам 1 26.11.2010 20:19