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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Указатели, Необходимо реализовать три функции 
V
    Опции темы
Josh
Дата 29.8.2006, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Если нетрудно подскажите как можно это сделать на чистом Cи:

1.Даны два числа. Присвоить значение одного числа другому, используя указатели и не обращаясь к переменным по имени.

2.Написать функцию для удаления из строки всех цифр (работать со строкой, используя указатели).

3.Написать функцию, выполняющую копирование одной строки в другую (работать со строкой, используя указатели).

Буду вам очень признателен.

Это сообщение отредактировал(а) Josh - 29.8.2006, 15:49
PM MAIL   Вверх
Romikgy
Дата 29.8.2006, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Цитата(Josh @  29.8.2006,  14:48 Найти цитируемый пост)
1.Даны два числа. Присвоить значение одного числа другому, используя указатели и не обращаясь к переменным по имени

Код

int a,b;
int *p, *p2;
a=5;
p=&a;
p2=&b;

*p2=*p;

// в b будет 5 :)


Цитата(Josh @  29.8.2006,  14:48 Найти цитируемый пост)
2.Написать функцию для удаления из строки всех цифр (работать со строкой, используя указатели).

Код

void remove_dig(char * x)
{
int len,i;
char *sx;
i=0;
len=strlen(x);
malloc(sx,len+1);
while(*x)
{
  if (!(*x>=30 || *x<=39)) 
   *(sx+(i++))=*x++;
}
strcpy(x,sx);
free(sx);
}

Цитата(Josh @  29.8.2006,  14:48 Найти цитируемый пост)
3.Написать функцию, выполняющую копирование одной строки в другую (работать со строкой, используя указатели).

Код

void str_cpy(char * dest, const char * source)
{
while (*source)
*dest=*source;
dest++;
source++;
}

имхо так


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Oleg_Ci
Дата 29.8.2006, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Friend
**


Профиль
Группа: Участник
Сообщений: 485
Регистрация: 28.5.2006
Где: Новосиб.обл.

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



Romikgy, у тебя ошибка в третьем решении, скобок нехватает, для 'while'. smile 

Цитата(Josh @  29.8.2006,  19:48 Найти цитируемый пост)
3.Написать функцию, выполняющую копирование одной строки в другую (работать со строкой, используя указатели).
Код

void str_cpy( char * buf, const char * name )
{
    while( *buf++ = *name++ );
}


Цитата(Josh @  29.8.2006,  19:48 Найти цитируемый пост)
2.Написать функцию для удаления из строки всех цифр (работать со строкой, используя указатели).
Код

void delete_number( char * name )
{
    char buf[100];
    char * c = buf, * ch = name;
    while( *name )
    {
        if ( *name < '0' || *name > '9' ) 
            *c++ = *name;
        name++;
    } 
    *c = '\0';
    c = buf;
    while( *ch++ = *c++ ); // или   strcpy( name, buf );
}


Добавлено @ 17:52 
Romikgy smile 
Код

if (!(*x>=30 || *x<=39))
Надо так
Код

if ( *x<48 || *x>57 )

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


Эксперт
****


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

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



Цитата(Олег4 @  29.8.2006,  21:48 Найти цитируемый пост)
Надо так

Помоему там закон Де-Моргана вступает всилу smile

PM MAIL ICQ Skype GTalk Jabber   Вверх
Oleg_Ci
Дата 29.8.2006, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Friend
**


Профиль
Группа: Участник
Сообщений: 485
Регистрация: 28.5.2006
Где: Новосиб.обл.

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



Цитата(En_t_end @  29.8.2006,  22:18 Найти цитируемый пост)
Помоему там закон Де-Моргана вступает всилу
И что за закон ?
PM MAIL   Вверх
Romikgy
Дата 29.8.2006, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Цитата(Олег4 @  29.8.2006,  16:48 Найти цитируемый пост)
Romikgy, у тебя ошибка в третьем решении, скобок нехватает

точно забыл поставить
и здесь надо было так
Код
    
if (!(*x>=0x30 || *x<=0x39))

или так
Цитата(Олег4 @  29.8.2006,  16:48 Найти цитируемый пост)
 if ( *name < '0' || *name > '9' ) 




--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

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


Эксперт
****


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

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



Олег4, 
Цитата(Олег4 @  29.8.2006,  22:29 Найти цитируемый пост)
И что за закон ?

http://mirslovarei.com/content_log/Zakon-De-Morgana-93.html
После того, как Romikgy, исправил, он вступает всилу smile

PM MAIL ICQ Skype GTalk Jabber   Вверх
Oleg_Ci
Дата 29.8.2006, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Friend
**


Профиль
Группа: Участник
Сообщений: 485
Регистрация: 28.5.2006
Где: Новосиб.обл.

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



Цитата(En_t_end @  29.8.2006,  22:40 Найти цитируемый пост)
http://mirslovarei.com/content_log/Zakon-De-Morgana-93.html
Там абстрактно так написано...
А вобще-то я понимаю что:
Код

if (!(*x>=0x30 || *x<=0x39))
Это тоже самое что и:
Код

if (*x<0x30 || *x>0x39)
Или это не так ?

PM MAIL   Вверх
Romikgy
Дата 29.8.2006, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Цитата(Олег4 @  29.8.2006,  17:58 Найти цитируемый пост)
Или это не так ?

так


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Любитель
Дата 30.8.2006, 07:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

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



Код

if (!(*x>=0x30 || *x<=0x39))
// упрощаем
if (!(a>=b || a<=c)) // c>b

Рисуем: a>=b, a<=c
Код

   ////////////a////////////|                               
   ------b-----------------c-----
           |///////a///////////////                                 

Через ИЛИ (||) получаем - a - любое.
Следовательно в итоге - (с отрицанием) ф - никакое, т. е. иф всегда не выполняется.
Вторая запись не эквивалентна первой, вспоминаем закон де Моргана  smile (или плохо учили дискретку  smile   smile ):
1. !(A && B) == !A || !B
2. !(A || B) == !A && !B


--------------------
PM MAIL ICQ Skype   Вверх
Josh
Дата 30.8.2006, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Cпасибо всем большое за помощь!!!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

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


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

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

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


 




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


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

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