Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2013, 00:25   #1
_kisa_
 
Аватар для _kisa_
 
Регистрация: 06.05.2013
Сообщений: 4
По умолчанию Задачки

Всем привет) Помогите пожалуйста решить две задачи по программированию .. совершенно не разбираюсь, но хотела бы понять все это дело...буду очень благодарна за ценные советы..

1. Применительно к числам, в представлении которых использован дополнительный код, выражение х& = (x-1) уничтожает самую правую 1 в х. Объясните почему. Используйте это наблюдение для более быстрого варианта функции bitcount , подсчитывающей число единиц в двоичном представлении своего аргумента.

2. Описать структуру с именем STUDENT, содержащую следующие поля:
а. Фамилия и имя (строка 15 символов),
б. Год рождения (целое неотрицательное число)
в. Номер группы (число целое или строка из 3-х символов)
г. Оценки за сессию по 4-м предметам (массив из четырех типа float)
Разработать программу, выполняющую следующую функцию:
Распечатать фамилии тех учеников, которые не получили ни одной тройки за последнюю сессию, с указанием их оценок, среднего балла и группы.
_kisa_ вне форума Ответить с цитированием
Старый 06.05.2013, 18:16   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
1. Применительно к числам, в представлении которых использован дополнительный код, выражение х& = (x-1) уничтожает самую правую 1 в х.
Возьмите x=1, 17, 28, 48. В каждом случае запишите двоичное представление x и двоичное представление x-1 друг под другом. примените к ним операцию & (поразрядное "И"). Убедитесь, что и впрямь во всех случаях исчезает самая правая единица и ничего больше. Попробуйте объяснить, почему то же самое произойдёт, если взять какое-нибудь ещё значение x (в двоичной записи **...**100...0, где * - произвольная цифра).

Цитата:
2. Описать структуру с именем STUDENT, содержащую следующие поля:
а. Фамилия и имя (строка 15 символов),
б. Год рождения (целое неотрицательное число)
в. Номер группы (число целое или строка из 3-х символов)
г. Оценки за сессию по 4-м предметам (массив из четырех типа float)
Разработать программу, выполняющую следующую функцию:
Распечатать фамилии тех учеников, которые не получили ни одной тройки за последнюю сессию, с указанием их оценок, среднего балла и группы.
Что первое из этого списка Вы не можете сделать? Приведите код для тех пунктов, которые Вы можете сделать.
1) Объявить переменную, хранящую целое неотрицательное число;
2) Объявить переменную, хранящую строку длиной 15 символов;
3) Объявить структуру STUDENT;
4) Объявить массив элементов типа STUDENT;
5) Заполнить структуру STUDENT данными, вводимыми пользователем;
6) Проверить для заданной переменной типа STUDENT, верно ли, что среди оценок в ней нет троек;
7) Вывести для заданной переменной типа STUDENT фамилию, оценки, средний балл и группу.
Abstraction вне форума Ответить с цитированием
Старый 06.05.2013, 20:14   #3
_kisa_
 
Аватар для _kisa_
 
Регистрация: 06.05.2013
Сообщений: 4
Печаль

Abstraction, у меня проблема в составлении программы совершенно не знаю что делать.. я нашла объяснение для первой задачи и функцию bitcount тоже нашла..а что и как Это вообще проблемааа!

Исходный bitcount() выглядит так:
/* bitcount: подсчет единиц в х */
int bitcount(unsigned x)
{
int b;
for (b = 0; x != 0; x >>= 1)
if (x & 01)
b++;
return b;
}


Объяснение. Если х нечетно, то (х-1) имеет такое же битовое представление как и х, за исключением того, что крайний правый бит в нем равен 0. В этом случае (х & (х-1)) == (х-1). Если же х четно, то в представлении (х-1) нули, стоявшие в х справа становятся единицами, а крайняя правая единица -- нулем. Конъюнкция х & (х-1) очищает эти позиции вплоть до того места, когда встретит единицы в представлениях обоих чисел (т.е. единицу, бывшую в x до этого шага второй справа).

Новая версия bitcount():
int bitcount(unsigned x)
{
int b;
for (b = 0; x != 0; x &= (x-1))
b++;
return b;
}
_kisa_ вне форума Ответить с цитированием
Старый 07.05.2013, 09:29   #4
Радик29
Пользователь
 
Регистрация: 26.12.2012
Сообщений: 90
По умолчанию

У меня есть решение для вашей задачи , написана на языка C, посмотрите
Вложения
Тип файла: doc Решение.doc (54.0 Кб, 18 просмотров)
Радик29 вне форума Ответить с цитированием
Старый 07.05.2013, 12:52   #5
_kisa_
 
Аватар для _kisa_
 
Регистрация: 06.05.2013
Сообщений: 4
По умолчанию

Большое спасибо
_kisa_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задачки by_Igorek Общие вопросы Delphi 1 25.04.2013 01:43
Задачки skin11 Помощь студентам 2 20.05.2012 18:41
Задачки на Паскале помогите пожалуйста решить 2 задачки, а то отчислят. плиз VADOS2009-1 Помощь студентам 0 03.06.2009 18:11
2 задачки Lemo Помощь студентам 1 27.11.2008 13:00