Загрузка...

Нужно написать программу на C.

Тема в разделе C/C++ создана пользователем johan3ss 14 июн 2021. 352 просмотра

  1. johan3ss
    johan3ss Автор темы 14 июн 2021 0 12 июн 2021
    Написать программу по этой задаче: Дан текст. Найти слово, встречающееся в каждом из предложений или сообщить, что такого слова нет.
    Естественно, за вознаграждение.
     
  2. Добрый
    Добрый 14 июн 2021 1537 21 май 2020
     
    1. Посмотреть предыдущие комментарии (1)
    2. Добрый
      johan3ss, на с++? Написать?
    3. johan3ss Автор темы
      Добрый, не, мне на обычном Си нужна.
  3. Добрый
    Добрый 14 июн 2021 1537 21 май 2020
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #include <string.h>
    #include <memory.h>
    #include <stdbool.h>
    #include <conio.h>
    #include <string.h>

    int main()
    {
    const int LEN = 1000;
    char s[LEN];
    char a[LEN / 10][LEN]; // в каждой строке хранится соот-щее предложение
    char d[LEN];
    printf("Vvedite text dlya analiza. Predlozeniya razdelyate tochkami: \n");

    strcpy(s, "Hekko qw. qw fd. qw dfdfdf.");
    printf("\n\n%s\n\n", s);
    fflush(stdin);

    int n = -1; // общее количество предложений в строке
    char *p = strtok(s, "."); // разделитель между лексемой "точка", т е высекаем предложения
    if(p) // чтобы убедиться, что во входном тексте имеется хотя бы ОДНО предложение
    {
    n++;
    strcpy(a[n], p);
    }
    do
    {
    p = strtok(NULL, ".");
    if(p)
    {
    n++;
    strcpy(a[n], p);
    }
    }
    while(p);
    // поскольку нужно найти слова в каждое предложении, поступим очень просто. Разобъем ПЕРВОЕ предложение на слова и проверим
    // каждое слово с каждым словом в других предложениях. Если текущее слово не встретиться в остальных предложениях, значит оно
    // не подходит и переходим к следующему слову
    p = strtok(a[0], " "); // указываем, что разделитель между словами ПРОБЕЛ (a[0] - первое предложение во входном тексте)
    bool b, glob; // будет равна
    char tmp[LEN], tmp1[LEN];
    char *p1;
    bool yn = false;
    if(p)
    strcpy(tmp, p);
    while(p)
    {
    // пробегаем по всему массиву предложений кроме первого
    for(int i = 1; i <= n; i++)
    {
    glob = true;
    b = false; // предположим что текущего слова из ПЕРВОГО предложения НЕТ в остальных предложениях
    // p1 = strtok(a, " ");
    strcpy(d, a);
    p1 = strtok(d, " ");
    if(p1)
    {
    strcpy(tmp1, p1);
    if(strcmp(tmp, tmp1) == 0)
    b = true;
    }
    while(p1)
    {
    p1 = strtok(NULL, " ");
    if(p1)
    {
    strcpy(tmp1, p1);
    if(strcmp(tmp1, tmp) == 0)
    b = true;
    }
    }
    if(b == false)
    {
    glob = false;
    break; // нет смысла проверять в других предложениях, т к в i - ом анализируемого слова не обнаружено
    }
    }
    if(glob)
    {
    printf("%s\t", tmp);
    yn = true;

    }
    p = strtok(NULL, " ");
    if(p)
    strcpy(tmp, p);
    }
    if(!yn){
    printf("\n\nSlova vstreshusegosya vo vseh predlozeniyh NE obnaruzeno");
    }
    // cout << "\n\nSlova vstreshusegosya vo vseh predlozeniyh NE obnaruzeno";

    if(p != NULL)
    free(p);
    //delete []p;
    getch();
    return 0;
    }
     
    1. KorstonS
      Добрый, Больной, нафига столько импортов сделал
    2. Добрый
      KorstonS, где мои деньги сука
    3. KorstonS
      Добрый, За говнокод деньги не дают
Top
Загрузка...