1 | |
пмогите разобратся...17.03.2012, 16:34. Показов 1500. Ответов 14
Метки нет Все метки)
(
хочу попытатся сам решить задачу но боюсь что буду делать несавсем то что нужно ..задача из подбельского ..
Код
// ----------------------------------------- Модуль 1 ------------------------------------- //РЗ-10-1.СРР - первый файл многомодульной программы #include <iostream> // Для К - внешнее связывание int counter(void); // Для counter - внешнее связывание int main (void) { int K = 0; static int K_IN =0; // Для К_IN - внутреннее связывание К += ++K_IN; } // ----------------------------------------- Модуль 2 ------------------------------------- //РЗ-10-2.СРР - второй (основной) файл программы #include <iostream> int main(void) { void counter (void); // Прототип - внешнее связывание void display (void); // Прототип - внешнее связывание // К - локальный объект - внутреннее связывание: for (int K = 0; K < 3; K++) { cout << "\nПараметр цикла К =" << K; counter (); // Изменяет свою К_IN и внешнюю К display (); } } //----------------------------------------- Модуль 3 --------------------------------------- //РЗ-10-З.СРР - третий файл программы #include <iostream> void display (void) // Для display - внешнее связывание { extern int K; // Для К - внешнее связывание static int K_IN = 0; // Для К_IN - внутреннее связывание cout << "\nВнешнее К = " << K++ << " Внутреннее К_IN из функции display = " << K_IN++; } и нет необходимости 2ды задействовать библиотеку иострим... (подскажите правильный ли ход мысли...+есле несложно поподсказывайте полчасика...так как я думаю поданной программе у меня появица еше не 1н вопрос) Добавлено через 40 минут ладно есле влом скоректировать мои дествия хоть намекните направельные дествия или выложите решение....(прост я вбольшей степени изучаю си поприримерам а непонимание правельного решения примера ведет лиш к появлению непонимания самой задачи в целом....
0
|
|
17.03.2012, 16:34 | |
Ответы с готовыми решениями:
14
Пмогите допилить програмку Нужно разобратся, ошибка
Немогу разобратся с идентификатором |
kazak
|
17.03.2012, 16:38
#2
|
Не по теме: Просто не все знакомы с Подбельским, и не понимают в чем заключается задача.
0
|
17.03.2012, 17:35 [ТС] | 3 |
эх еслеб я эт доконца понимал.... как я понимаю надо написать 1ну программу состояшую из 3х связанных между собой программ...но чесноговоря моему мозгу такую задачу не переварить посему я решил что это все записывается ввиде 1й программы но чем сильней я пытался понять логику выполнения программы тем сильней мягкоговоря запутывался в ней..(вот цитата с подбельского)
Параметр цикла К = О Внешнее К = 1 Внутреннее K_IN из функции display = 0 Параметр цикла К = 1 Внешнее К = 4 Внутреннее K_IN из функции display = 1 Параметр цикла К = 2 Внешнее К = 8 Внутреннее K_IN из функции display = 2 +чесно говоря я недоконца понимаю данный цикл.... +есле есть время подскажите и собственно помогите скоректировать действия есле времени нет дайте код правельной программы(конечн самому решить хочеца но коли с этим непоможете так хоть смысл боле менее пойму) ибо шас я очень неуверен что сам осилю ее попровить.... Добавлено через 15 минут вообше я не очень помонимаю работу строчек counter (); display (); может подскажете ....+ я так понимаю библиотеку 2ды задавать не надо задаем ее в 1модуле.. и записываем как 1ну программу или я планирую не то решение? Добавлено через 23 минуты +несовсем понимаю как записать правельно строчку К += ++K_IN есле через фор и предположить что имелось ввиду K+ = K_IN++ то неполучаеца.... Добавлено через 1 минуту ну хоть скажите чтонить (да я невеликий програмист а начинаюший...и делаю и думаю много глупостей но ведь все с этого начинали и без помоши непродвинулись бы дальше..)
0
|
Жарю без масла
867 / 749 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
|
|
17.03.2012, 17:36 | 4 |
0
|
17.03.2012, 17:49 [ТС] | 5 |
Тип компоновки, или тип связывания, определяет соответствие идентификатора конкретному объекту или функции в программе, исходный текст которой размещен в нескольких файлах (модулях). В этом случае каждому имени, используемому в нескольких файлах, может соответствовать либо один объект (функция), общий для всех файлов, либо по одному и более объектов в каждом файле. Файлы программы (модули) могут транслироваться отдельно, и в этом случае возникает проблема установления связи между одним и тем же идентификатором и единственным объектом, которому он соответствует. Такие объекты (функции) и их имена нуждаются во внешнем связывании, которое выполняет компоновщик (редактор связей) при объединении отдельных объектных модулей программы. Для остальных объектов (функций), которые локализованы в файлах, используется внутреннее связывание.
Тип компоновки (связывания) никак специальным образом не обозначается при определении объектов и описании имен, а устанавливается компилятором по контексту, местоположению этих объявлений и использованию спецификаторов класса памяти static и extern. Например, имена статических объектов (static) локализованы в своем файле и могут быть использованы как имена других объектов и функций в других независимо транслируемых файлах. Такие имена имеют внутренний тип компоновки (связывания). Если имена объектов или функций определены со спецификатором extern, то имя будет иметь внешний тип компоновки (связывания). Рассмотрим следующую программу, функции которой и определения переменных рассредоточены по трем текстовым файлам: (моя программа) Результат выполнения: Параметр цикла К = О Внешнее К = 1 Внутреннее K_IN из функции display = 0 Параметр цикла К = 1 Внешнее К = 4 Внутреннее K_IN из функции display = 1 Параметр цикла К = 2 Внешнее К = 8 Внутреннее K_IN из функции display = 2 Анализируя текст и результаты программы, обратите внимание на следующее: внешняя переменная с именем K является общей для файлов 1 и 3 (внешнее связывание); внутренняя переменная с именем K существует только в основном модуле; статические переменные с именем K_IN различны в модулях 1 и 3, т.е. это различные объекты с одинаковым именем. Для каждого из них реализуется внутреннее связывание. Для некоторых имен тип компоновки не существует. К ним относятся параметры функций, имена объектов, локализованных в блоке (без спецификаторов extern), идентификаторы, не являющиеся именами объектов и функций (например, имя введенного пользователем типа). вот все что внем есть..ей богу...+сори думал вы покомандам из программы помете...ну хоть часть ошибок/((( эх попытался сам сделать только напладил ошибок и потерял веру в свои силы=( вот что вышло витоге
0
|
Жарю без масла
867 / 749 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
|
|
17.03.2012, 18:07 | 6 |
за то, что не поленился переписать книгу, респект. но поставленной задачи, которую ты хочешь выполнить тут нет.
раз уж ты не поленился могу сказать следующее: данные 3 файла - это не общие файлы одной программы, а 3 её варианта. тут демонстрация разных вариантов связывания. сама прога должна собираться из одного из показанных тобой вариантов исходников и другого(других), где для каждого варианта определены ф-ии (counter() и display()) и внешние переменные(extern int K; для з-го случая)
1
|
17.03.2012, 18:19 [ТС] | 7 |
блиннн ну больше то програм там не дано....чтото я запутался но спс что внес хоть какуюто ясность по поводу моих чшетных попыток...
ладно наверно забью на эту задачу можеш дать любую другую на эту тему.... правитльно решенную... пожалуйста... я весь день потратил чтоб понять эту тему немогуш я засегодня вообше нечего непонять(((
0
|
Жарю без масла
867 / 749 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
|
|
17.03.2012, 18:32 | 8 |
ты так и не понял, что от тебя требовалось?
надо просто сказать:
1
|
Жарю без масла
867 / 749 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
|
|
17.03.2012, 18:47 | 10 |
1
|
Жарю без масла
867 / 749 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
|
||||||||||||||||||||||||||
17.03.2012, 19:20 | 12 | |||||||||||||||||||||||||
не знаю на счёт коней, но наверно в книге описано о возможности таких вариантов(пишу отсебячину - почти коня):
1. все в одном file.cpp
2. 2 файла: file1.cpp
file2.cpp
3. 2 файла: file1.cpp
file2.cpp
1
|
48 / 48 / 11
Регистрация: 12.03.2012
Сообщений: 108
|
|
17.03.2012, 20:31 | 14 |
алексейч, это префиксный инкремент, те сначала оператор увеличивает значение переменной, а потом, если есть какие-то действия над ней, то их воспроизводит
0
|
Жарю без масла
867 / 749 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
|
|
17.03.2012, 21:09 | 15 |
0
|
17.03.2012, 21:09 | |
Помогаю со студенческими работами здесь
15
Не могу разобратся со строками!
немогу разобратся с kbhit()
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |