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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.11.2012, 23:07   #1
ryadnovka
Новичок
Джуниор
 
Регистрация: 18.11.2012
Сообщений: 2
По умолчанию Работа с символами(Язык C)

Задание: С клавиатуры вводятся символы. Признак конца ввода – точка. Определить символ, следующий за последним вхождением цифры.

Не могу разобраться где я не прав. Только начал учить Си, поэтому понимаю, что могут быть какие-то наиглупейшие ошибки. Прошу указать на них или посоветовать источник, из которого я смогу найти ответы сам.
Вот текст программы, которую написал я и которая работает неверно.
Код:
#include <stdio.h>
#include <conio.h>
int main()
  {
  int z1, z2, sim;
  sim = '.';
  z1 = getchar();
  if (z1 != '.'){
    z2 = getchar();
    while (z2 != '.'){
      if (((z1 >= '0') && (z1 <= '9'))&&((z2 < '0') && (z2 > '9')))
	  sim = z2;
	  z1 = z2;
	  z2 = getchar();
      }
   }
    if ((z1 != '.') && (sim != '.') && ((z1 < '0') && (z1 > '9')))
    printf("simvol=%c", sim);
    else printf("wrong");
  _getch();
  return 0;
  }
ryadnovka вне форума Ответить с цитированием
Старый 19.11.2012, 00:03   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

С потолка:
Код:
{
...
 char last=0,c=0; bool ln=false;
 for(char c=getchar();c!='.';c=getchar()){
  if(ln && !(c>='0' && c<='9')) {last=c; ln=false;}
  printf("%c",c);
  if(c>='0' && c<='9') ln=true;
 }
 printf("%c",last);
...
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.11.2012, 22:19   #3
ryadnovka
Новичок
Джуниор
 
Регистрация: 18.11.2012
Сообщений: 2
По умолчанию

Stilet, компилятор нашёл очень много ошибок в этом коде "с потолка", но идею я Вашу понял. Реализовать не пытался, но постараюсь обязательно. Поэтому за идею спасибо. В своём коде нашёл ошибку, вот рабочий код, теперь буду пытаться понять, почему он работает правильно тогда, когда символы вводишь строкой, но не работает тогда, когда вводишь по-одному.:
Код:
#include <stdio.h>
#include <conio.h>
int main()
  {
  int z1, z2;
  int sim = '0';
  z1 = getchar();
  if (z1 != '.'){
    z2 = getchar();
    while (z2 != '.'){
      if (((z1 >= '0') && (z1 <= '9')))
	  sim = z2;
	  z1 = z2;
	  z2 = getchar();
      }
	if (((sim < '0') || (sim > '9')) && ((z1 < '0') || (z1 > '9')))
    printf("simvol=%c", sim);
	else printf("wrong");
    }
  else printf("wrong");
  _getch();
  return 0;
  }
ryadnovka вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со строками и символами. AlexStudent Общие вопросы C/C++ 6 30.05.2011 16:17
Работа с символами в цикле cheef PHP 2 14.01.2011 18:21
Работа с символами.Паскаль Андрюха74 Помощь студентам 2 10.06.2010 16:08
Работа с русскими символами... Sota Помощь студентам 5 31.05.2008 18:44