Строки
Дан текст, состоящий из 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;
}
#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;
}
Код:
#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;
}
#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;
}
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.
Придумай свой пример входного файла. И напиши работает или нет.
Список полиндромов: