С Новым годом! Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
ЧакЭ одобряЭ
285 / 284 / 86
Регистрация: 27.12.2009
Сообщений: 1,767
1

Проверить, являются ли символы соседями в алфавите

11.09.2010, 21:23. Показов 1860. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
латинские буквы.в разных регистрах.
я рассуждал так.
соседи значит в кодовой таблицы друг за другом->коды их идут друг за другом->макс.код+мин.код/2=элемент между ними.если он будет равен какому-нибудь из данных чисел значит соседи.
написал прогу.
но работает как-то неверно.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/****************************************************************************
 *                                                                          *
 * File    : main.c                                                         *
 *                                                                          *
 * Purpose : Console mode (command line) program.                           *
 *                                                                          *
 * History : Date      Reason                                               *
 *           00/00/00  Created                                              *
 *                                                                          *
 ****************************************************************************/
 
#include <stdio.h>
#include <ctype.h>
 
 /****************************************************************************
 *                                                                          *
 * Function: main                                                           *
 *                                                                          *
 * Purpose : Main entry point.                                              *
 *                                                                          *
 * History : Date      Reason                                               *
 *           00/00/00  Created                                              *
 *                                                                          *
 ****************************************************************************/
int MAX(int a, int b, int c)
{ 
    int maxi=((a) > (b) ? ( (a) > (c) ? (a) : (c) ) : (b) > (c) ? (b) : (c));
return maxi;
}
int MIN(int a, int b, int c)
{
    int mini=((a) < (b) ? ( (a) < (c) ? (a) : (c) ) : (b) < (c) ? (b) : (c));
    return mini;
}
 
int main(int argc, char *argv[])
{
    /* TODO: Enter code here */
    char a,b,c;
    printf("vvedire latin buckves\n");
    scanf("%c\n %c\n %c\n",&a,&b,&c);
    tolower(a);
    tolower(b);
    tolower(c);
    int a1=a,b1=b,c1=c;
    int alpha=max(a1,b1,c1), omega=min(a1,b1,c1);
    if ((omega+alpha)/2==a1 || (alpha+omega)/2==b1 || (omega+alpha)/2==c1)
        printf("sosedi\n");
    else
        printf("ne sosedi\n");
    return 0;
}
и еще вопрос:как можно сравнить числа способом (??я пытался но запутался в комбинация >
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.09.2010, 21:23
Ответы с готовыми решениями:

Проверить являются ли символы в строке лексиграфически упорядоченными
Дана строка, нужно узнать является ли она лексиграфически упорядоченной.

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

Вывести числа десятичные цифры которых являются соседями в натуральном ряду
Ввести с клавиатуры двузначные натуральные числа Х и У. Вывести все числа от Х до У, цифры которых...

Прибавить к каждому элементу сумму чисел, которые являются его соседями через один
1 2 3 4 5 = 0+1+3 0+2+4 1+3+5 2+4+0 3+5+0 5+0+0 = 4 6 9 6 5 Эта последовательность...

15
Эксперт С++
476 / 444 / 34
Регистрация: 20.11.2009
Сообщений: 1,293
11.09.2010, 21:30 2
А как нащщет 'a', 'c' и 'e' ?

Добавлено через 3 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
bool f(char a, char b, char c)
{
    a = tolower(a);
    b = tolower(b);
    c = tolower(c);
    if(a > b)
        swap(a,b);
    if(a > c)
        swap(a,c);
    if(b > c)
        swap(b,c);
    return a+1 == b && b+1 == c;
}
1
Мат в 32 хода
237 / 172 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
11.09.2010, 21:34 3
Artishok, ты рассуждал не правельно. a,b,c,d,e. тут, (a+e)/2=c, но не являются соседями. правеленее будет - abs(c-b)==1 && abs(c-d)==1
1
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
11.09.2010, 21:36 4
у меня тока одна идея. Деление целочисленное, т.е. 4/2 == 5/2

Добавлено через 40 секунд
не успел))
1
Мат в 32 хода
237 / 172 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
11.09.2010, 21:39 5
Хохол, зачем столько мучений? if(abs(tolower(c)-tolower(b))*abs(tolower(c)-tolower(d))==1) return true;
1
Эксперт С++
476 / 444 / 34
Регистрация: 20.11.2009
Сообщений: 1,293
11.09.2010, 21:41 6
nikkka, как нащщет 'a', 'b' и 'a' ?
1
Мат в 32 хода
237 / 172 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
11.09.2010, 21:43 7
Хохол, а что с ними не так? подставте в пост №5. проверьте.
1
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 2
11.09.2010, 21:44 8
Решение, что называется в лоб:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
 
#define LEN 3
 
int main()
{
    int i = 0;
    int j = 0;
    int t = 0;
    char str[LEN+1] = "dBc";
    
    for(i = 0; i < LEN; ++i)
        str[i] = tolower(str[i]);
           
    for(i = 0; i < LEN; ++i) {
        for(j = LEN - 1; j > i; --j) {
            if(str[j-1] > str[j]) {
                t = str[j-1];
                str[j-1] = str[j];
                str[j] = t;
            }
        }
    }
    
    printf("%s\n", str);
    for(i = 0; i < LEN; ++i) {
        if(str[i] + 1 != str[i+1])
            break;
    }
    
    i == LEN - 1 ? printf("Соседи\n") : printf("Не соседи\n");
}
1
Эксперт С++
476 / 444 / 34
Регистрация: 20.11.2009
Сообщений: 1,293
11.09.2010, 21:46 9
abs(tolower('b')-tolower('a'))*abs(tolower('b')-tolower('a'))==1
1
ЧакЭ одобряЭ
285 / 284 / 86
Регистрация: 27.12.2009
Сообщений: 1,767
11.09.2010, 21:50  [ТС] 10
Добавлено через 1 минуту
Цитата Сообщение от Хохол Посмотреть сообщение
abs(tolower('b')-tolower('a'))*abs(tolower('b')-tolower('a'))==1
то есть в функцию достаточного одного этого выражения?
а почему нет переменной 'c'?
0
Эксперт С++
476 / 444 / 34
Регистрация: 20.11.2009
Сообщений: 1,293
11.09.2010, 21:52 11
В этом коде вообще ни одной переменной нет.
1
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 2
11.09.2010, 21:52 12
Цитата Сообщение от Artishok Посмотреть сообщение
прочитал все посты и немного запутался в названиях переменных
Забейте, мой способ производит не только для трех, но и для любого количества!
Конечно подразумевается для строки "abcda" - отрицательный результат, то есть не соседи.
1
ЧакЭ одобряЭ
285 / 284 / 86
Регистрация: 27.12.2009
Сообщений: 1,767
11.09.2010, 21:56  [ТС] 13
не подумал о переводе в строку.
привык к тому что не всегда прокатывает.не для всех преподов
0
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 2
11.09.2010, 22:00 14
Цитата Сообщение от Artishok Посмотреть сообщение
не подумал о переводе в строку.
Это не обязательно воспринимать как строку - это массив (строка на самом деле и правда массив). А символы это числа - как Вы правильно предположили, что в кодовой таблице соседние символы рядом.
То есть фактически задача сводится к сортировке массива по возрастанию и определению того, что последовательность является арифметической прогрессией (возрастание на 1), ну как-то так.
И еще я там с сортировкой облажался, сейчас исправил. В том же сообщение, где предыдщее решение было. Посмотрите и исправьте у себя тоже.
0
ЧакЭ одобряЭ
285 / 284 / 86
Регистрация: 27.12.2009
Сообщений: 1,767
11.09.2010, 22:28  [ТС] 15
вот так сделал

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/****************************************************************************
 *                                                                          *
 * File    : main.c                                                         *
 *                                                                          *
 * Purpose : Console mode (command line) program.                           *
 *                                                                          *
 * History : Date      Reason                                               *
 *           00/00/00  Created                                              *
 *                                                                          *
 ****************************************************************************/
 
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <math.h>
 
 /****************************************************************************
 *                                                                          *
 * Function: main                                                           *
 *                                                                          *
 * Purpose : Main entry point.                                              *
 *                                                                          *
 * History : Date      Reason                                               *
 *           00/00/00  Created                                              *
 *                                                                          *
 ****************************************************************************/
 
 
int main(int argc, char *argv[])
{
    /* TODO: Enter code here */
   
    char a,b,c;
    printf("vvedite chisla\n");
    scanf("%c\n %c\n %c",&a,&b,&c);
    char str[2];
    int min,max;
    str[0]=tolower(a); str[1]=tolower(b); str[2]=tolower(c); 
    for(int i = 0; i < 2;++i)
    {
    for (int j=2-i;j>i;--j) 
      if (str[j-1]>str[j])
       {
       char tmp;
       tmp=str[j-1];
       str[j-1]=str[j];
       str[j]=tmp;
       }    
    }
    min=str[0];
    max=str[2];
    int k=str[1];
    if (abs(min+max)/2==k)
    printf("sosedi\n");
    else
    printf("ne sosedi\n");
 
    return 0;        
}
0
Мат в 32 хода
237 / 172 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
11.09.2010, 22:50 16
извените )) опечаточка вышла )))
0
11.09.2010, 22:50
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.09.2010, 22:50
Помогаю со студенческими работами здесь

Какие символы в алфавите стоят на 5, 12 и 19 местах
3. Известно, что символ A английского алфавита имеет код 65. Напишите программу,** определяющую...

Как заменить русские символы на их номера в алфавите?
Дана строка произвольной длины из русских символов(текст).Необходимо заменить буквы, на их...

Из файла считать текст и проверить на буквы в алфавите
программа заключается в том, чтобы из файла брался текст, заносился в переменную, а потом...

Дан файл, компонентами которого являются символы. Переписать все символы в новый файл в обратном порядке.
Работа с текстовыми файлами. Дан файл, компонентами которого являются символы. Переписать все...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Что такое HCL Notes и как с ним работать
InfoMaster 10.01.2025
HCL Notes (ранее известный как IBM Notes и Lotus Notes) представляет собой комплексную платформу для совместной работы и обмена информацией в корпоративной среде. Это многофункциональное решение,. . .
Как работать с Git из Windows и Visual Studio
InfoMaster 10.01.2025
Работа с Git в Windows Работа с Git в операционной системе Windows может быть осуществлена с помощью различных инструментов, каждый из которых обладает своими уникальными возможностями и. . .
Аналог оператора switch case в Python
InfoMaster 10.01.2025
Оператор switch case используется в программировании для выбора одного из нескольких вариантов исполнения кода. Однако в языке Python этот оператор отсутствует. Понимание аналогов switch case в. . .
Отличия абстрактного класса от интерфейса
InfoMaster 10.01.2025
В современной разработке программного обеспечения существуют два основных механизма реализации абстракции: абстрактные классы и интерфейсы. Эти инструменты, хотя и схожи в своей основной цели -. . .
Как работать в Git
InfoMaster 10.01.2025
Git — это одна из наиболее популярных систем контроля версий, которая активно используется разработчиками по всему миру. Она позволяет эффективно управлять изменениями в коде, координировать работу. . .
Реализация передвижения персонажа в Unity3d на C#
InfoMaster 10.01.2025
Реализация передвижения персонажа в Unity3D начинается с правильной настройки проекта. Этот этап критически важен для создания отзывчивого и плавного управления. Рассмотрим основные шаги для создания. . .
Docker: руководство для начинающих
InfoMaster 10.01.2025
В современном мире разработки программного обеспечения контейнеризация стала неотъемлемой частью процесса создания и развертывания приложений. Docker, как ведущая платформа контейнеризации, произвела. . .
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru