Загрузка...

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

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

  1. johan3ss
    johan3ss Автор темы 14 июн 2021 0 12 июн 2021
    Написать программу по этой задаче: Дан текст. Найти слово, встречающееся в каждом из предложений или сообщить, что такого слова нет.
    Естественно, за вознаграждение.
     
  2. Добрый
    Добрый 14 июн 2021 1537 21 май 2020
     
    1. johan3ss Автор темы
    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
Загрузка...