0 / 0 / 0
Регистрация: 20.06.2016
Сообщений: 3
1

Использование данных из файла или из командной строки

20.06.2016, 18:25. Показов 1069. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!
Нужен совет опытных программистов или просто сведущих в этом след. вопросе.
Есть некоторая программа, которая выполняет одну из 4-х операций: определяет площадь квадрата, круга, треугольника или правильного шестиугольника. На текущий момент пользователь вводит все необходимые данные с клавиатуры. Моя задача сделать следующее:
1) Программа должна запускаться через командную строку.
2) После имени исполняемого файла передается необходимое количество параметров.
3) Если программа запущена без параметров, необходимо найти файл в той же папке, где находится исполняемый файл и считать входную информацию оттуда.

Примеры запуска через командную строку:
test.exe square 4 – расчет площади квадрата со стороной 4;
test.exe circle 1 – расчет площади круга с радиусом 1;
test.exe triangle 2 3 1– расчет площади треугольника со сторонами 2, 3, 1.
test.exe hexagon 3 – расчет площади правильного шестиугольника со стороной 3.

Пример содержимого файла:
circle 1 – расчет площади круга с радиусом 1.

До этого с файлами и с параметрами через консоль в C++ не сталкивался. С удовольствием бы сам все решил, но не получается найти достойную литературу по этому вопросу. Буду признателен за помощь решении и любые подсказки. Использую сейчас CodeBlocks с утилитой Mingw.

СПАСИБО ЗА ВНИМАНИЕ!

Текущий код:



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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#include <iostream>
#include <string.h>
#include <locale.h>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <cctype>
#include <math.h>
using namespace std;
 
// Инициализация глобальных переменных
const float pi=3.1415926;
float S,R,a,b,c,p;
 
 
// Перечень функций, работающих с целочисленным массивом
void square();
void circle();
void triangle();
void hexagon();
 
// Определение площади квадрата
void square()
 {
    cout << "Введите сторону квадрата a=";
    cin >> a;
    S = 0;
    S = pow(a,4);
    S *= 1000;
    S = ceil(S);
    S /= 1000;
    cout << "Площадь квадрата S=" << S;
 }
 
// Определение площади круга
void circle()
 {
    cout << "Введите радиус круга R=";
    cin >> R;
    S = 0;
    S = R * R * pi;
    S *= 1000;
    S = ceil(S);
    S /= 1000;
    cout << "Площадь круга S=" << S;
 }
 
// Определение площади треугольника
void triangle()
 {
    cout << "Введите сторны треугольника a,b,c:\n";
    cin >> a;
    cin >> b;
    cin >> c;
    p = (a + b + c) / 2;
    cout << "Полупериметр треугольника p=" << p << "\n";
    S = 0;
    S = sqrt(p * (p - a) * (p - b) * (p - c));
    if (S != 0) {
                 S *= 1000;
                 S = ceil(S);
                 S /= 1000;
                 cout << "Площадь треугольника S=" << S;
                }
            else cout << "Треугольника с такими с торонами не существует";
 }
 
 // Определение площади шестиугольника
 void hexagon()
 {
    cout << "Введите сторону правильного цестиугольника a=";
    cin >> a;
    S = 0;
    S = 3 * sqrt(3) / 2 * a * a;
    S *= 1000;
    S = ceil(S);
    S /= 1000;
    cout << "Площадь правильного шестиугольника S=" << S;
 }
int main()
{
    setlocale(LC_ALL, "Rus"); //локализация
    char ans[10];
        cout << "\n" << endl;
        cout << "<<<" << endl;
        cout << "Для определение площади квадрата введите 'square'\n"
            << "Для определение площади круга введите 'circle'\n"
            << "Для определение площади круга введите 'triangle'\n"
            << "Для определение площади круга введите 'hexagon'" << endl;
        cout << ">>>" << endl;
        cin >> ans;
        if (!strcmp(ans, "square")) // || strcmp(ans, "circle") || strcmp(ans, "triangle") || strcmp(ans, "square"))
        {
          cout << "Определение площади квадрата" << endl;
          square();
        }
        else if (!strcmp(ans, "circle"))
        {
          cout << "Определение площади круга" << endl;
          circle();
        }
              else if (!strcmp(ans, "triangle"))
              {
                cout << "Определение площади треугольника" << endl;
                triangle();
              }
                   else if (!strcmp(ans, "hexagon"))
                   {
                     cout << "Определение площади правильного шестиугольника" << endl;
                     hexagon();
                   }
                        else
                        {
                          cout << "Введено не корректное значение!";
                        }
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.06.2016, 18:25
Ответы с готовыми решениями:

Можно ли управлять клавиатурой из Командной строки или bat-файла?
Можно ли Управлять клавиатурой (ввёл команду в cmd (или bat файл ) запустил хоф нажалась клавиша...

Слияних 2 файлов в третий + строки + использование командной строки
Помогите с заданием пожалуйста. Задано 2 файла, строки в которых упорядочены по алфавиту. Написать...

Использование командной строки
У меня есть файл по адресу D:/Faylik/data.txt и его нужно скопировать с помощью командной строки в...

Использование аргументов командной строки
Всем доброго дня !!! Подскажите пожалуйста как связать этот код программы с командной строкой ?...

4
7784 / 6553 / 2982
Регистрация: 14.04.2014
Сообщений: 28,615
20.06.2016, 19:53 2
main() делаешь так:
C++
1
int main(int argc, char *argv[])
argc - число параметров, argv - массив параметров.
Для test.exe square 4 будет argc = 3, argv[1] = "square", argv[2] = "4".
2
0 / 0 / 0
Регистрация: 20.06.2016
Сообщений: 3
20.06.2016, 22:21  [ТС] 3
А как оно должно взаимодействовать-то? Я не совсем понимаю. Как эти параметры увязать с необходимыми мне переменными в задаче?
0
7784 / 6553 / 2982
Регистрация: 14.04.2014
Сообщений: 28,615
21.06.2016, 08:41 4
Ну у тебя ans вводится, а так значение уже будет в argv[1]. Проверяй дальше как обычно.
0
0 / 0 / 0
Регистрация: 20.06.2016
Сообщений: 3
21.06.2016, 18:18  [ТС] 5
Все, спасибо. Со всем справился. Все работает. Притянуто за уши, но работает))
0
21.06.2016, 18:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.06.2016, 18:18
Помогаю со студенческими работами здесь

Снятие запрета на использование Командной строки
Доброго времени суток. Создал батник (спасибо всем за помощь cyberforum), который ищет...

Запись данных из файла, наичная с определенной строки. Использование getline
Здравствуйте! Пишу функцию для записи массива из файла. Первые 7 строк - справочная информация не...

Использование командной строки в приложении с одним экземпляром.
Пишу некое приложение, которое по задумке должно постоянно работать, пока включен компьютер....

Использование консольного приложения с интерфейсом командной строки
Всем доброго времени суток Задача состоит из 3 пунктов. 1. Разработать класс &quot;треугольник&quot; для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru