Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Строки

81K
15 апреля 2012 года
Pusechka
2 / / 19.03.2012
Помогите пожалуйста добить задачу,чтобы выделение шло не по словам а по предложениям и массив textnew нужно сделать одномерным, помогите пожалуйста а то у меня вообще не получается((...

Дан текст, состоящий из N (2 N 10) строк с максимальной длиной 80 символов. Необходимо вывести все предложения данного текста, являющиеся палиндромами, в порядке невозрастания их длины. Считать, что текст написан синтаксически грамотно, в качестве знаков препинания используются точка и запятая, слова состоят только из букв, перенос слов по слогам отсутствует. Для выделения предложений из строки и определения является ли они палиндромами, создать пользовательские функции.


Код:
#include <iostream.h>
#include <string.h>
#include <vcl.h>
#pragma hdrstop


int bukva(char s)
  { char buk[53]="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    if (strchr(buk, s)) return 1;
    else return 0;
  }

int glas(char s)
  { char gl[13]="aeiouyAEIOUY";
    if (strchr(gl, s)) return 1;
    else return 0;
  }

int getword(char s[], char word[100][15], int k)
  { int m=0;
    for (unsigned int i=0; i<strlen(s)-1; i++)
      if (!bukva(s[i]) && bukva(s[i+1]) )
        { i++;
          m=0;
          while (bukva(s[i]))
            { word[k][m]=s[i];
              i++; m++;
            }
          i--;
          word[k][m]=0;
          k++;
        }
    return k;
  }

int main(int argc, char* argv[])
{  char text[4][81]={"aaa AZZ","Aaa klm","Uku Jasdfh","Uku ddd"};
   char textnew[4][83]={0};
   char word[100][15];
   char word1[100][15]={0};
   //for (int i=0; i<10; i++) {
     //gets(tekst[i]);
   for (int i=0; i<4; i++)
     { textnew[i][0]=' ';
       strcat(textnew[i], text[i]);
     }
   int k=0; int g=0; int sog=0; int k2=0;
   for (int i=0; i<4; i++)
      k=getword(textnew[i], word, k);

   for (int i=0; i<k; i++)
     { sog=g=0;
       for (unsigned int j=0; j<strlen(word[i]); j++)
          if (glas(word[i][j])) g++;
          else sog++;
       if (g>sog)  strcpy(word1[k2++],word[i]);
     }

   char tmp[15]={0};
   for (int i=0; i<k2-1; i++)
      for (int j=i+1; j<k2; j++)
      if (stricmp(word1[i], word1[j])>0)
        { strcpy(tmp,word1[i]);
          strcpy(word1[i],word1[j]);
          strcpy(word1[j], tmp);
        }
   for (int i=0; i<k2-1; i++)
      if (stricmp(word1[i], word1[i+1])!=0)
            cout<<word1[i]<<" ";
   cout<<word1[k2-1]<<endl;
   getchar(); getchar();
   return 0;
}
75K
16 апреля 2012 года
zitxbit
43 / / 03.04.2012
Вот код написанный на Microsoft Visual C++ 2010:

Код:
#include <stdio.h>
#include <conio.h>
#include <tchar.h>
#include <string.h>
#include <ctype.h>

int main(void)
{
    FILE* fp = NULL; char* filename = "d:\\palindrom.txt";
    if ((fp = fopen(filename,"r")) == NULL)
        printf("Unable to open file %s\n",filename);

    static char ch = '\0'; int k = 0, x = k;
    static char** ppsz = new char*[256];
    static char* line  = new char[256];
    while ((ch = fgetc(fp)) != EOF)
    {
        if ((ch != '.') && (ch != '!') && (ch != '?'))
                line[k++] = ch;
        else
        {
            line[k] = '\0'; line++;
            for (int t = 0; line[t] != '\0'; t++)
                if ((line[t] == 0x0A))
                {
                    int u = t;
                    while (line[u] != '\0')
                        line[u++] = line[u+1];
                }

            int n = 0;  k = n;
            static char psz[2048] = "\0";
            for (int i = 0; line[i] != '\0'; i++)
                 if (isalpha(line[i]))
                     psz[n++] = tolower(line[i]);

                psz[n] = '\0';

            bool palindrom = true;
            for (int q = 0; psz[q] != '\0' && palindrom == true; q++)
                 if (psz[q] != psz[(strlen(psz)-q)-1])
                     palindrom = false;

            if (palindrom)
            {
                ppsz[x] = new char[256]; ppsz[x+1] = NULL;
                strcpy(ppsz[x++], line);
            }
        }
    }

    fclose(fp);

    for (int m = 0; ppsz[m] != NULL; m++)
    {
        int len = strlen(ppsz[m]);
        for (int z = m+1; ppsz[z] != NULL; z++)
            if (strlen(ppsz[z]) > len)
            {
                char* temp = ppsz[z];
                ppsz[z] = ppsz[m];
                ppsz[m] = temp;
            }
    }

    for (int d = 0; ppsz[d] != NULL; d++)
        printf("Palindrom %d: %s (Length = %d)\n\n",d+1,ppsz[d],strlen(ppsz[d]));

    _getch();

    return 0;
}
Пример текстового файла с палиндромами palindrom.txt:
a parameter is like a variable. Da, iskaty taksi - ad! Dom Mod. I leman ot meli! Lom o smokingi gni, komsomol!
It's a final countdown. Count is 0,1,2,3,4. Mala tropka, no ona - k portalam. Sebe na ume gorodnici, i cin
dorog emu, a ne bes.

Придумай свой пример входного файла. И напиши работает или нет.
75K
16 апреля 2012 года
zitxbit
43 / / 03.04.2012
Список полиндромов: http://otvet.mail.ru/question/48685947/
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог