2 / 2 / 0
Регистрация: 22.02.2012
Сообщений: 66
Записей в блоге: 1
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++;
}
как я понимаю программа аналогична ...
//РЗ-08.СРР - инициализация и существование локальных статических объектов
#include <iostream>


using namespace std;

int counter (void); // Прототип функции

int main(void)
{

int K = 3; // Локальная переменная функции main
for (; K != 0; K--)
{

cout << "\nАвтоматическая К = " << K;
cout << "\tСчетчик=" << counter();
}
return 0 ;
}

int counter (void) // Определение функции
{
static int K; // Статическая переменная,
return ++K; // локализованная в теле функции
}
вообшем я так понимаю что надо частично поменять частями части программы из модулей...
и нет необходимости 2ды задействовать библиотеку иострим...
(подскажите правильный ли ход мысли...+есле несложно поподсказывайте полчасика...так как я думаю поданной программе у меня появица еше не 1н вопрос)

Добавлено через 40 минут
ладно есле влом скоректировать мои дествия хоть намекните направельные дествия или выложите решение....(прост я вбольшей степени изучаю си поприримерам а непонимание правельного решения примера ведет лиш к появлению непонимания самой задачи в целом....
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.03.2012, 16:34
Ответы с готовыми решениями:

Пмогите допилить програмку
#include &lt;iostream&gt; using namespace std; int main() { struct list { int data; list...

Нужно разобратся, ошибка
Здравствуйте. Компилятор выдаёт ошибку в строке find = true; ... cout &lt;&lt; &quot; Print...

Не могу разобратся с ошибкой
Здравствуйте, есть такой вот код: #pragma once #include &lt;windows.h&gt; class PerformanceTimer {...

Немогу разобратся с идентификатором
Доброе время суток! В общем создал Win32 проект (dll библиотеки, с использованием MFC). Добавил...

14
kazak
17.03.2012, 16:38
  #2

Не по теме:

Просто не все знакомы с Подбельским, и не понимают в чем заключается задача.

0
2 / 2 / 0
Регистрация: 22.02.2012
Сообщений: 66
Записей в блоге: 1
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
вам уже сказали
Цитата Сообщение от kazak Посмотреть сообщение
не все знакомы с Подбельским, и не понимают в чем заключается задача.
ждите телепатов
0
2 / 2 / 0
Регистрация: 22.02.2012
Сообщений: 66
Записей в блоге: 1
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), идентификаторы, не являющиеся именами объектов и функций (например, имя введенного пользователем типа).
вот все что внем есть..ей богу...+сори думал вы покомандам из программы помете...ну хоть часть ошибок/(((
эх попытался сам сделать только напладил ошибок и потерял веру в свои силы=(
вот что вышло витоге
//РЗ-10-1.СРР - первый файл многомодульной программы
#include <iostream>

using namespace std;
int counter(void);
int display(void);
int main ()
{
int K = 0;
static int K_IN =0;
К = K_IN++
}

// ----------------------------------------- Модуль 2 -------------------------------------

//РЗ-10-2.СРР - второй (основной) файл программы
#include <iostream>
void main (void)
{ void counter(void); // Прототип - внешнее связывание
void display(void); // Прототип - внешнее связывание
// К - локальный объект - внутреннее связывание:
for (int K = 0; K < 3; K++)
{ cout << "\nПараметр цикла К =" << K; // Изменяет свою К_ IN и внешнюю К
}
return 0 ;
}

//----------------------------------------- Модуль 3 ---------------------------------------

//РЗ-10-З.СРР - третий файл программы
#include <iostream>
void main(void)
{void display(void); // Для display - внешнее связывание
extern int K; // Для К - внешнее связывание static
int K_IN = 0; // Для К_IN - внутреннее связывание
cout << "\nВнешнее К = " << K++ << " Внутреннее К_IN из функции display = " << K_IN++;
}
0
Жарю без масла
867 / 749 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
17.03.2012, 18:07 6
за то, что не поленился переписать книгу, респект. но поставленной задачи, которую ты хочешь выполнить тут нет.
раз уж ты не поленился могу сказать следующее:
данные 3 файла - это не общие файлы одной программы, а 3 её варианта. тут демонстрация разных вариантов связывания.
сама прога должна собираться из одного из показанных тобой вариантов исходников и другого(других), где для каждого варианта определены ф-ии (counter() и display()) и внешние переменные(extern int K; для з-го случая)
1
2 / 2 / 0
Регистрация: 22.02.2012
Сообщений: 66
Записей в блоге: 1
17.03.2012, 18:19  [ТС] 7
блиннн ну больше то програм там не дано....чтото я запутался но спс что внес хоть какуюто ясность по поводу моих чшетных попыток...
ладно наверно забью на эту задачу можеш дать любую другую на эту тему.... правитльно решенную...
пожалуйста...
я весь день потратил чтоб понять эту тему немогуш я засегодня вообше нечего непонять(((
0
Жарю без масла
867 / 749 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
17.03.2012, 18:32 8
ты так и не понял, что от тебя требовалось?
надо просто сказать:
задача: я хочу/пытаюсь сделать то-то, используя то-то, таким-то способом
или что-то в этом роде. лично я не вижу конкретных вопросов.
1
2 / 2 / 0
Регистрация: 22.02.2012
Сообщений: 66
Записей в блоге: 1
17.03.2012, 18:39  [ТС] 9
эх ладн наверн вопрос можн закрыть мой мозг прост вырубаеца.... я хочу сделать эти 3 варианта программы.... используя их состовляюшии какимто способом))
0
Жарю без масла
867 / 749 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
17.03.2012, 18:47 10
Цитата Сообщение от алексейч Посмотреть сообщение
сделать эти 3 варианта программы
и она должна делать... сферического коня в вакууме. так?
1
2 / 2 / 0
Регистрация: 22.02.2012
Сообщений: 66
Записей в блоге: 1
17.03.2012, 18:56  [ТС] 11
да хоть его)))
хоть про коня узнаю ато сегодня много чего насмотрел а понял лиш то что нечего неепонял)))
0
Жарю без масла
867 / 749 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
17.03.2012, 19:20 12
не знаю на счёт коней, но наверно в книге описано о возможности таких вариантов(пишу отсебячину - почти коня):
1. все в одном
file.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
using namespace std;
 
int n;
 
void
fn()
{
    ++n;
}
 
int
main(void)
{
    cout << n << endl;
    fn();
    cout << n << endl;
    return 0;
}


2. 2 файла:
file1.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
using namespace std;
 
int n;
 
int
main(void)
{
    void fn();
    cout << n << endl;
    fn();
    cout << n << endl;
    return 0;
}

file2.cpp
C++
1
2
3
4
5
6
7
extern int n;
 
void
fn()
{
    ++n;
}


3. 2 файла:
file1.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
using namespace std;
 
 
int
main(void)
{
    extern int n;
    void fn();
    cout << n << endl;
    fn();
    cout << n << endl;
    return 0;
}

file2.cpp
C++
1
2
3
4
5
6
7
int n;
 
void
fn()
{
    ++n;
}
1
2 / 2 / 0
Регистрация: 22.02.2012
Сообщений: 66
Записей в блоге: 1
17.03.2012, 19:47  [ТС] 13
хм...возможно....спс....ток есле несложно навпомни что значит ++n
0
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
Цитата Сообщение от алексейч Посмотреть сообщение
что значит ++n
n += 1 === n = n + 1
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.03.2012, 21:09
Помогаю со студенческими работами здесь

Не могу разобратся со строками!
После того как разделил строку на слова как мне вывести все слова с нужной мне буквой. Например:...

Немогу разобратся с задержками
Сейчас пишу на борланде 3.1 игру похожую на марио.. так вот.. немогу избавится от такой проблемы...

немогу разобратся с kbhit()
научите как kbhit() юзать? borland 3.1 если на пробел нажимаю(32) вроде нормально выполняет.. а...

Помогите пожалуста разобратся с функцией
Мне нужно создать функцию, которая возвращала бы сумму элементов побочной диагонали квадратной...


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

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

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