Ввод и вывод с плавающей запятой командной строки - PullRequest
0 голосов
/ 13 октября 2011

Мой первый вопрос на этом сайте:

Я работаю над учебным вопросом, и он просит меня написать программу, которая выводит произведение некоторых введенных чисел с плавающей запятой из командной строки: Это должно быть сделано с использованием потоков. Теперь в Моей учебной книге предлагается использовать следующий код:

#include <iostream>
#include <cstdio>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <fstream>
#include <string>
#include <cstdlib>
#include <istream>
using namespace std;

int main(  int argc, char* argv[] ) 
{  

          float data[20];
          int i;
          float sum;

          for(i=1;i<argc-1;i++){

              istream cinx(81,argv[i];

              cinx>>data[i];
              cout<<data[i];

              sum=sum+data[i];
         }
         cout<<"\nsum = "<<sum;
}

Итак, я пробовал приведенный выше код и много разных вариантов, пока у меня не выпали волосы! - Но безрезультатно, поскольку он не компилируется, вместо этого я получаю сообщение об ошибке в виде строки:

"нет соответствующей функции для вызова` std :: basic_istream> :: get (char ** &, int) "

Любые предложения будут высоко оценены.

Ответы [ 3 ]

1 голос
/ 14 октября 2011

Спасибо за помощь outybungalobill и Полу Р.

Последний код, который успешно скомпилирован и работает:

#include <iostream>
#include <sstream>

using namespace std;

int main(  int argc, char* argv[] ) 
{  

          float data[20];
          int i;
          float sum = 0.0f;

          for(i=1;i<argc;i++){


              istringstream cinx(argv[i]);

              cinx>>data[i];
              cout<<data[i];

              sum=sum+data[i];
         }
         cout<<"\nsum = "<<sum<<"\n";

   system ("PAUSE");
   return 0;
}
0 голосов
/ 13 октября 2011

Конструктор istream ожидает поток потоков. Вы, вероятно, хотите использовать istringstream:

istringstream cinx(argv[i]);

и #include <sstream> в начале.

Кроме того, вы вычисляете сумму, а не произведение.

0 голосов
/ 13 октября 2011

У вас пропущена скобка.Измените эту строку:

          istream cinx(81,argv[i];

на эту:

          istream cinx(81,argv[i]);

Также вам нужно инициализировать sum - изменить:

      float sum;

на:

      float sum = 0.0f;

И вы также на единицу в количестве аргументов командной строки - измените:

      for(i=1;i<argc-1;i++){

на:

      for(i=1;i<argc;i++){
...