[изображение] /userdir/2/3/5/8/23585/6257413.gif
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <alloc.h>
#include <string.h>
typedef
struct node
{
char elem;
struct node *next;
} *stack;
void pop (stack *L, char *elem)
{
stack P=*L;
*elem=P->elem;
(*L)=(*L)->next;
free(P);
}
void push (stack *L, char newelem)
{
stack P=(stack)malloc(sizeof(struct node));
P->elem=newelem;
P->next=*L;
*L=P;
}
int memb(char ch, char *str)
{
int j=0;
while ((str[j]!=ch)&&(j<strlen(str))) j++;
if (j==strlen(str)) return 0;
else return 1;
}
void main (void)
{
// char *oper1="+-";
//char *oper2="*/";
stack L;
char s1[15]={0};
char s2[15]={0};
char s[15]={0};
int i=0; char a, b;
printf("Vvedite infiksnuyu formu: ");
gets(s1);
for (i=strlen(s1)-1; i>=0; i--)
{
if ((s1[i]==')') || (memb(s1[i], "*/")
else if (s1[i]=='(')
{
pop(&L, &a);
while (a!=')')
{
strcpy(s,""); s[0]=a; strcat(s,s2); strcpy(s2,s);
pop(&L, &a);
} //stro4ka pravil'naya => stek ne kon4itsya ran'we, 4em vytawitsya skobka
}
else
if (memb(s1[i], "+-")
{
pop(&L, &b);
while (memb(b, "*/")
{ strcpy(s, ""); s[0]=b; strcat(s,s2); strcpy(s2,s);
pop(&L, &b);
}
push(&L, b);
}
else { strcpy(s, ""); s[0]=s1[i]; strcat(s,s2); strcpy(s2,s);}
}
while (L!=NULL)
{pop(&L, &b); strcpy(s, ""); s[0]=b; strcat(s,s2); strcpy(s2,s);}
printf("Prefiksnaya forma : %s", s2);
getch();
}
Посмотри вот на ЭТО:
=((
[Linker Error] Unresolved external '__fastcall TForm1::print_tree(node *, int, int, int, Extctrls::TPaintBox *)' referenced from F:\TREEES1\TREE.OBJ
что бы это могло значить?
вернее, почему это error?((
просто там не должно быть глюка, разве что с какой-нибудь защитой...
while (L->next!=NULL)
{pop(&L, &b); strcpy(s, ""); s[0]=b; strcat(s,s2); strcpy(s2,s);}
pop(&L, &b); strcpy(s, ""); s[0]=b; strcat(s,s2); strcpy(s2,s);
printf("Prefiksnaya forma : %s", s2);
Значит, так:
1.алфавит:
A B C D E F G H I J (Только без пробелов). у A номер 1, у B - 2 и т.д.
1 2 3 4 5 6 7 8 9 10
2.Строчка:
FAHDAAB
3.Ключевое слово:
CDA. У C номер 3, у D - 4, у A-1.
Записываем слово сколько получится раз под строчкой:
FAHDAAB
CDACDAC
поглядывая на алфавит, сдвигаем буквы строчки на число, равное номеру текущей буквы ключевого слова в нашем алфавите, т.е.:
1) F. Под F - C. Номер C - 3. Сдвигаем F на 3 по алфавиту, получаем I.
2) A. Под A - D. Номер D - 4. Сдвигаем A на 4, получаем E.
И т.д.
Алфавит как будто цикличный, т.е. если тебе надо сдвинуть на 1 букву J, то получится A. если сдвинуть I на 3 - то B и т.д.
А прогу-то послать?