Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 20.06.2016
Сообщений: 3

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

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

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Нужен совет опытных программистов или просто сведущих в этом след. вопросе.
Есть некоторая программа, которая выполняет одну из 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.06.2016, 18:25
Ответы с готовыми решениями:

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

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

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

4
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
20.06.2016, 19:53
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  [ТС]
А как оно должно взаимодействовать-то? Я не совсем понимаю. Как эти параметры увязать с необходимыми мне переменными в задаче?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
21.06.2016, 08:41
Ну у тебя ans вводится, а так значение уже будет в argv[1]. Проверяй дальше как обычно.
0
0 / 0 / 0
Регистрация: 20.06.2016
Сообщений: 3
21.06.2016, 18:18  [ТС]
Все, спасибо. Со всем справился. Все работает. Притянуто за уши, но работает))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.06.2016, 18:18
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Функция установки текстового статуса в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru