Тролль Опубликовано 19 марта, 2008 Жалоба Поделиться Опубликовано 19 марта, 2008 (изменено) daff_9000: Ох, учил бы ты сначала Pascal... C и C++ - это нечто вроде стенографии, по ним учиться - то же, что учиться письму сразу стенографией... Конкретно по вопросу: вот пример. #include <iostream.h>#include <conio.h> main(){cout<<"1. root"<<endl; cout<<"2. square"<<endl; cout<<"3. volume"<<endl; switch(_getch()){case '1': cout<<"program 1"<<endl; break; case '2': cout<<"program 2"<<endl; break; case '3': cout<<"program 3"<<endl; break; default : cout<<"no such program!"<<endl; }_getch();} Тут при нажатии, после появления меню, клавиши с цифрой 1, 2 или 3 выдается соответствующая строка. Вместо выдачи строки можно включить любую последовательность операторов или вызов какой-нибудь отдельно описанной подпрограммы (по терминологии C++ - функции) Изменено 19 марта, 2008 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
daff_9000 Опубликовано 20 марта, 2008 Жалоба Поделиться Опубликовано 20 марта, 2008 daff_9000: Ох, учил бы ты сначала Pascal... C и C++ - это нечто вроде стенографии, по ним учиться - то же, что учиться письму сразу стенографией... Конкретно по вопросу: вот пример. #include <iostream.h>#include <conio.h> main(){cout<<"1. root"<<endl; cout<<"2. square"<<endl; cout<<"3. volume"<<endl; switch(_getch()){case '1': cout<<"program 1"<<endl; break; case '2': cout<<"program 2"<<endl; break; case '3': cout<<"program 3"<<endl; break; default : cout<<"no such program!"<<endl; }_getch();} Тут при нажатии, после появления меню, клавиши с цифрой 1, 2 или 3 выдается соответствующая строка. Вместо выдачи строки можно включить любую последовательность операторов или вызов какой-нибудь отдельно описанной подпрограммы (по терминологии C++ - функции) Да я бы рад, но у универе требуют си ++ ( case '1': cout<<"program 1"<<endl; break; case '2': cout<<"program 2"<<endl; break; case '3': cout<<"program 3"<<endl; break; здесь, 1,2 и 3 это что, имя срр файлов ? Если не сложно, праспишите пожалуйста анализ кода. Мне нужно что бы был один срр файл, собственно выбор номера программы. При выбори, происходило обращение к другим срр. Извените, если не корректно объясняюсь. :) Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 20 марта, 2008 Жалоба Поделиться Опубликовано 20 марта, 2008 Дело не в корректности... Мне нужно что бы был один срр файл, собственно выбор номера программы. При выбори, происходило обращение к другим срр.При выборе не бывает обращения ни к каким cpp. В cpp файле хранится исходный код программы, записанный на языке C++. Cpp файл читается компилятором и его текст переводится в запись машинных команд, которая помещается в exe файл. Никакого выполнения при этом нет. Если хочется, чтобы было обращение к "другим cpp", их текст нужно включать в текст этого cpp. Конечно, скомпилированная программа может обращаться к другим приложениям, но файлы исходных текстов программ (cpp) тут ни при чем. здесь, 1,2 и 3 это что, имя срр файлов ?1, 2 и 3 в примере - это символы на клавиатуре, клавиши с которыми будут нажиматься пользователем при выборе им выполняемого варианта. Сначала в программе выводятся строки с пояснениями, что будет означать нажатие клавиш с этими символами. Затем выполняется оператор выбора вариантов switch, внутри которого вызывается функция _getch(), ждущая нажатия клавиши на клавиатуре и передающая полученный код для анализа оператору switch, который сравнивает этот код с кодами символов, заданными в строках со словами case. При совпадении кодов выполняется последовательность операторов, следующая за соответствующим case, там у нас для примера просто записаны выводы сообщений о выборе данного пункта меню. На самом деле, конечно, выбирать будет не оператор, на этапе выполнения программы его уже не существует, а машинные команды в exe файле, которые будут получены после преобразования cpp файла с этим оператором в exe файл. Ссылка на комментарий Поделиться на другие сайты Поделиться
daff_9000 Опубликовано 21 марта, 2008 Жалоба Поделиться Опубликовано 21 марта, 2008 Спасибо огромное. Я вот делал так с функцие отображения кирилицы: записал ее в отдельный файл .h, задал подключение #include "rus.h"... А можно как нибудь сделать, что бы каждая моя программка была отдельным файлом, и подключалась при определенном выборе 1, 2 или 3... ? Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 21 марта, 2008 Жалоба Поделиться Опубликовано 21 марта, 2008 (изменено) daff_9000: Я вот делал так с функцие отображения кирилицы: записал ее в отдельный файл .h, задал подключение #include "rus.h"...Да, выражение #include включает текст любого файла вместо себя туда, где оно находится. Можно даже сделать выбор, включать тот или другой файл, вот только этот выбор будет происходить при компиляции исходного кода программы (то есть в начале исходного кода ты уже должен будешь указать или 1, или 2, или 3, а не во время выполнения программы), то есть в зависимости от этого выбора просто будет создан тот или другой exe-файл, во время его выполнения уже никакого выбора не будет. Не совсем ясно, что подразумевается под "подключением" программы. Но есть три варианта выбора "подключения" дополнительной программы во время выполнения основной программы (насколько я понял, речь идет об этом). а) просто вызов из одной программы другой. Новая программа откроется в новом окне. б) вызываемые программы компилируются в виде не exe-файлов, а dll-файлов (Dynamic Link Library) - подключаемых, при потребности, в ходе выполнения основной программы заранее скомпилированных кусков кода. Самостоятельно такие куски кода выполняться не могут. в) использование технологии OLE (Object Linking and Embedding ), тогда дополнительная программа объединяется с основной так, что окно объединенной программы содержит элементы и той и другой программы, например, можно в Word вставить объект графического редактора Paint, при этом вид WORD станет гибридом видов Word и Paint, большая часть пунктов меню и кнопок обеих программ уйдет, часть объединится и останется. Программирование таких вещей сложно. А почему бы тебе не сделать просто одну программу и в ней выбор нужных действий? Все эти вещи хороши, когда программа разрастается до объемов в десятки тысяч строк, а для простых программ лучше всего использовать и простые решения. Изменено 21 марта, 2008 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
daff_9000 Опубликовано 21 марта, 2008 Жалоба Поделиться Опубликовано 21 марта, 2008 Спсибо за разъяснение. А можешь конкретней объяснить как осуществить пункт А. или направь на литературу. Т.е. я могу создать файл .h назвать его, скажем, qwerty.h, подключить к проекту и в любое место программы вставить название файла qwert, тогда он якобы добавиться в код ? Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 21 марта, 2008 Жалоба Поделиться Опубликовано 21 марта, 2008 daff_9000: Т.е. я могу создать файл .h назвать его, скажем, qwerty.h, подключить к проекту и в любое место программы вставить название файла qwert, тогда он якобы добавиться в код ?Нет, не добавится. Надо вставить в программу не просто название файла, а строку #include "qwerty.h" Тогда - без всяких якобы. Смотри мой пример в 22-м посте этой темы. можешь конкретней объяснить как осуществить пункт А. В том же примере замени cout<<"program 2"<<endl на system("calc.exe") При нажатии клавиши с цифрой 2 будет вызываться калькулятор Windows. Если понравилось, сделай еще замену cout<<"program 3"<<endl на system("mspaint.exe") Теперь при нажатии клавиши с цифрой 3 будет вызываться графический редактор Windows :bye1: Ссылка на комментарий Поделиться на другие сайты Поделиться
daff_9000 Опубликовано 21 марта, 2008 Жалоба Поделиться Опубликовано 21 марта, 2008 daff_9000: Нет, не добавится. Надо вставить в программу не просто название файла, а строку #include "qwerty.h" Тогда - без всяких якобы. Смотри мой пример в 22-м посте этой темы. А как указать, в каком месте он должен добавться ? :bye1: Ссылка на комментарий Поделиться на другие сайты Поделиться
daff_9000 Опубликовано 21 марта, 2008 Жалоба Поделиться Опубликовано 21 марта, 2008 error C2601: 'function' : local function definitions are illegal Error executing cl.exe. из-за чего может возникать данная ошибка еомпилятора ? Microsoft Visual C++ 6.0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 21 марта, 2008 Жалоба Поделиться Опубликовано 21 марта, 2008 А как указать, в каком месте он должен добавться ?Где будет строка с #include, там и лдобавится. На этом самом месте, вместо этой строки. И не обязательно файл .h, любой указанный текстовый файл. error C2601: 'function' : local function definitions are illegalиз-за чего может возникать данная ошибка еомпилятора ? Он же пишет - неверное описание функции. Например, бывает, когда одна функция описана внутри другой функции. Ссылка на комментарий Поделиться на другие сайты Поделиться
daff_9000 Опубликовано 26 марта, 2008 Жалоба Поделиться Опубликовано 26 марта, 2008 Подскажите пожалуйста, как сделать пароль к програмке. Я это реализовал след. образом, возможно и не рационально... =) ... int x; cin >> x; if (x = 6667) здесь код саймой программы else cout >> Пароль неверный ... Два вопроса =) : 1) Как можно сделать иначе ? =) 2) Как можно сделать, что бы пароль мог содержать текст... ну что то типо if ( x = pass) и т.д. =) Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 26 марта, 2008 Жалоба Поделиться Опубликовано 26 марта, 2008 1) Зачем же код программы помещать внутри if ? Лишний уровень вложенности запутывает программу. Лучше просто ввести проверку, если она прошла - иднм дальше, не прошла - застреваем на этом месте (это, конечно, вариант для дилетантов, хорошая программа не должна обижать взломщика - должно запуститься что-нибудь безобидное, пусть думает, что пароль подошел :) ). #include <cstring> ... string p,password="mypass"; for(;:) {cin>>p; if(p!=password)cout<<"Error password!"<<endl; else break;} ... 2) Использовать для хранения и ввода пароля строки, как в примере по п.1 (строка с паролем в варианте по примеру должна быть без пробелов). Ссылка на комментарий Поделиться на другие сайты Поделиться
daff_9000 Опубликовано 27 марта, 2008 Жалоба Поделиться Опубликовано 27 марта, 2008 Спасибо!!! Если не трудно, можно на конкретном примере. #include <iostream>float main(float){float a,b;cout << "Vvedite znachenie a:" << endl; cin >> a;cout << "Vvedite znachenie b:" << endl; cin >> b;cout << "a=\t" << b << endl;cout << "b=\t" << a << endl;return 0;} Как модернизировать данный код...? Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 27 марта, 2008 Жалоба Поделиться Опубликовано 27 марта, 2008 (изменено) #include <iostream.h> #include <string.h> float main(float) { float a,b; char p[30],password[30]="mypass"; while(true){cin>>p; if(strcmp(p,password))cout<<"Error password!"<<endl; else break;} cout << "Vvedite znachenie a:" << endl; cin >> a; cout << "Vvedite znachenie b:" << endl; cin >> b; cout << "a=\t" << b << endl; cout << "b=\t" << a << endl; return 0; } Свой пример перевел в стиль C, без использования <cstring> P.S. Строку с оператором while можно сделать немного красивее: while(cin>>p,strcmp(p,password))cout<<"Error password!"<<endl; Изменено 27 марта, 2008 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
daff_9000 Опубликовано 28 марта, 2008 Жалоба Поделиться Опубликовано 28 марта, 2008 Можете вкратце объяснить основной элемент теории про функции, возвращающие более одного результата. Или четкие ссылки укажите плз, на инфу. Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 28 марта, 2008 Жалоба Поделиться Опубликовано 28 марта, 2008 (изменено) Теории чего? Математики или C++? Если речь о C++, то у него нет никакой теории - только описание. И его функции всегда возвращают только один результат, возможно, пустой. Конечно, результат может иметь составные части, как и число 123 можно рассматривать как состоящее из трех результатов - 1, 2 и 3 :bye1: P.S. Функция может также изменять свои аргументы. Это называется побочным эффектом. В принципе этого следует избегать, так как это запутывает программу, вроде использования оператора goto, но довольно часто это используется. "Побочным эффектом функции называется любое изменение функцией состояния программной среды, кроме возврата результата (изменение значений глобальных переменных, выделение и освобождение памяти, ввод-вывод и так далее). Теоретически наиболее правильным является использование функций, не имеющих побочного эффекта (то есть таких, в результате вызова которых возвращается вычисленное значение, и только), хотя на практике приходится использовать функции с побочным эффектом" (Википедия) Изменено 28 марта, 2008 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
daff_9000 Опубликовано 29 марта, 2008 Жалоба Поделиться Опубликовано 29 марта, 2008 Плз. помогите посчитать... дано натурильное n 1/sin1 + 1/(sin1 + sin2) +...+ 1/(sin1+sin2+...+sin(n)) Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 29 марта, 2008 Жалоба Поделиться Опубликовано 29 марта, 2008 (изменено) #include <math.h> ... double s=0,p=0; int n=4; for(int i=1;i<=n;i++){p+=sin(i); s+=1/p;} Естественно, n равно тут 4 только для примера. Изменено 29 марта, 2008 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
daff_9000 Опубликовано 30 марта, 2008 Жалоба Поделиться Опубликовано 30 марта, 2008 #include <math.h> ... double s=0,p=0; int n=4; for(int i=1;i<=n;i++){p+=sin(i); s+=1/p;} Естественно, n равно тут 4 только для примера. Спаибо ! А что здесь означает s+ и p+ ? А да, и зачем тут начальное нулевое значение присваивается ? для s и p Ссылка на комментарий Поделиться на другие сайты Поделиться
valek_g00d_man Опубликовано 30 марта, 2008 Жалоба Поделиться Опубликовано 30 марта, 2008 daff_9000 p+=sin(i); s+=1/p;А что здесь означает s+ и p+ ? Если я не ошибаюсь, то это упращенная запись для : p=p+sin(i);s=s+1\p; А нулевое значение присвоено для того, чтобы первый расчет при проходе цикла получился корректным. Ссылка на комментарий Поделиться на другие сайты Поделиться
daff_9000 Опубликовано 18 мая, 2008 Жалоба Поделиться Опубликовано 18 мая, 2008 Помогите плиз с лабой, расскажите алгоритм написания, и что означает инвертирование одномер. массива ? ((( Написать программу, выполняющую инвертирование трех одномерных массивов: A(20),B(10) C(15). Напишите функции : 1. Заполнения массива случайными числами в диапазоне от –50 до +50. 2. Вывода одномерного массива. 3. Инвертирования одномерного массива. Ссылка на комментарий Поделиться на другие сайты Поделиться
daff9000 Опубликовано 8 сентября, 2008 Жалоба Поделиться Опубликовано 8 сентября, 2008 Подскажите как осуществить простенькую программу, скажем, введите число 1 или 2. если один - открыть Paint если 2 - запустить колькулятор ?) Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 8 сентября, 2008 Жалоба Поделиться Опубликовано 8 сентября, 2008 daff9000: Пост. Ссылка на комментарий Поделиться на другие сайты Поделиться
daff9000 Опубликовано 8 сентября, 2008 Жалоба Поделиться Опубликовано 8 сентября, 2008 daff9000: Пост. Извеняюсь за невнимательность... Как я понял, эта функция открывает приложения системы, а как таким же образом открыть любой файл, или запустить программу, скажем World ? Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 8 сентября, 2008 Жалоба Поделиться Опубликовано 8 сентября, 2008 daff9000: Эта функция просто выполняет роль обычной командной строки, то есть вызывает командный интерпретатор (командную строку) Windows и передает ему свой аргумент. calc.exe или mspaint.exe запускаются так просто потому, что эти программы лежат в папках, которые командный интерпретатор автоматически просматривает при поиске указанного файла, эти папки можно задать в настройках Windows, исходно это несколько системных папок вроде папки WINDOWS. Если надо запустить произвольную программу, то надо дать в параметре функции system полный путь к выполняемому файлу, чтобы командный интерпретатор его нашел. Например, если Word (это только пример, на самом деле адрес, скорее всего, будет отличаться) имеет полный адрес C:\Office\winword.exe, то вызывать его надо командой system("C:\\Office\\winword.exe"). Знаки \ тут удваиваются из-за правил записи строковых констант в C и C++, потому что знак \ относится к специальным знакам. Если в пути есть папки с пробелами в именах, то еще немного сложнее. Тогда надо указывать либо короткие имена папок (в них нет пробелов), либо использовать, как обычно, длинные имена с пробелами, но передаваемую командному интерпретатору строку заключать в кавычки (и не забыть при этом, что знак кавычек для строковых констант C и C++ также является специальным знаком). Поэтому, если бы тот же Word находился в папке C:\My Office, то есть в имени папки имелся пробел, то вызов Word'а выглядел бы так: system("\"C:\\My Office\\winword.exe\"") C и C++ - очень мощные, но "нечеловеческие" языки, созданные профессионалами для профессионалов и заполненные всякими исключениями и фокусами, в их синтаксисе легко запутаться. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти