Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.95/19: Рейтинг темы: голосов - 19, средняя оценка - 4.95
0 / 0 / 0
Регистрация: 19.02.2010
Сообщений: 69

Нахождение "отражений" в заданном словаре

09.05.2010, 13:41. Показов 4299. Ответов 43
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нахождение "отражений" в заданном словаре. В задании - вывод результатов на экран и в текстовый файл.
Вот я начал ,а как с файлом несовсем понимаю.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<iostream.h>
#define Path "E:\\111.txt"
int main(void)
{int i,c,flag,b;
char word;
clrscr();
FILE *f;
f=fopen("f:\\111.txt","r");
if(!f)
{puts("\nOsibka otkritia fiile ");
return(1);
}
else
{
c=getc(f);
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.05.2010, 13:41
Ответы с готовыми решениями:

Нахождение анаграмм в словаре
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;iostream.h&gt; #include &lt;fstream.h&gt; #include &lt;string.h&gt; #include &lt;stdlib.h&gt; ...

Нахождение в заданном словаре слов, содержащих только буквы заданного слова
Например, дано слово &quot;программа&quot;, из него можно составить следующие слова: пар, паром, гамма, грамм, рог и др. Помогите с самим...

Нахождение анаграмм в заданном словаре(анаграммы-слова, полученные перестановкой букв, например, корвет-вектор, сорт-рост и т. д.)
словарь хранится в текстовом файле, примерно 20000 слов; должна быть возможность добавления слов в словарь, причем если вводимое с...

43
 Аватар для FireNovel
150 / 73 / 27
Регистрация: 09.04.2010
Сообщений: 297
17.05.2010, 12:54
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Vlaakk Посмотреть сообщение
int Find_in_file(const char *filename, const char *str) вот тут он почему то выдает ошибку?
Какую ошибку выдает?

Цитата Сообщение от Vlaakk Посмотреть сообщение
Вот это можно записать с помощью функции или нельзя?
Конечно можно, но зачем?

C++
1
2
3
4
int Find_in_file(const char *filename, const char *str)
{    
    file = fopen("F:\\111.txt","r");
}
если внутри функции жестко прописывать имя файла, тогда нет никакой необходимости в первом парамере:
C++
1
const char *filename
0
0 / 0 / 0
Регистрация: 19.02.2010
Сообщений: 69
18.05.2010, 18:56  [ТС]
Да мне просто надо сделать программу по функциям.

Он пишет ошибку Parameter 'filename' is never used
0
 Аватар для FireNovel
150 / 73 / 27
Регистрация: 09.04.2010
Сообщений: 297
19.05.2010, 13:26
Цитата Сообщение от Vlaakk Посмотреть сообщение
Он пишет ошибку Parameter 'filename' is never used
Ну, так все правильно он пишет, что параметр 'filename' не используется, ты ведь убрал кусок кода в котором он использовался, а именно изменил
C++
1
file = fopen("F:\\111.txt","r");
Чтобы испавить это нужно, либо убрать объявление этого параметра, либо обратно заменить кусок кода:
C++
1
file = fopen(filename,"r");
0
0 / 0 / 0
Регистрация: 19.02.2010
Сообщений: 69
19.05.2010, 17:26  [ТС]
Дак если изменить эту строчку то программа не будет искать в файле.
А вы не знаете как осуществить
просмотр словаря в алфавитном порядке, начиная с заданной буквы;
и как удалить слово из файла?
0
 Аватар для FireNovel
150 / 73 / 27
Регистрация: 09.04.2010
Сообщений: 297
20.05.2010, 13:04
Цитата Сообщение от Vlaakk Посмотреть сообщение
Дак если изменить эту строчку то программа не будет искать в файле.
Рассмотрим два варианта функции Find_in_file
1. Функция принимает два параметра (имя файла и искомое слово)
2. Функция принимает один параметр (искомое слово)
Для первого вар-та будет такой код:
C++
1
2
3
4
5
int Find_in_file(const char *filename, const char *str)
{    
    file = fopen(filename, "r");
//дальше все без изменений
}
Поскольку функция принимает имя файла, то поиск можно проводить в любом существующем файле, имя которого ей передается при вызове.
На мой взгляд этот вариант предпочтительнее.

Для второго варианта функция Find_in_file будет такой:
C++
1
2
3
4
5
6
int Find_in_file(const char *str)
{    
    file = fopen("F:\\111.txt", "r");  /* <--- ограничили использование функции  
                                          только в рамках одного файла "F:\\111.txt" */
//дальше все без изменений
}
как видно из коментов использование функции становится более узким, чем это возможно
хотя с другой стороны не нужно заморачиваться при её вызове, передаешь ей искомое слово и все.
Решать тебе.
0
20.05.2010, 15:46

Не по теме:

Цитата Сообщение от Vlaakk Посмотреть сообщение
C
1
2
3
4
...
#define Path "E:\\111.txt"
...
f=fopen("f:\\111.txt","r");
Чувствую - подвох какой-то... ;)

0
0 / 0 / 0
Регистрация: 19.02.2010
Сообщений: 69
21.05.2010, 15:36  [ТС]
Дак если мне использовать 2й вариант то мне при записи в файл
C
1
2
3
4
5
6
7
8
else
    {
        printf("В файле слова: \"%s\"  - нет!\n", str2);
        printf("Хотите ли вы добавить слово: \"%s\" в файл\n1 - Да!\n2 - Нет!", str2);
        scanf("%d", &flag);
        if(flag == 1) 
 
      {
то тут надо будет тснова вызывать функцию
C
1
2
3
4
5
int Find_in_file(const char *str)
{    
    file = fopen("F:\\111.txt", "a"); 
fprintf("%c",str2); //если перевертыш отсутствует 
     }
а если у меня каждое слово с новой строки то мне надо просто перейти на другую строку?

Добавлено через 20 часов 46 минут
Мне что-то непонятно а зачем использовать 2 раза вот это???

C
1
2
3
4
5
6
7
8
9
10
11
12
 while(!feof(file)) /*Цикл выполняется пока не будет достигнут конец файла*/
    {
        fscanf(file,"%s", &s);         // считываем слово из файла
 
        printf("Naydeno %s\n",&s);     // для слежения за ходом поиска, можно удалить
 
        if(!strcmp(s, str))      // если нашли слово
        {
            printf("slovo naydeno!\n"); // тут выполняешь свои операции со словом[B] особенно вот эта строчка для чего она??[/B]
            fclose(file);
            return 1;                   // истина - слово найдено
        }
0
 Аватар для FireNovel
150 / 73 / 27
Регистрация: 09.04.2010
Сообщений: 297
21.05.2010, 16:11
Дак если мне использовать 2й вариант то мне при записи в файл
надо будет снова вызывать функцию
В этом случае снова есть два варианта
1. Можно все завязать на одной функции, и все операции (поиск слова, запись в файл если слово не найдено) выполнять внутри этой функции.
2. А можно организовать несколько мелких функций, каждая из которых будет выполнять отдельную операцию.

Поскольку, ты писал:
Да мне просто надо сделать программу по функциям.
то советую писать функций по-больше, чтобы разобраться и показать свое умение (если это требуется) проверяющему
Мне что-то непонятно а зачем использовать 2 раза вот это???
Я как раз на это и намекал, что в этом нет необходимости просто создаешь отдельную функцию для записи в файл и все.

C
1
2
printf("slovo naydeno!\n"); // тут выполняешь свои операции со словом 
//особенно вот эта строчка для чего она??
Можешь её убить.
Предполагалось что там можно проводить какие-то манипуляции с найденым словом
0
0 / 0 / 0
Регистрация: 19.02.2010
Сообщений: 69
21.05.2010, 16:28  [ТС]
А если разбить на более мелкие функции то для каждого например если слово ввожу с клавы и он же не обнаруживает его то будет выгдядеть как ?)) 1 будет если так на перевертышь то другое и так же на добавление да?


вот для записи слово в файл нужно использовать так

C
1
2
3
4
5
 int Find_in_file(const char *str)
{    
    file = fopen("F:\\111.txt", "a"); 
fprintf("%c",str2); //если перевертыш отсутствует 
     }
0
 Аватар для FireNovel
150 / 73 / 27
Регистрация: 09.04.2010
Сообщений: 297
21.05.2010, 17:17
А если разбить на более мелкие функции то для каждого например если слово ввожу с клавы и он же не обнаруживает его то будет выгдядеть как ?)) 1 будет если так на перевертышь то другое и так же на добавление да?
Пиши более мелкими предложениями. Понять трудно вопрос.

вот для записи слово в файл нужно использовать так

C
1
2
3
4
5
int Find_in_file(const char *str)
{ 
file = fopen("F:\\111.txt", "a"); 
fprintf("%c",str2); //если перевертыш отсутствует 
}
смотри сюда
C
1
2
3
4
5
6
7
8
9
10
11
12
13
/* записывает в файл слово "word" */
void add_in_file ( const char *word)
{
     FILE *file = fopen("F:\\111.txt","a");
     if(!file)
     {
         puts("File don't open");
         exit(-1);
     }
 
     fprintf(file, "\n%s", word); // записываем слово (строку в файл)
     fclose(file);
}
0
0 / 0 / 0
Регистрация: 19.02.2010
Сообщений: 69
21.05.2010, 17:50  [ТС]
Т.Е. будет выглядеть так
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
printf("Введите слово отражение которого вы хотите найти: ");
    scanf("%s", str);   // считываем нормальное слово
 
    if(Find_in_file("test.txt", str)) // ищем слово  в файле
        printf("Слово   -  \"%s\" в файле есть!", str);
    else
    {
        printf("В файле слова: \"%s\"  - нет!\n", str);
 printf("Хотите ли вы добавить слово: \"%s\" в файл\n1 - Да!\n2 - Нет!", str);
        scanf("%d", &flag);
        if(flag == 1) // если Да! то добавляем слово
        {
/* Вызываем функцию и она добавляет.
только вот ниже функция которая осуществляет добавление.)) */
void add_in_file ( const char *str)
{
         FILE *file = fopen("F:\\111.txt","a");
         if(!file)
         {
                 puts("File don't open");
                 exit(-1);
       
 
         fprintf(file, "\n%s", str); // записываем слово (строку в файл)
         fclose(file);
}
Только поиск слова будет происходить в отдельной функции так?и функцию же можно потом вызывать 2й раз так же для поиска перевертыша или нельзя?
0
 Аватар для FireNovel
150 / 73 / 27
Регистрация: 09.04.2010
Сообщений: 297
21.05.2010, 18:23
Только поиск слова будет происходить в отдельной функции так
Да
и функцию же можно потом вызывать 2й раз так же для поиска перевертыша или нельзя?
Можно
1
0 / 0 / 0
Регистрация: 19.02.2010
Сообщений: 69
21.05.2010, 19:31  [ТС]
вот функция которая доложна искать слово, введенное с клавиатуры , в файле
C
1
2
3
4
5
6
7
8
9
10
11
int Find_in_file( const char *str)
{
    char s[80];
    FILE *file;
 
    file = fopen("F:\\111.txt","r");
    if(!file)
    {
        printf("File don't open\n");
        exit(-1);
    }
а вот дальше так или нет?

C
1
2
3
4
5
6
7
8
9
10
11
 while(!feof(file)) /*Цикл выполняется пока не будет достигнут конец файла*/
         fscanf(file,"%s", &s);         // считываем слово из файла
        if(!strcmp(s, str))      // если нашли слово
        {
            printf("slovo naydeno!  %s\n",s);
}
else 
printf("Cлова нет в файле %s\n",s);         
    fclose(file);
            return 1;                   // истина - слово найдено
        }
а вы не знаете ,вот если слово которое я ввел с клавиатуры есть в файле ,а
пользователь хочет добавить его в файл даже если он нажимает да то слово не дублировалось?
0
 Аватар для FireNovel
150 / 73 / 27
Регистрация: 09.04.2010
Сообщений: 297
21.05.2010, 20:19
а вот дальше так или нет?
Не совсем вот я подправил
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
int Find_in_file( const char *str)
{
    char s[80];
    FILE *file;
 
    file = fopen("F:\\111.txt","r");
    if(!file)
    {
        printf("File don't open\n");
        exit(-1);
    }
 
    /*Цикл выполняется пока не будет достигнут конец файла*/
    while(fscanf(file,"%s", &s) != EOF) 
    {       
        if(!strcmp(s, str)) // если нашли слово
        {
            printf("slovo naydeno! %s\n",s);
            fclose(file);
            return 1; // истина - слово найдено
        }       
    }
 
    printf("Cлова нет в файле %s\n",s); 
    fclose(file);
    return 0; // ложь - слово не найдено  
}
а вы не знаете ,вот если слово которое я ввел с клавиатуры есть в файле ,а
пользователь хочет добавить его в файл даже если он нажимает да то слово не дублировалось?
Добавь проверку Типа можно записывать или нет
0
0 / 0 / 0
Регистрация: 19.02.2010
Сообщений: 69
21.05.2010, 21:13  [ТС]
а с перевертышом будет тоже самое только сюда отправлять надо будет
int Find_in_file( const char *str2) <--так?)

Всмысле добавить проверку ?
0
 Аватар для FireNovel
150 / 73 / 27
Регистрация: 09.04.2010
Сообщений: 297
21.05.2010, 21:45
а с перевертышом будет тоже самое только сюда отправлять надо будет
C
1
int Find_in_file( const char *str2) //<--так?)
Что имелось ввиду не очень понятно.
Для поиска перевертышей, просто, вызываешь функцию cо "словом-перевертышем" в качестве её параметра. Функции Find_in_file всеравно какое слово искать в файле. Какое передашь, такое она и будет искать.
C
1
2
//если str2 - ccылка на перевертышь
Find_in_file( str2 );
Всмысле добавить проверку ?
Ну, типа разрешить добавление слово только, если такого слова нет в файле.

Не по теме:

Используй теги для форматирования текста.
В окне в которое вставляешь текст, есть кнопки с надписями С, С++. Жмешь на них и внутрь появившегося тега вставляешь код программы. ;)

0
0 / 0 / 0
Регистрация: 19.02.2010
Сообщений: 69
21.05.2010, 22:16  [ТС]
что-то не совсем понял может быть так
C
1
2
3
4
5
6
7
8
9
if(str==s)//Если слово совпадает 
printf("Хотите ли вы добавить слово в файл %s // 1-да //2 нет",str);//А тогда где мне флаг писать непойму?
if(str!=s))
{void add_in_file ( const char *str) //то тут функцию которая будет записывать в файл
}
else
{if(str==s)
printf("слово нельзя добавить!");
}
0
 Аватар для FireNovel
150 / 73 / 27
Регистрация: 09.04.2010
Сообщений: 297
21.05.2010, 23:21
что-то не совсем понял может быть так
не совсем так, или даже совсем не так
Давай по порядку.
У тебя есть законченные функции:
1. Для поиска слова в файле - find_in_file()
2. Для добавления слова в файл - add_in_file()
т. е. тебе осталось правильно оформить main()
для этого нужно выписать последовательность возможных ситуаций, которые может спровоцировать пользователь.
Напиши, что именно должна делать прога попорядку словами а перевести я помогу.
Посмотри, чего именно тут нехватает?
0
0 / 0 / 0
Регистрация: 19.02.2010
Сообщений: 69
22.05.2010, 12:04  [ТС]
1.Сначало пользователь вводит слово с клавиатуры программа доложна найти это слово в файле
если слова нет в файле , то вывести сообщение что слова нет , (я так думаю тут надо вывести на экран хотители добавить слово в файл)
если пользователь хочет добавить слово в файл ,то добовляет (приечм слово не доложно повторятся)
если же слово есть в файле то не добавлять его.
2. дальше слово переворачиваем и ищет перевертыш .Если перевертыш есть в файле то вывести перевертышь на экран и все.Если перевертыша нет(вевести что перевертыша нет на экран) в файле то снова вывести хотите ли добавить перевертышь в файл .
Вот если добавлять слово в файл то потом наверное придется делать сортировку по алфавиту.
0
 Аватар для FireNovel
150 / 73 / 27
Регистрация: 09.04.2010
Сообщений: 297
22.05.2010, 19:01
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

По моему так
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
int main(void)
{    
    char str[80];    // для нормального слова
    char str2[80];   // для отраженного 
    int flag = 0;        // для ответа на вопрос
 
    setlocale(LC_ALL, "rus"); //устанавливаем доступность кириллици в консоли
 
    printf("Введите слово: ");
    scanf("%s", str);   // считываем нормальное слово
    
    // ищем слово в файле
    if( Find_in_file( str ) ) 
        printf( "Слово - \"%s\" в файле есть!\n", str );
    else
    {
        /* такого слова нет предложим добавить */
        printf("В файле слова: \"%s\"  - нет!\n", str);
        
        printf("Хотите ли вы добавить слово: \"%s\" в файл\n1 - Да!\n2 - Нет!", str);
        scanf("%d", &flag);
 
        if(flag == 1) // если Да! то добавляем слово        
        {
            add_in_file( str );
            puts("Слово добавлено!");
        }
    }
 
    /* найдем слово перевертыш */
    puts("Найдем теперь отражение этого слова...\n");
 
    strcpy(str2, str);  // копируем слово для дальнейшего пререворота
    strrev(str2);       // переворачиваем
 
    printf("Зеркальное отражение %s\n", str2);
 
    if( Find_in_file( str2 ) ) // ищем перевертыш в файле
        printf( "Слово \"отражение\"  -  \"%s\" в файле есть!", str2 );
    else
    {
        printf("В файле слова: \"%s\"  - нет!\n", str2);
        printf("Хотите ли вы добавить слово: \"%s\" в файл\n1 - Да!\n2 - Нет!", str2);
        scanf("%d", &flag);
        if(flag == 1) // если Да! то добавляем слово
        {
            add_in_file( str2 );        
            puts("Слово добавлено!");
        }
    };    
 
    getch();
    return 0;
}
По поводу сортировки строк. Это не совсем тривиальная задача, думать нету времени
Может кто другой подскажет.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.05.2010, 19:01

В заданном словаре найти все анаграммы
Задается словарь. Найти с помощью процедуры в нем все анаграммы (слова, составленные из одних и тех же букв). Я считываю файл и пытаюсь с...

Найти в заданном словаре слова-палиндромы
Заданный словарь слов. Найти в нем слова-палиндромы, то есть такие, которые одинаково читаются слева направо и наоборот, например,...

Найти парные анаграммы в заданном словаре
В имеющемся словаре найти пары слов (анаграммы), при прочтении каждого из которых в обратном направлении образуется другое слово пары,...

Поиск слова в словаре и нахождение синонимов
Вот мой код: uses crt; var f, e: text; s, word: string; c: char; k, i, z, a: byte; procedure smotr; ...

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


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
День 5 из 28: Codex подсказывает следующий запрос
and_y87 12.10.2026
9 октября 2026 года OpenAI запустила бету Composer predictions — подсказок следующего сообщения в текущем диалоге Codex. Это помощь с формулировкой запроса, а не автоматическое продолжение задачи. . . .
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru