Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите разобраться с задачками, язык си 
:(
    Опции темы
ask0Ld
Дата 20.3.2012, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 20.3.2012

Репутация: нет
Всего: нет



Здравствуйте. Мне на завтра нужно сделать две задачки по Си, помогите пожалуйста разобраться. Я с компилировал их, результаты получил. Но мне нужно понять сам код, разобраться в нем, почему выходит такой результат и что за чем идет... 

1) В C-программе объявлен массив и переменную:
Код

int d[]={5,10,3,1,7}, k=8;

Какое значение будет иметь переменная k после выполнения указанного ниже оператора?
Код

k-=d[1]%2>0 ? k/3 : 10-d[4]/3;


2) В программе объявлены символьная строка и указатель:
Код

char sr[50]="The new text", *p=&sr[8];

Что будет напечатано после выполнения следующего фрагмента программы?
Код

while (*p!=' ' && *p!='\0') {
       *p=toupper (*p); p++; }
puts(sr);

PM MAIL   Вверх
mes
Дата 20.3.2012, 19:53 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



и что именно не понятно ?


--------------------
PM MAIL WWW   Вверх
ask0Ld
Дата 20.3.2012, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 20.3.2012

Репутация: нет
Всего: нет



ну например этот код не понятен:
Код

k-=d[1]%2>0 ? k/3 : 10-d[4]/3;


и какие действия выполняет *р в цикле:
Код

while (*p!=' ' && *p!='\0') {
       *p=toupper (*p); p++; }
puts(sr);

PM MAIL   Вверх
mes
Дата 20.3.2012, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(ask0Ld @  20.3.2012,  19:15 Найти цитируемый пост)
ну например этот код не понятен


Код

k-=  // к уменьшить на
  d[1]%2>0 //  d[1] не делится без остатка ?
   ?  k/3            // если да к/3
   : 10-d[4]/3;  // иначе  10-d[4]/3


Код

while (*p!=' ' && *p!='\0')  // пока не пробел и не конец строки
{                                    
       *p=toupper (*p);  // привести к верхнему регистру
         p++;            //    перейти к следующему символу
}



Это сообщение отредактировал(а) mes - 20.3.2012, 20:52


--------------------
PM MAIL WWW   Вверх
Фантом
Дата 20.3.2012, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: 4
Всего: 49



Цитата(ask0Ld @  20.3.2012,  21:15 Найти цитируемый пост)
ну например этот код не понятен:


Разбор "по порядку" из k вычитается значение, равное k/3, если d[1] при делении на 2 дает в остатке нечто, большее 0, или равное 10-d[4]/3 (в противном случае).
d[1] равно 10, оно делится на 2 нацело, поэтому нас интересует "противный случай", 10-d[4]/3=10-7/3=10-2=8. Итого k=k-8=8-8=0.

Цитата(ask0Ld @  20.3.2012,  21:15 Найти цитируемый пост)

и какие действия выполняет *р в цикле:

Это просто проход по строчке, указатель p на каждом шаге цикла указывает на очередной символ строки. Соответственно, вся конструкция имеет такой смысл: пока очередной символ не является пробелом или концом строки, переделываем его в заглавную букву и переходим к следующему символу.
PM   Вверх
ask0Ld
Дата 20.3.2012, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 20.3.2012

Репутация: нет
Всего: нет



Спасибо! Тепер прояснилось все)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0442 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.