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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2013, 01:57   #1
Юлия!
 
Регистрация: 09.12.2013
Сообщений: 7
По умолчанию Программа на СИ

Помогите, пожалуйста написать программу на Си:Есть ли слово, все согласные которого — шипящие?
Юлия! вне форума Ответить с цитированием
Старый 09.12.2013, 02:24   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,504
По умолчанию

Код:
#include <stdio.h>
#include <locale.h>
int main()
{
  setlocale(LC_ALL, "Rus");
  printf(" щи ");
  getchar();	
  return 0;
}
Создаете 2 массива символов - согласные шипящие и согласные нешипящие.
Вводите слово.
В случае, если в слове есть символы из первого массива, но нет символов из второго - ответ ДА, в остальных случаях - НЕТ.
type_Oleg вне форума Ответить с цитированием
Старый 09.12.2013, 02:34   #3
Юлия!
 
Регистрация: 09.12.2013
Сообщений: 7
По умолчанию

Так и делаю, прога не работает ...
Юлия! вне форума Ответить с цитированием
Старый 09.12.2013, 15:30   #4
Unique_Maks
Пользователь
 
Регистрация: 07.06.2010
Сообщений: 89
По умолчанию

Покажите как делаете
Unique_Maks вне форума Ответить с цитированием
Старый 16.12.2013, 14:59   #5
Юлия!
 
Регистрация: 09.12.2013
Сообщений: 7
По умолчанию

вот хоть с латиницей. почему-то не работает. Посмотрите пожалуйста.
Код:
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>

void add(unsigned int *s, unsigned char c)
{
unsigned int temp = 0;
temp = 1u « (tolower(c) - 'a');
(*s) = (*s) | temp;
}

int containsKey(unsigned int s, unsigned char c)//Описание принадлежности элемента к множеству
{
return (s) & (1u « (c - 'a'));
}

char word[255];

int isSpace(unsigned char c)
{
if(c == ' ' || c == '\n' || c == '\t' || c == '\0' || c == EOF)
return 1;

return 0;
}
int soglSet() // множество остальных согласных
{
unsigned int s = 0;

add(&s,'b'); add(&s,'c'); add(&s,'d'); add(&s,'g'); add(&s,'h');
add(&s,'j'); add(&s,'l'); add(&s,'m'); add(&s,'n'); add(&s,'q');
add(&s,'r'); add(&s,'v'); add(&s,'w'); add(&s,'x');

return s;
}
int gluhSet() // множество глухих
{
unsigned int s = 0;
add(&s,'p'); add(&s,'f'); add(&s,'k'); add(&s,'t'); add(&s,'s');

return s;
}
int glasSet() // множество гласных
{
unsigned int s = 0;
add(&s,'a'); add(&s,'e'); add(&s,'o'); add(&s,'u'); add(&s,'y'); add(&s,'i');

return s;
}

int main()
{
unsigned int wrd = 0; // множество, состоящее из букв слова

int flag = 0;
int sp = 0;
int key = 0; // ключ, показывающий на правильность слова
int wc = 0; // счетчик "правильных" слов
int i = 0;

char prev = 0; // предыдущая буква
char c = 0; // текущая буква
int index = 0;
while(scanf("%c", &c) == 1)
{
c = tolower(c); // приводим к нижнему регистру
if(containsKey((gluhSet() | soglSet()),c))flag = 1;
if(isSpace(c) && !isSpace(prev)) //отлавливаем повторяющиеся пробелы
sp = 1;

if(!isSpace(c))
{
add(&wrd, c); // строим множество из букв слова
word[index]=c;
index++;
}

if(sp == 1)
{
// Если пересечение мн-ва слова с мн-вом остальных согласных непустое
if(wrd & soglSet())
{
key = 0; // значит слово плохое
}
else
{
key = 1;
wc++;
}

if(key && flag == 1)
{
printf("Слово ");
for(i=0; word[i] != '\0'; i++)
{
printf("%c",word[i]);
}
printf(" содержит только глухие согласные\n");
}
key = 0;
wrd = 0;
for(i=0;i<255;i++)
{
word[i]='\0';
}
index=0;
sp = 0;

}
prev = c;
}

if(wc > 0)
printf("Есть слова, которые состоят только из глухих согласных. Кол-во слов: %d\n", wc);
else
printf("Нет слов, состоящих только из глухих согласных\n");

return 0;
}

Последний раз редактировалось Stilet; 16.12.2013 в 15:31.
Юлия! вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа на Pascal в Lazarus и программа для одномерного массива целых чисел Yegorka Lazarus, Free Pascal, CodeTyphon 13 20.12.2012 18:02
Программа как программа. вопрос leonidsm Общие вопросы C/C++ 5 02.10.2012 21:30
Программа с применением записей и программа с применение множеств smert99 Помощь студентам 0 16.06.2011 23:14
Программа открыается если есть другая программа. bookkc Паскаль, Turbo Pascal, PascalABC.NET 12 14.10.2009 20:09