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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2017, 22:10   #11
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

какое?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 23.05.2017, 22:17   #12
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

1) В первом сообщении говорится о номерах, так что проверять нужно, скорее всего, j.
2) Сравнение на равенство это "==", а не "=".
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 23.05.2017, 22:25   #13
leonid_spartak
Пользователь
 
Регистрация: 18.02.2017
Сообщений: 43
По умолчанию

Всё, спасибо большое, разобрался, программа работает, "==" помогло
leonid_spartak вне форума Ответить с цитированием
Старый 24.05.2017, 11:16   #14
leonid_spartak
Пользователь
 
Регистрация: 18.02.2017
Сообщений: 43
По умолчанию

Подскажите еще пожалуйста, вот мой код, нечетность я смог определить, но как можно сделать так чтобы он буквы не трогал, а только цифры, работать только с цифрами в строке
Код:
#include <string.h>
#include <stdio.h>

char* delDig(char *S)
{
    int i,j;
    i=0;
    for (j=0; j<strlen(S); j++)
        if (((S[j] >= '0') || (S[j] <= '9')) && (!(S[j]&1)))
            S[i++]=S[j];
            S[i]=0;
    return S;
}

int main(int argc, char* argv[])
{
    char Q[100];
    printf( "Vvod stroki: " );
    gets(Q);
    printf("%s\n",Q);
    printf("%s\n",delDig(Q));
    return 0;

}
leonid_spartak вне форума Ответить с цитированием
Старый 24.05.2017, 11:46   #15
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Покажите свои наработки
Алекс, ну тебе же показали наработки :D
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 24.05.2017, 11:50   #16
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Код:
(S[j] >= '0') || (S[j] <= '9')
Вам нужно ограничить интервал символов нулём и девяткой. Поэтому условие И должно быть, а не ИЛИ.

Код:
(S[j] >= '0') && (S[j] <= '9')
Сами представьте: символ пробела " " идёт в таблице раньше, но он попадёт в это условие, потому что сработает (S[j] <= '9'), а значение (S[j] >= '0') уже никого не колышет, потому что true or false = true
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 24.05.2017, 12:00   #17
leonid_spartak
Пользователь
 
Регистрация: 18.02.2017
Сообщений: 43
По умолчанию

Таким образом он вообще все буквы удаляет
leonid_spartak вне форума Ответить с цитированием
Старый 24.05.2017, 12:15   #18
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Код:
for (j=0; j<strlen(S); j++){
        if (((S[j] >= '0') || (S[j] <= '9')) && (!(S[j]&1))){
            S[i++]=S[j];
            S[i]=0;
        }
}
Скобки расставьте
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 24.05.2017, 12:25   #19
leonid_spartak
Пользователь
 
Регистрация: 18.02.2017
Сообщений: 43
По умолчанию

Почему программа работает только когда есть четная цифра в коде, а когда вск нечетные ничего не делает?
leonid_spartak вне форума Ответить с цитированием
Старый 24.05.2017, 12:36   #20
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Потому что Вы проверяете чётность цифры в строке, а не её порядкового номера:
Код:
!(S[j]&1)
В общем, рабочая функция только для цифр:

Код:
char* delDig(char *S)
{
	int i,j;
	char *S1;
	i=0;
	for (j=0; j<strlen(S); j++){
	  if (((S[j] >= '0') && (S[j] <= '9')) && (j % 2 != 0)) {
	    S1[i]=S[j];
	    i++;
	  }
        }        

	S1[i] = '\0';
	return S1;
}
и она же для любого символа:

Код:
char* delDig(char *S)
{
	int i,j;
	char *S1;
	i=0;
	for (j=0; j<strlen(S); j++){
	  if (j % 2 != 0) {
	    S1[i]=S[j];
	    i++;
	  }
        }        

	S1[i] = '\0';
	return S1;
}
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подпрограммы Fliiz Помощь студентам 4 05.07.2015 18:54
подпрограммы shalgan Помощь студентам 4 03.01.2014 22:46
Подпрограммы! pechenka Помощь студентам 0 04.01.2011 19:34
Подпрограммы-процедуры, подпрограммы-функции в Pascal rishikesh Помощь студентам 19 18.05.2010 23:05
подпрограммы @lenk@ Помощь студентам 1 04.03.2010 23:36