Форум программистов, компьютерный форум CyberForum.ru

Калькулятор в командной строке - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.86
Alena91
Сообщений: n/a
27.06.2010, 11:17     Калькулятор в командной строке #1
В командной строке заданы операнды и операция (+, -, *, /, %). Выполнить операцию, вывести результат.
Например: в командной строке набираем
c:\progra~1\borlandc\bin>task2.exe 9 / 3
результат выполнения: 9 / 3 = 3


Sps saranee))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.06.2010, 11:17     Калькулятор в командной строке
Посмотрите здесь:

C++ Параметры в командной строке
C++ Калькулятор для командной строки
Арифметические действия в командной строке C++
C++ Изображения в командной строке
Запуск в командной строке C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
.::.DIMA.::.
142 / 142 / 4
Регистрация: 26.10.2008
Сообщений: 782
27.06.2010, 12:00     Калькулятор в командной строке #2
Здесь вам поможет Польская Инверсная Запись http://ru.wikipedia.org/wiki/Обратная_польская_запись. Примеры есть на форуме. Не раз уже справшивали.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
27.06.2010, 16:06     Калькулятор в командной строке #3
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <stdio.h>
#include <stdlib.h>
 
#define PRECISSION 2
int main(int argc, char **argv){
    double arg1, arg2;
    
    if ( argc != 4 ){
        fprintf(stderr, "Usage: %s <arg1> <+|-|*|/> <arg2>\n", *argv);
        exit(EXIT_FAILURE);
    }
    arg1 = atof(argv[1]);
    arg2 = atof(argv[3]);
    switch( argv[2][0] ){
        case '+' :
            printf("%.*f\n", PRECISSION, arg1 + arg2);
            break;
        case '-' :
            printf("%.*f\n", PRECISSION, arg1 - arg2);
            break;
        case '*' :
            printf("%.*f\n", PRECISSION, arg1 * arg2);
            break;
        case '/' :
            if ( arg2 == 0.0 ){
                fprintf(stderr, "Devidion by 0.\n");
                exit(EXIT_FAILURE);
            }
            printf("%.*f\n", PRECISSION, arg1 / arg2);
            break;
        default :
            fprintf(stderr, "Wrong operator.\n");
            exit(EXIT_FAILURE);
    }
    
    exit(EXIT_SUCCESS);
}
TrenAr
21 / 20 / 2
Регистрация: 21.06.2010
Сообщений: 80
27.06.2010, 16:46     Калькулятор в командной строке #4
Цитата Сообщение от easybudda Посмотреть сообщение
код
Ух ты!

А можно поподробнее, как программе передаются аргументы?
Что такое argc и почему оно должно быть равно именно четырём?
Что за переменная **argv? Когда звёздочка одна - это указатель. А когда две?
Почему выбраны именно элементы argv[1] и argv[3] и пропущен argv[2]?
Почему вдруг одномерный массив argv[.] превратился далее в двумерный argv[2][0]?
Да, и что за функция такая atof?
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
27.06.2010, 17:03     Калькулятор в командной строке #5
TrenAr, лень учебник переписывать, буду краток:
при запуске программе передаётся количество параметров, с которыми она запущена (argc = arguments count) и массив строк, каждая из которых содержит по одному параметру (argv = arguments vector), параметры разделяются пробелами. При этом первым параметром передаётся имя самой программы, то бишь argc всегда не меньше 1, а в argv[0] хранится что-то вроде "program.exe". Кстати, если char * - это указатель на символ (напомню - в С указатель на массив = указатель на первый элемент массива), то char ** - соответственно указатель на указатель.
Учитывая вышесказанное при вызове программы из командной строки
Код
program.exe 2 + 3
получим
argc = 4
argv[0] = "program.exe"
argv[1] = "2"
argv[2] = "+"
argv[3] = "3"
Из аргументов argv[1] и argv[3] функцией atof() извлекаются значения первого и второго операндов, а первый символ строки argv[2] ( тот самый argv[2][0] ) - собственно символ операции, которую надо над операндами совершить. В принципе всё просто...
Yandex
Объявления
27.06.2010, 17:03     Калькулятор в командной строке
Ответ Создать тему
Опции темы

Текущее время: 14:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru