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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2009, 17:42   #1
Wi1D
Кибернетик
Форумчанин
 
Аватар для Wi1D
 
Регистрация: 22.10.2008
Сообщений: 142
Восклицание разбор строки на части

нужно приложение которое делает следующее:
Код:
RussianMessage("Введите вашу первую дробь в формате целая часть|числитель/знаменатель");
	cout <<endl;
	СЮДА НУЖНО ФУНКЦИЮ РАСПОЗНОВАНИЯ
например вводим строку 3|1/2
нужно разложить на 3 переменные tcel=3,tchis=1,tznam=2;
в тоже время чтобы 123|222/111 точно так же распознавалась бы как
tcel=123,tchis=222,tznam=111;
не существует идеальных программ...и людей тоже..
<== P.S. если я тебе помог нажми весы слева <==
Wi1D вне форума Ответить с цитированием
Старый 27.12.2009, 17:48   #2
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

double strtod (const char * str, char **end) ?
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4
Goodwin98 вне форума Ответить с цитированием
Старый 27.12.2009, 18:01   #3
Wi1D
Кибернетик
Форумчанин
 
Аватар для Wi1D
 
Регистрация: 22.10.2008
Сообщений: 142
По умолчанию

забыл уточнить!мы вводим дроби!стандартные функции дробей запрещены...я класс создал новый...но суть не в нем вроде...
не существует идеальных программ...и людей тоже..
<== P.S. если я тебе помог нажми весы слева <==
Wi1D вне форума Ответить с цитированием
Старый 27.12.2009, 18:10   #4
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

я хотел сказать, что что-то вроде этого. (Компилировать не пробовал)
Код:
char *end;
tcel = strtod( str, &end);
tchis = strtod(end,&end);
tznam = strtod(end,0);
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4
Goodwin98 вне форума Ответить с цитированием
Старый 27.12.2009, 18:55   #5
Wi1D
Кибернетик
Форумчанин
 
Аватар для Wi1D
 
Регистрация: 22.10.2008
Сообщений: 142
Плохо вот как то так

Вот как решил проблему...но возникла другая!Видно что-то не правильно с getline так как программа пролетает!срабатывает только первый вопрос Продолжить?
Код:
void main()  //основная программа
{	FRACTION FR1,FR2,FR3;//дроби
    char stroka[51]; //строка введённая пользователем
	char Scel[20],Schis[20],Sznam[20]; 
	char knopka;
	int znak_minys=0,tcel=0,tchis=0,tznam=0,tek_action,i,j;//знак в конце.счетчик.и темповские значения
	
	RussianMessage("Курсовая работа <Интерпритатор>!Cтудент 169 группы Фирсунин Вячеслав");cout <<endl;
while (1==1)
{	FR1.set(0,0);
	FR2.set(0,0);
	FR3.set(0,0);
	tek_action=0;
	j=i=0;
	RussianMessage("Продолжить?y/n");
	cout <<endl;	
	knopka=cin.get();
	if (knopka=='n') return;
	system("cls");
	RussianMessage("Введите вашу первую дробь в формате целая часть|числитель/знаменатель");
	cout <<endl<<"and press enter";	
	cin.getline(stroka,49);
	while (stroka[i] == ' ') i++;
	if (stroka[i]!= '\0') 
	{while (stroka[i] != '|') Scel[j++]=stroka[i++];
	tcel=atoi(Scel);
	j=0;
	while  (stroka[i] != '/') Scel[j++]=stroka[i++];
	tchis=atoi(Schis);
	j=0;
	while  (stroka[i] != '\0') Scel[j++]=stroka[i++];
	tznam=atoi(Sznam);
	}
	tchis=tcel*tznam+tchis;
	FR1.set(tchis,tznam);
	RussianMessage("Первая дробь в неправильном виде");
	cout <<endl;	
	cout <<FR1.get_chis()<<"/"<<FR1.get_znam()<<endl;
Причину я знаю но устранить не могу!там вроде он хапает лишнего из потока и поэтому пролетает тип успешно все
не существует идеальных программ...и людей тоже..
<== P.S. если я тебе помог нажми весы слева <==

Последний раз редактировалось Wi1D; 27.12.2009 в 18:57.
Wi1D вне форума Ответить с цитированием
Старый 27.12.2009, 19:11   #6
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Вот функция для поиска символа в строке
Код:
#include <string.h>
char *strchr(const char *str, int ch);
Возвращает указатель на первое вхождение ch. Если указанный символ не найден вернет нулевой указатель.
Пример:
Код:
#include <stdio.h>
#include <string.h>
int main()
{
  char *p;
  p = strchr("строка из примера", ' ');
  printf(p);
  return 0;
}
psycho-coder вне форума Ответить с цитированием
Старый 27.12.2009, 19:52   #7
Wi1D
Кибернетик
Форумчанин
 
Аватар для Wi1D
 
Регистрация: 22.10.2008
Сообщений: 142
По умолчанию

спасибо за помощь но я сделал своим способом
Код:
	RussianMessage("Введите вашу первую дробь в формате целая часть|числитель/знаменатель");
	cout << endl;
	cin.ignore();
	cin.getline(stroka,30);
	while (stroka[i] == ' ') i++;
	if (stroka[i]!= '\0') 
	{while (stroka[i] != '|') Scel[j++]=stroka[i++];
	tcel=atoi(Scel);
	j=0;
	i++;
	while  (stroka[i] != '/') Schis[j++]=stroka[i++];
	tchis=atoi(Schis);
	j=0;
	i++;
	while  (stroka[i] != '\0') Sznam[j++]=stroka[i++];
	tznam=atoi(Sznam);
	}
	tchis=tcel*tznam+tchis;
	FR1.set(tchis,tznam);
	RussianMessage("Первая дробь в неправильном виде");
	cout <<endl;	
	cout <<FR1.get_chis()<<"/"<<FR1.get_znam()<<endl;
не существует идеальных программ...и людей тоже..
<== P.S. если я тебе помог нажми весы слева <==
Wi1D вне форума Ответить с цитированием
Старый 27.12.2009, 23:31   #8
RoS
Форумчанин
 
Аватар для RoS
 
Регистрация: 13.12.2009
Сообщений: 272
По умолчанию

а почему бы просто не сделать так

char ch;
cin >> tcel >> ch >> tchis >> ch >> tznam;

Вполне юзабельно, особенно если ты просишь ввести в определнном формате!
Если я помог вам - порадуйте меня, нажмите на весы слева
RoS вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Asm. Разбивка строки на две части levis07 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 30.03.2010 14:30
Assembler TASM/ Разработать прогу:разбивающую каждое слово текстовой строки на две части levis07 Фриланс 5 20.11.2009 10:34
выборка части строки Garacio_cain PHP 1 12.11.2009 18:04
функция: копирование части строки в другую строку plasticman Microsoft Office Excel 1 18.03.2009 15:30
Разбор строки GPS TIT0 Общие вопросы C/C++ 1 08.03.2009 18:44