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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2013, 16:55   #1
Ligeros905
Пользователь
 
Регистрация: 14.10.2013
Сообщений: 33
По умолчанию Программа со строками (C++)

Здравствуйте, помогите дописать код к программе

Постановка задачи
Разработать программу, выполняющую обработку строк в соответствии с заданием для
вашего варианта.
Исходные строки вводятся с клавиатуры. Обработка строк должна осуществляться
посимвольно (использование функций форматированного ввода scanf и sscanf не
допускается).
Мой вариант
Найти произведение вещественных чисел, перечисленных в исходной строке через
запятую. Ввод исходной строки осуществляется с клавиатуры.
Пример ввода: 2,1.5,33
Результат: 99

Код:
 Код:
#include "stdafx.h"
#include "iostream"
#include "conio.h"
#include "string.h"
using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{   setlocale(LC_ALL, "Rus");
	 
      char str[10];
        cout<<"Введите числа через запятую\n";
		cin>>str;
		

    
    getch ();
	return 0;
}
Я смог прописать ввод данных в строку, но не могу понять как перемножить их. Помогите, заранее благодарен

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

Предлагаю упростить:
Код:
  float q,w,e;
  scanf("%f,%f,%f",&q,&w,&e);
  printf("%f",q*w*e);
Это код для внутренностей твоей tmain
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.12.2013, 18:25   #3
Ligeros905
Пользователь
 
Регистрация: 14.10.2013
Сообщений: 33
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Предлагаю упростить:
Код:
  float q,w,e;
  scanf("%f,%f,%f",&q,&w,&e);
  printf("%f",q*w*e);
Это код для внутренностей твоей tmain
Я бы с удовольствием, но такой метод мне известен, а его как раз нельзя использовать. В задании запрещено пользоваться этими функциями.
Ligeros905 вне форума Ответить с цитированием
Старый 08.12.2013, 08:18   #4
_Freak_
Пользователь
 
Регистрация: 26.03.2013
Сообщений: 25
По умолчанию

Есть вот такая функция (даю ссылку, там и пример есть): http://www.cplusplus.com/reference/cstdlib/strtod/
_Freak_ вне форума Ответить с цитированием
Старый 08.12.2013, 20:24   #5
Ligeros905
Пользователь
 
Регистрация: 14.10.2013
Сообщений: 33
По умолчанию

Цитата:
Сообщение от _Freak_ Посмотреть сообщение
Есть вот такая функция (даю ссылку, там и пример есть): http://www.cplusplus.com/reference/cstdlib/strtod/
Всё прекрасно, но нельзя мне использовать функцию scanf
Ligeros905 вне форума Ответить с цитированием
Старый 09.12.2013, 00:21   #6
_Freak_
Пользователь
 
Регистрация: 26.03.2013
Сообщений: 25
По умолчанию

А так?

Код:
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>


int main(int argc, const char* argv[])
{
	char* last;
	char* next;
	char buffer[255];
        double result = 1.0L;

	/* Читаем всю строку целиком, думаю этого делать не запрещено*/
	printf("Input: ");
	scanf("%s", &buffer);

	last = buffer;

	while (*last) {
                /* 
                    Преобразуем начало строки в число и 
                    получаем указатель на след. не цифровой символ
                */
		result *= strtod(last, &next);
		
                /* Пропускаем не цифровые символы */
		while (*next) {
			if (isdigit(*next)) {
				break;
			}
			else { 
				++next;
			}
		}

		last = next;
	}

	printf("Result: %f\n", (float)result);

	system("pause");

	return 0;
}

Последний раз редактировалось _Freak_; 09.12.2013 в 00:24.
_Freak_ вне форума Ответить с цитированием
Старый 18.12.2013, 14:26   #7
Ligeros905
Пользователь
 
Регистрация: 14.10.2013
Сообщений: 33
По умолчанию

Цитата:
Сообщение от _Freak_ Посмотреть сообщение
А так?

Код:
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>


int main(int argc, const char* argv[])
{
	char* last;
	char* next;
	char buffer[255];
        double result = 1.0L;

	/* Читаем всю строку целиком, думаю этого делать не запрещено*/
	printf("Input: ");
	scanf("%s", &buffer);

	last = buffer;

	while (*last) {
                /* 
                    Преобразуем начало строки в число и 
                    получаем указатель на след. не цифровой символ
                */
		result *= strtod(last, &next);
		
                /* Пропускаем не цифровые символы */
		while (*next) {
			if (isdigit(*next)) {
				break;
			}
			else { 
				++next;
			}
		}

		last = next;
	}

	printf("Result: %f\n", (float)result);

	system("pause");

	return 0;
}
Мне сказали, что scanf и printf нельзя пользоваться ни в каком виде
Ligeros905 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа со строками Seferus Паскаль, Turbo Pascal, PascalABC.NET 1 29.06.2012 01:12
программа в с++ тема работа со строками катерина11 Помощь студентам 7 25.04.2011 12:06
Работа со строками. Программа из недавней темы. Ibanez Wizard Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 01.04.2011 17:17
программа со строками.!!!! radeon37 Паскаль, Turbo Pascal, PascalABC.NET 0 20.05.2010 17:58
программа со строками в Си champion92 Общие вопросы C/C++ 2 02.12.2009 16:52