1

Тема: Як зробити,щоб програма відкривала .cmd файл в залежності від слова?

Є програма, яка виводить рандомні слова, є наприклад cmd/exe файли словоA, слова, словоС, як зробити щоб було так-
Output словоA, запуск словоA.cmd/.exe.
Знаю як запустити просто файл,а як в залежності від виведеного слова - не знаю,підкажіть будь ласка.

Якщо треба - можу код для виводу слів кинути.

2

Re: Як зробити,щоб програма відкривала .cmd файл в залежності від слова?

Якщо в нас C/C++, то виклик .cmd-файла з сішної програми задається 0-термінованим рядком. Значить, треба скомпонувати рядок, що міститиме ім'я файла, й передати його функції system().

3

Re: Як зробити,щоб програма відкривала .cmd файл в залежності від слова?

darsteba написав:

Є програма, яка виводить рандомні слова, є наприклад cmd/exe файли словоA, слова, словоС, як зробити щоб було так-
Output словоA, запуск словоA.cmd/.exe.
Знаю як запустити просто файл,а як в залежності від виведеного слова - не знаю,підкажіть будь ласка.

Якщо треба - можу код для виводу слів кинути.

не зовсім зрозуміло. Ви не знаете як з'єднати дві строки?
Наведіть будласка код як ви отримуєте ваші слова та як хочете запускати програми

4 Востаннє редагувалося darsteba (26.03.2019 00:45:35)

Re: Як зробити,щоб програма відкривала .cmd файл в залежності від слова?

Зробив додавши  -

int n = rand()%11;
printf ("%s %s\n", spisok_0 [rand()%1], spisok_1 [n]);
system ( spisok_1[n]);

5

Re: Як зробити,щоб програма відкривала .cmd файл в залежності від слова?

darsteba написав:

Зробив додавши  -

int n = rand()%11;
printf ("%s %s\n", spisok_0 [rand()%1], spisok_1 [n]);
system ( spisok_1[n]);

дивний код. Але вам видніше. Можливо я не зрозумів яку ви задачу вирішуєте - та схоже що у вас з цим такіж проблеми :)

Подякували: koala1

6 Востаннє редагувалося darsteba (26.03.2019 10:43:24)

Re: Як зробити,щоб програма відкривала .cmd файл в залежності від слова?

varkon написав:
darsteba написав:

Зробив додавши  -

int n = rand()%11;
printf ("%s %s\n", spisok_0 [rand()%1], spisok_1 [n]);
system ( spisok_1[n]);

дивний код. Але вам видніше. Можливо я не зрозумів яку ви задачу вирішуєте - та схоже що у вас з цим такіж проблеми :)

Програма виводить рандомне слово з 11 заданих.
Є наприклад 11 слів
Собака,кіт,пес,дім,миша,кнопка......
Виводить мені рандомно,наприклад - кіт  і автоматично запускається .ехе файл з такою самою назвою

7

Re: Як зробити,щоб програма відкривала .cmd файл в залежності від слова?

Якщо пишете на C, гляньте sprintf, якщо C++ - stringstream.

8

Re: Як зробити,щоб програма відкривала .cmd файл в залежності від слова?

darsteba написав:
varkon написав:
darsteba написав:

Зробив додавши  -

int n = rand()%11;
printf ("%s %s\n", spisok_0 [rand()%1], spisok_1 [n]);
system ( spisok_1[n]);

дивний код. Але вам видніше. Можливо я не зрозумів яку ви задачу вирішуєте - та схоже що у вас з цим такіж проблеми :)

Програма виводить рандомне слово з 11 заданих.
Є наприклад 11 слів
Собака,кіт,пес,дім,миша,кнопка......
Виводить мені рандомно,наприклад - кіт  і автоматично запускається .ехе файл з такою самою назвою

У вас є декілька речей, на які я б рекомендував звернути увагу.
Перше - це взагалі зрозуміти, чи ви пишете на С++ чи на С (що не схоже). Якщо ви користуєтесь С++ - то краще використовувати його інструменти для виводу, строк та іншого.
Друге - бажано перевіряти що індекс який ви використовуєте - він валіндний (не перевищує розмір вашого масива). Операція взяття індексу не генерує виключень - але це не значить що у вас не буде проблем.
Третє  - якщо ви користуєтесь С++11 - ви можете використовувати std::tuple щоб зберігати слово та програму яку треба запустити. Якщо вам це не подобається - то можна працювати з одним масивом (краще вектором). Якщо ви користуєтесь C-style string - використовуйте strcat для того щоб поєднати слово та розширення.
четверте - перевірити чи відпрацювала ваша програма теж не завадить.

Подякували: zbst1

9

Re: Як зробити,щоб програма відкривала .cmd файл в залежності від слова?

А чи потрібен тут C/C++ взагалі, якщо вся задача зводиться до генерації випадкового числа, вибору слова, що йому відповідає, й виклику відповідного екзешника/батника? При бажанні, це все можна зробити й батником.

10 Востаннє редагувалося darsteba (27.03.2019 02:28:30)

Re: Як зробити,щоб програма відкривала .cmd файл в залежності від слова?

Я зробив як мені простіше.
Так,в батнику можна було б зробити,але я не знаю ,як в .bat то зробити,в с++ простіше було мені.
Мені головне було,щоб працювало - виводить рандомне слово,відкриває .ехе файл з таким же ім'ям,це я і хотів щоб було.
Сюди я кинув приклад програми,в мене там 11 слів,а не 3,як тут.Я назвав це генератором жанру.Хотів дізнатись інф по питанню,не знайшов тут,спитав у викладача,він пояснив (це не лаб.р,ми джаву вчимо вже)

11

Re: Як зробити,щоб програма відкривала .cmd файл в залежності від слова?

darsteba написав:

Я зробив як мені простіше.

Не схоже, що вам так простіше.

12 Востаннє редагувалося darsteba (27.03.2019 14:19:36)

Re: Як зробити,щоб програма відкривала .cmd файл в залежності від слова?

koala написав:
darsteba написав:

Я зробив як мені простіше.

Не схоже, що вам так простіше.

Чому так думаєте?
В с++ в мене була 1 проблема : як зробити,щоб запускався .ехе файл.ЇЇ вирішено.
А в батнику я і близько не знаю,як зробити,тому писав на с++

13 Востаннє редагувалося P.Y. (28.03.2019 12:12:55)

Re: Як зробити,щоб програма відкривала .cmd файл в залежності від слова?

Якось так:

set /a n= %random% %% 11
goto l%n%

:l0
   echo The word is "cat"
   cat.exe
   :: щоб запустити екзешник, просто пишемо його ім’я
   goto end
:l1
   echo The word is "dog"
   call dog.cmd
   :: Або просто dog.cmd (без call), але тоді відбудеться перехід на вказаний .cmd або .bat файл без повернення.
   :: Якщо після виконання файла плануються якісь додаткові дії в основному батнику, слід використовувати call
   goto end
:: і т.д.

:end
Подякували: leofun01, PRY2

14

Re: Як зробити,щоб програма відкривала .cmd файл в залежності від слова?

P.Y. написав:

Якось так:

set /a n= %random% %% 11
goto l%n%

:l0
   echo The word is "cat"
   cat.exe
   :: щоб запустити екзешник, просто пишемо його ім’я
   goto end
:l1
   echo The word is "dog"
   call dog.cmd
   :: Або просто dog.cmd (без call), але тоді відбудеться перехід на вказаний .cmd або .bat файл без повернення.
   :: Якщо після виконання файла плануються якісь додаткові дії в основному батнику, слід використовувати call
   goto end
:: і т.д.

:end

не знав,дякую