Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
ПростоЯ
184 / 101 / 1
Регистрация: 30.05.2009
Сообщений: 749
#1

Что получится из кода - C++

22.03.2013, 16:05. Просмотров 619. Ответов 15
Метки нет (Все метки)

Необходимо описать результат выполнения программы:
1) Что получится из кода
2) Название: 2p.jpg
Просмотров: 68

Размер: 32.8 Кб
3) Название: 3p.jpg
Просмотров: 69

Размер: 26.9 Кб
4) Что получится из кода
5) Что получится из кода
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2013, 16:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Что получится из кода (C++):

Как циклически организовать задание значений, пока не получится то, что надо - C++
Делал игру кубики нужно сделать ничью что бы когда выбивало два одинаковых значений перекручивало сначала если нету два одинаковых значения...

В этой части кода происходит объявление функций? Что такое void? Что в скобках? - C++
В этой части кода происходит объявление функций? Что такое void? Что в скобках? void get(float **mas, int N, int M); void...

Что такое заголовочный файл? Что такое файл исходного кода? Рассмотрите назначение каждого из них - C++
Что такое заголовочный файл? Что такое файл исходного кода? Рассмотрите назначение каждого из них пожалуйста.

Сколько квадратов получится - C++
Помогите решить... Желательно пример кода. (Только c++) Полоска бумаги имеет размеры A×B. Каждый раз от нее отрезается квадрат...

Что происходит в строке кода - C++
Всем привет. В буфере хранится путь, я нахожу последнюю точку и зануляю (конец строки). buffer = 0; Как из указателя на точку...

Какая получится кодировка на винде? - C++
std::wofstream XML; XML.open(Name.c_str()); XML<<L"<?xml version=\"1.0\" encoding=\"UTF\"?>"<<std::endl; XML<<L"<root>"<<std::endl; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
fjay69
85 / 85 / 1
Регистрация: 26.10.2012
Сообщений: 248
22.03.2013, 16:15 #2
1) обращение к процедуре ampersand. поскольку внутри метода создаются копии n и k,
исходные переменные не изменятся. printf выведет "n=5 k=10"
2) поочередное сравнение переменной и. Т.к. i=2, ночего не произойдет (case 2: )
хотя case 2 может быть просто меткой. Тогда вызывается default (на экран выводится 9)
3) 15 раз на экран выводится результат битового И 1 и 7;
4) в процедуру init передаётся указатель на v, но указателю присваивается адрес новой памяти
Поэтому cout<<v выведет 20
5) это тоже побитовое И
saaresto
9 / 9 / 0
Регистрация: 22.03.2013
Сообщений: 23
22.03.2013, 16:20 #3
Цитата Сообщение от fjay69 Посмотреть сообщение
обращение к процедуре ampersand. поскольку внутри метода создаются копии n и k,
Как раз-таки нет, копия создается только для n, а k передаётся по ссылке
fjay69
85 / 85 / 1
Регистрация: 26.10.2012
Сообщений: 248
22.03.2013, 16:22 #4
Цитата Сообщение от saaresto Посмотреть сообщение
Как раз-таки нет, копия создается только для n, а k передаётся по ссылке
Ох, точно. Проморгал)
ПростоЯ
184 / 101 / 1
Регистрация: 30.05.2009
Сообщений: 749
22.03.2013, 16:29  [ТС] #5
А можно еще такого типа задачки вставить, что бы так же ответили) Я так понимаю - для вас это как орешки)) если, кончено же, вас не затруднит
saaresto
9 / 9 / 0
Регистрация: 22.03.2013
Сообщений: 23
22.03.2013, 16:31 #6
Цитата Сообщение от ПростоЯ Посмотреть сообщение
А можно еще такого типа задачки вставить, что бы так же ответили) Я так понимаю - для вас это как орешки)) если, кончено же, вас не затруднит
Лучше уж разбираться в этом, чем готовые ответы получать
ПростоЯ
184 / 101 / 1
Регистрация: 30.05.2009
Сообщений: 749
22.03.2013, 16:34  [ТС] #7
Цитата Сообщение от saaresto Посмотреть сообщение
Лучше уж разбираться в этом, чем готовые ответы получать
Дело в том, что специальность совсем другая, а эти задачки необходимо решить. Проще обратиться к людям, для которых это не составит абсолютно никакого труда, нежели учить то, что тебе совсем не пригодиться по твоей профессии.
Taatshi
22.03.2013, 16:35
  #8
 Комментарий модератора 
ПростоЯ, задание на форум перепечатываем ручками. Предупреждение.
igor001
8 / 3 / 1
Регистрация: 12.02.2013
Сообщений: 68
22.03.2013, 16:42 #9
Цитата Сообщение от fjay69 Посмотреть сообщение
2) поочередное сравнение переменной и. Т.к. i=2, ночего не произойдет (case 2: )
хотя case 2 может быть просто меткой. Тогда вызывается default (на экран выводится 9)
а разве если не ставить после выполнения тела case break; следующий case не выполниться?

Добавлено через 2 минуты
Цитата Сообщение от fjay69 Посмотреть сообщение
3) 15 раз на экран выводится результат битового И 1 и 7;
а как же "i++;"? по идее должно выводиться побитовое И для всех чисел от 1 до 15 И 7
ПростоЯ
184 / 101 / 1
Регистрация: 30.05.2009
Сообщений: 749
22.03.2013, 16:45  [ТС] #10
Хорошо, исправлюсь:
6) здесь вывод числа b=213.92222232, да?
C++
1
2
3
4
5
6
#include <stdio.h>
int main()
{
double b = 213.492222232;
printf("%i",(int)(b+.5));
}
7)
C++
1
2
3
4
5
6
7
8
9
#include <stdio.h>
int main() {
int m,i=1;scanf("%d",&m);
while(i<=m)
{
printf("%d%c",i*i,(i%6==0 || i==m)? '\n':' ');
i++;
}
}
8)
C++
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
int main()
{
int i=1;
while(i<=5)
{
printf("%d ",i<<5);
i++;
}
}
9)
C++
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
int main()
{
int i=1;
while(i<=6)
{
printf("%d ",~i&1);
i++;
}
}
10)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <exception>
using namespace std;
class a {
public:
virtual void f(int) { cout<<"a int"; }
virtual void f(char*) { cout<<"a char*"; }
};
class b : public a {
public:
virtual void f(char*) { cout<<"b char*"; }
};
int main (void) {
b* o = new b;
o->f(0);
return 0;
}
igor001
8 / 3 / 1
Регистрация: 12.02.2013
Сообщений: 68
22.03.2013, 17:07 #11
Цитата Сообщение от fjay69 Посмотреть сообщение
4) в процедуру init передаётся указатель на v, но указателю присваивается адрес новой памяти
Поэтому cout<<v выведет 20
в процедуру передается указатель (т.е. внутри функции сейчас *v, просто название у него другое) затем x = new int выделяем память для типа int, фактически указатель v теперь указывает в другую область памяти нежели до входа в функцию, затем *x = 10 изменяем переменную по указателю, так что должно вывести 10. хотя я могу и ошибаться))

Добавлено через 1 минуту
6) нет, число будет усечено до int 213

Добавлено через 8 минут
7) пока i будет меньше m будет выводиться квадрат i и (если i делиться на 6 без остатка или i равно m выведется конец строки иначе пробел) т.е. выводет квадрат всех чисел до заданного через пробел
8) не уверен, но должно вывести 5 и все
9) выполняет побитовое И, результат побитово инвертирует (0 заменяет на 1, а 1 на 0)

10) точно не знаю))

Добавлено через 7 минут
10) точно не знаю)) но, возможно, если я не ошибаюсь, будет вызвана виртуальная ф-ция класса а f(int) { cout<<"a int"; }
Kastaneda
Форумчанин
Эксперт С++
4652 / 2860 / 228
Регистрация: 12.12.2009
Сообщений: 7,268
Записей в блоге: 2
Завершенные тесты: 1
22.03.2013, 18:28 #12
10ый код интересный.
Цитата Сообщение от igor001 Посмотреть сообщение
10) точно не знаю)) но, возможно, если я не ошибаюсь, будет вызвана виртуальная ф-ция класса а f(int) { cout<<"a int"; }
будет b::f(char*). Прикол в том, что если изменить аргумент в b::f(char*) на int, то опять же будет вызвана она, т.е. b::f(int).
Тут рарешение имен работает так: сначала ищется функия в самом классе, если не найдена, то ищется в базовом. Если в классе есть 2 функции с подходящей сигнатурой, то в дело вступает преобразование типов (если надо). Если в классе есть только одна функция с подходящей (после преобразования типа) сигнатурой, то выбирается она, даже если в базовом классе есть функция с точно подходящей сигнатурой (т.е. без преобразования типа).

Вот пример
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class a {
public:
    virtual void f(int) { cout<<"a int" << std::endl; }
    virtual void f(const char*) { cout<<"a const char*"<< std::endl; }
    virtual void f(bool) { cout<<"a bool"<< std::endl; }
};
 
class b : public a {
public:
    virtual void f(bool) { cout<<"b bool"<< std::endl; }
};
 
int main () {
    b* o = new b;
    o->f("asfd");
    return 0;
}
несмотря на то, что в классе а есть подходящая функция, вызовется b::f(bool), т.к. она подошла после преобразования const char* в bool.
ПростоЯ
184 / 101 / 1
Регистрация: 30.05.2009
Сообщений: 749
25.03.2013, 16:34  [ТС] #13
Цитата Сообщение от igor001 Посмотреть сообщение
7) пока i будет меньше m будет выводиться квадрат i и (если i делиться на 6 без остатка или i равно m выведется конец строки иначе пробел) т.е. выводет квадрат всех чисел до заданного через пробел
у меня при компилировании этого кода всегда выводит через пробел квадрат каждого числа до введенного. Никакое условие с 6-кой не соблюдается. Почему так?

Добавлено через 3 минуты
Цитата Сообщение от igor001 Посмотреть сообщение
8) не уверен, но должно вывести 5 и все
странно, выводится на экран следующие цифры через пробел: 32 64 96 128 160...не понятно,от куда из условия это взялось.

Добавлено через 9 минут
Цитата Сообщение от igor001 Посмотреть сообщение
9) выполняет побитовое И, результат побитово инвертирует (0 заменяет на 1, а 1 на 0)
на экран вывелось: 0 1 0 1 0 1
но в условие же нет, что изначально задано число 1 0 1 0 1 0...
igor001
8 / 3 / 1
Регистрация: 12.02.2013
Сообщений: 68
26.03.2013, 13:29 #14
C++
1
(i%6==0 || i==m)? '\n':' '
можно записать как:
C++
1
2
if(i%6 == 0 || i == m) '\n';
else ' ';
оператор % означает остаток от деления. дело в том что, как выяснилось, проверка условия вообще не выполняется, во всяком случае в моем компиляторе ). причину я не знаю, но если записать вариант if/else то компилятор будет ругаться, а короткую запись условия он, видимо, попросту игнорирует. через пробел из-за того, что ожидается char после числа, но так как char не выводится то вместо него появляется пробел

Добавлено через 20 минут
8) дико извиняюсь. я почему-то думал что operator << в данном случае это как считывание из потока, а это оператор сдвига. т.е. цифра 1 типа int занимает 8 бит памяти и побитово кодируется как: "00000001" соответственно совершив операцию сдвига единицы на 5 (1<<5) получим "00100000" что есть число 32. то же самое происходит для остальных чисел до 5 включительно

Добавлено через 11 минут
9) пардон, операции ведь выполняются с лева на право. итак: 1 это (для простоты обойдемся четырьмя битами) "0001", соответственно "~1" == "1110" тогда "1110&0001" == "0" (см. побитовые операции с++ в Internet). возьмем, к примеру следующий вариант: "~3&1". "3" == "0011", "~3" == "1100", "1100&0001" == "1".

Добавлено через 16 минут
10) когда я отписывался в эту тему, я только начал читать раздел о виртуальных функциях, и не совсем понимал как они работают, но теперь, я думаю что все-таки будет вызвана функция класса "b". Виртуальные функции замещаются функциями производных классов, а так как класс "b" производный от класса "а" и функция "f()" была вызвана из объекта класса "b" то будет вызвана именно функция класса "b".
Цитата Сообщение от Kastaneda Посмотреть сообщение
сначала ищется функия в самом классе, если не найдена, то ищется в базовом.
функция искалась бы, если была бы вызвана функция класса "а" так как функция "f()" перегружена несколько раз. ув. Kastaneda поправьте если не прав имхо нуб еще, но судя по тому что я на данный момент знаю логика привела меня именно к такому ответу

Добавлено через 2 минуты
хотя ответ такой-же но логика немного другая
Kastaneda
Форумчанин
Эксперт С++
4652 / 2860 / 228
Регистрация: 12.12.2009
Сообщений: 7,268
Записей в блоге: 2
Завершенные тесты: 1
26.03.2013, 13:35 #15
Цитата Сообщение от igor001 Посмотреть сообщение
я думаю что все-таки будет вызвана функция класса "b".
А что гадать? Скомпилируй да запусти)

Цитата Сообщение от igor001 Посмотреть сообщение
функция искалась бы, если была бы вызвана функция класса "а" так как функция "f()" перегружена несколько раз. ув. Kastaneda поправьте если не прав имхо нуб еще, но судя по тому что я на данный момент знаю логика привела меня именно к такому ответу
Ничего не понял%)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.03.2013, 13:35
Привет! Вот еще темы с ответами:

Что значит это строка кода? - C++
int _tmain(int argc, _TCHAR* argv) Объясните пожалуйста что значит этот участок кода, или дайте ссылку на какой либо ресурс для...

Что означает данная строчка кода? - C++
#define MASSIZE(x) (sizeof(x)/sizeof(x)) можете пожалуйста объяснить что это значит?

Что означает это фрагмент кода? - C++
int N_Max(int* A,int N){ int i,k=0; for(i=1;i&lt;N;i++) if(A&lt;A)k=i; return k; }

Объясните, что происходит в строчках кода, C++ - C++
Объясните, пожалуйста, строчки кода для задания, вкратце, для чего каждая вводится или что означает, начиная с bool ReadFile( fstream...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
26.03.2013, 13:35
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru