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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2015, 10:33   #1
Nastya15684
 
Регистрация: 21.10.2015
Сообщений: 3
По умолчанию Для каждого элемента, выделенного из строки считываем как число и округляем

Помогите пожалуйста!! Очень срочно!!

Вот задание:
Строка состоит из символов, среди которых, в частности могут
быть цифры. Последовательность цифр (возможно включая плавающую
точку), отделенную любыми другими символами, следует считать
числами. Строка задается пользователем с клавиатуры.
Для каждого выделенного из данной строки числа с плавающей
запятой выполнить округления. Округление выполнить до знака после
точки, порядковый номер которого задается пользователем с клавиатуры.
Если округления необходимо выполнить до второго знака, то с дробной
части оставить только две первые цифры (или вторую изменить с
правилам округления), а все остальные удалить.
Предусмотреть исключения из целой части лишних нулей. Лишними
считать нули, расположенные в начале числа (0010 превратить в 10).
Вывести на экран строку, образованный из введенного пользователем
путем выполнения указанных действий.

Начала делать по этому алгоритму и застряла на 4 пункте..Помогите дописать!
1) вводим с клавиатуры точность
2) вводим строку
3) разделяем строку по любому символу, отличному от '0'-'9' '-' '.'
4) для каждого элемента, выделенного из строки
4.1) считываем как число
4.2) округляем

Код:
#include <iostream>
using namespace std;
int main()
{
    char str[100];
    cout << "Введите str:" << endl;
    cin >> str;
    int n;
    cin >> n;
    const char separator[] = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz";
    char *Ptr = NULL; 
    Ptr = strtok(str, separator);
    while (Ptr)
    {
        cout << Ptr << "\n";
        Ptr = strtok(0, separator);
    }

Последний раз редактировалось Stilet; 25.10.2015 в 12:17.
Nastya15684 вне форума Ответить с цитированием
Старый 25.10.2015, 12:30   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Могу предложить такой парсер:
Код:
// Парсер чисел в строке.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include <stdlib.h>
//http://www.programmersforum.ru/showthread.php?t=284085
void patsenum(char *s){
 char a[20]; int i,j; double d;
 for(i=0;s[i];i++){
	 if(s[i]>='0' && s[i]<='9'){ 
		 for(j=0;s[j+i] && s[i+j]>='0' && s[i+j]<='9' || s[i+j]=='.' || s[i+j]==',';j++) 
	      a[j]=s[i+j];
		i+=j;
       d=atof(&a[0]);
       printf("%5.2f\n",d);
	 }
 }
}
int _tmain(int argc, _TCHAR* argv[])
{
	patsenum("f7632t4.56jsfhis");
	getchar();
	return 0;
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка каждого второго элемента строки матрицы по возрастанию anechka1034 Паскаль, Turbo Pascal, PascalABC.NET 6 22.03.2015 19:43
Создать массив. Получить новый массив как произведение каждого элемента на заданное число. Найти максимальное (на Liberty Basic) MickeyAttac Помощь студентам 2 02.12.2014 22:55
задача на типы по Паскалю: Вывести число первого понедельника для каждого месяца для заданного года Ind Паскаль, Turbo Pascal, PascalABC.NET 3 23.12.2012 00:31
Создайте квадратную матрицу, значение каждого элемента равно сумме номера строки и столбца C++ loloverg Помощь студентам 1 26.05.2010 21:28