Как принять несколько входов, используя Linux для выполнения операций - PullRequest
0 голосов
/ 24 сентября 2019

Мне нужна помощь, чтобы понять, почему код не работает.У меня нет полного понимания, как использовать argc и argv.Мне нужно сделать операции сложения, вычитания, умножения и деления, которые могут иметь несколько входов.Дополнение складывает их все вместе, я смог получить это.Для остальных это первый вход и вычитание / деление / умножение на остальные.Я использую Linux.Чтобы ввести числа, я бы сделал (./.a.out 1 2 3 4) для ввода целых чисел.Спасибо


#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int main( int argc, const char * argv[])
{
    float sum=0.0;
    float sub=0.0;
    float div=0.0;
    float mult=0.0;

    char ch;

    printf("Pick a function \n");
    scanf("%c", &ch);  

    int x,y;

    switch(ch)                                                        
    {
    case ('A'):                                                           
        {
        x = argc -1;
        for(y=0;y<x;y++)
        {
        sum = sum + atoi(argv[y+1]);
        }
        printf("The result of addition is %f\n",sum);             
        break;
        }
    case ('S'):
        {
        x = argc -1;
        for(y=0;y<x;y++)
        {
        sub = sub - atoi(argv[y+1]);
        }
        printf("The result of subtraction is %f\n",sub);             
        break;
        }
    case ('M'):
        {
        x = argc -1;
        for(y=0;y<x;y++)
        {
        mult = mult * atoi(argv[y+1]);
        }
        printf("The result of multiplication is %f\n",mult);              
        break;
        }
    case ('D'):
        {
        x = argc -1;
        for(y=0;y<x;y++)
        {
        div = div / atoi(argv[y+1]);
        }
        printf("The result of division is %f\n",div);              
        break;
        }
    }
}

1 Ответ

2 голосов
/ 24 сентября 2019

Вот пример того, что вам нужно исправить:

    #include <iostream>
    // etc..
    using namespace std;

    float mult = 1.0;
    float div = 1.0;

    case ('M'):
    {
            x = argc - 1;
            for (int y = 0; y < x; ++y)
            {
                mult = mult * atoi(argv[y+1]);
            }
            cout << "The result of multiplication is" << mult << endl;             
            break;
    }

Для вычитания и деления просто поместите sub = atoi(argv[1]); / div = atoi(argv[1]); вне цикла и установите переменную управления цикла в int y = 1для обоих.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...