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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2012, 19:20   #1
приправыч
Пользователь
 
Регистрация: 04.12.2012
Сообщений: 12
По умолчанию Несколько задач на С

Первое: выделить все числа, записанные в троичной системе счисления и кратные трем.
Извините за глупый вопрос: но как троичное число, не содержащее тройки в принципе, может быть кратно трем?
Есть пример:
< a12 101 10 201
> 10

Второе: Удалить среднюю цифру числа.

< 278 2899
> 28 2899

Ваши идеи, как реализовать?

Третье: Циклический сдвиг элементов матрицы в строчном представлении на n элементов.

Здесь нужно просто объяснить, что сделать, на примере, а то мне не понятно.
Типа так что ли?
1 3 8 -> 8 1 3
2 4 6 -> 6 2 4
8 7 9 -> 9 8 7

И вопрос в догонку: до каких глав почитать K&R, чтобы суметь реализовать это все?
приправыч вне форума Ответить с цитированием
Старый 04.12.2012, 19:36   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Цитата:
как троичное число, не содержащее тройки в принципе, может быть кратно трем?
Число записано в троичной системе, а кратно трем в десятичной.
Цитата:
Ваши идеи, как реализовать?
Число в строку, вывести начало и конец строки без среднего значения, например.
Цитата:
а то мне не понятно.
Все верно, только сдвиг может быть не на 1 элемент, а более.
Цитата:
до каких глав почитать K&R, чтобы суметь реализовать это все?
Не знаю, не читал.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 04.12.2012, 19:46   #3
приправыч
Пользователь
 
Регистрация: 04.12.2012
Сообщений: 12
По умолчанию

Спасибо.

Цитата:
Сообщение от BDA Посмотреть сообщение
Число в строку, вывести начало и конец строки без среднего значения, например
А Можно поподробнее это разъяснить?
приправыч вне форума Ответить с цитированием
Старый 04.12.2012, 19:55   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
char buf[20];
int num;
scanf("%d", &num);
sprintf(buf, "%d", num);
int len = strlen(buf); 
if (len % 2 == 1) {
    buf[len / 2] = 0;
    printf("%s%s\n", buf, &buf[len / 2 + 1]);
} else {
    printf("%d\n", num);
}
Работает только для положительных чисел (если число отрицательное, то нужно ставить дополнительную проверку)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 04.12.2012, 20:06   #5
приправыч
Пользователь
 
Регистрация: 04.12.2012
Сообщений: 12
По умолчанию

Ок, спасибо. Будем остальные пытаться делать.
приправыч вне форума Ответить с цитированием
Старый 04.12.2012, 21:16   #6
приправыч
Пользователь
 
Регистрация: 04.12.2012
Сообщений: 12
По умолчанию

proga.c: В функции «main»:
proga.c:8:1: ошибка: expected declaration specifiers before «scanf»
proga.c:9:1: ошибка: expected declaration specifiers before «sprintf»
proga.c:10:1: ошибка: параметр «len» инициализирован
proga.c:11:1: ошибка: expected declaration specifiers before «if»
proga.c:14:3: ошибка: expected declaration specifiers before «else»
proga.c:10:5: ошибка: declaration for parameter «len» but no such parameter
proga.c:7:5: ошибка: declaration for parameter «num» but no such parameter
proga.c:6:6: ошибка: declaration for parameter «buf» but no such parameter
proga.c:16:1: ошибка: expected «{» at end of input

Вот такие ошибки. Перед вашим кодом дописал только:
Код:
#include <stdio.h>
#include <string.h>
int main()
приправыч вне форума Ответить с цитированием
Старый 04.12.2012, 22:17   #7
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

http://ideone.com/Iy74ev
Код:
#include <stdio.h>
#include <string.h>
int main()
{
    char buf[20];
    int num;
    scanf("%d", &num);
    sprintf(buf, "%d", num);
    int len = strlen(buf); 
    if (len % 2 == 1) {
        buf[len / 2] = 0;
        printf("%s%s\n", buf, &buf[len / 2 + 1]);
    } else {
        printf("%d\n", num);
    }
    return 0;
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Несколько задач K1NG_one Помощь студентам 5 13.12.2011 13:15
Несколько задач Nellas Помощь студентам 24 31.10.2009 14:22
Несколько задач hvaran Помощь студентам 0 07.07.2009 17:31
[C++] Несколько задач Алиса111 Помощь студентам 1 15.01.2008 03:52
Несколько задач Wilda Паскаль, Turbo Pascal, PascalABC.NET 5 05.12.2007 19:03