Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2009, 18:51   #1
lubafffka
Пользователь
 
Регистрация: 05.11.2008
Сообщений: 46
Вопрос

Текстовый файл содержит программу на языке Pascal. Программа обязательно содержит раздел описания переменных, процедуры ввода/вывода и операторы присваивания. написать программу на C++, диагностирующую следующие ошибки:
1. переменная, используемая в программе не описана;
2. несоответствие типов в операторе присваивания и в процедурах read, write;
3.неверный идентификатор.

помогите с алгоритмом

Последний раз редактировалось Stilet; 02.12.2009 в 10:41.
lubafffka вне форума Ответить с цитированием
Старый 22.11.2009, 19:57   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

1. Все что находится от слова var до слов implementation, begin или const считается объявлением переменных.
Переменные можно занести в массивы (имя переменной, ее тип).
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 23.11.2009, 19:05   #3
lubafffka
Пользователь
 
Регистрация: 05.11.2008
Сообщений: 46
По умолчанию

а остальные??? и как можно чтоб он по словам читал????
lubafffka вне форума Ответить с цитированием
Старый 23.11.2009, 20:31   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Остальные зависят от первого.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 01.12.2009, 20:38   #5
lubafffka
Пользователь
 
Регистрация: 05.11.2008
Сообщений: 46
По умолчанию

блин... помогите пожалуйста со стеком..... я чет совсем запуталась....

Код:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <conio.h>
#define s0 "program"
#define s1 "var"
#define s2 "begin"
#define s3 "end."
#define m 300

struct stack{
             char per[m];
             char tip[m];
             stack *p;
             }pv,*top;
void prosmotr(void);
void menu(void);
void osibki(void);

int main() 
 {menu();
  return 1;} 

void oshibki(void)
{  FILE *f;
   char name[30],str[m][m],tip1[m],per1[m],per2[m];
   int i,j,n,k,l=1,s;   
   printf ("\nWrite name of file: ");
   scanf("%s",&name);                          // имя файла
   while(( f=fopen (name,"rt"))==NULL)
           {
           printf("\nfail s dannym imenim ne sushchestvuet\nimya faila: ");
           scanf("%s",&name);
           }
   n=0;
   while(!feof(f))
                  {
                  fgets (str[i],m,f);
                  i++;
                  n++;
                  }
   for (i=1;i<=n;i++)
       if(strstr(str[i],s0)!=NULL)
       while(str[i][j]==' ')
                          j++;
       if (isalpha(str[i][j])==NULL)
          printf("\n neverno zapisano imya programmi\n");
       j++;
       while(str[i][j]!=';')
                           if (isalnum(str[i][j])==NULL)
                              printf("\n neverno zapisano imya programmi\n");
       if(strstr(str[i],s1)!=NULL)
            while (strstr(str[i],s2)!=NULL)
                        {  while (str[i][j]!='\0')
                               while (str[i][j]!=':')
                                     {          k=1;
                                                while(str[i][j++]==' ' or str[i][j++]==','){}
                                                stack *pv= new stack;
                                                while(str[i][j++]!=' ' or str[i][j++]!=',')
                                                                     pv->per[k++]=str[i][j++];                                
                                                pv->tip[i]=' ';
                                                pv->p=*top;
                                                *top=pv;
                                                
                                     }
                           while (str[i][j]!=';' or str[i][j++]!=' ')
                           tip1[l++]=str[i][j++];
                           while(top)
                                  while(pv->tip[i]==' ')
                                          pv->tip=tip1;
                                  pv=pv->p;
                           i++;
                        }
        k=1;l=1;s=0;
        while(strstr(str[i],s3)!=NULL)
                  if(strstr(str[i],":="))
                                          s=j;
                           while(str[i][j]!=';')
                                    for(j=s;j<=m;j++)
                                           per1[k++]=str[i][j];
                          
                          k=1;          
                          for(i=s;i>=1;i++)
                                     while(str[i][j]!=' ')
                                               per2[k++]=str[i][j];
        i=1;
        while(top)
                   {  if(per1==pv->per)                                  
                         {   i++;
                             tip2=pv->tip;
                         }
                             pv=pv->p;
                   }          
        if(i!=1)
                printf("ispolsuemaya peremennaya ne naydena.\n");
        
        while(top)
                   {  if(per2==pv->per)                                  
                         {  i++;
                            tip2=pv->tip;
                         }
                      pv=pv->p;
                   }          
        if(i!=1)
                printf("ispolsuemaya peremennaya ne naydena.\n");
        if (tip1!=tip2)                                     
                printf("nesootvetstvie tipov.\n");                         
    
}


void menu(void) //меню
 {int k;
  printf("menu\n1. prosmotr\n2. poisk oshibok\n3. exit\nvash vybor: ");
  scanf("%d",&k);
  switch (k)
   {case 1:{prosmotr(); menu(); break;}
    case 2:{oshibki(); menu(); break;}
    case 3:{break;}}
  return;} 
 
  void prosmotr(void)
{  FILE *f;
   char name[30],str[m];         
printf("------------------------------------------------");
printf ("\nWrite name of file: ");
scanf("%s",&name);                          // имя файла
while(( f=fopen (name,"rt"))==NULL)
{printf("fail s dannym imenim ne sushchestvuet\nimya faila: ");
   scanf("%s",&name);}
printf("\n vasha programma:\n");
while(!feof(f))
               {fgets(str,m,f);
               puts(str);
               }
fclose(f);
}
там чет с передвижением по стеку я намудрила наверно

Последний раз редактировалось Stilet; 02.12.2009 в 10:43.
lubafffka вне форума Ответить с цитированием
Старый 04.12.2009, 00:56   #6
lubafffka
Пользователь
 
Регистрация: 05.11.2008
Сообщений: 46
По умолчанию

эт я сама исправила) посмотрите плз почему она сейчас запускается но не работает???
Код:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <conio.h>
#define s0 "program"
#define s1 "var"
#define s2 "begin"
#define s3 "end."
#define m 300
struct stack{
             char per[m];
             char tip[m];
             stack *p;
             }pv,*top;
void prosmotr(void);
void menu(void);
void oshibki(stack*);
//---
int main() 
 {menu();
  return 1;} 
//---
void oshibki(stack *pv)
{  FILE *f;
   stack **top;
   char name[30],str[m][m],tip1[m],per1[m],per2[m],tip2[m];
   int i,j,n,k,l=1,s;
       char *per[m];
             char *tip[m];
   printf ("\nWrite name of file: ");
   scanf("%s",&name);                          // имя файла
   while(( f=fopen (name,"rt"))==NULL)
           {
           printf("\nfail s dannym imenim ne sushchestvuet\nimya faila: ");
           scanf("%s",&name);
           }
   n=0;
   while(!feof(f))
                  {
                  fgets (str[i],m,f);
                  i++;
                  n++;
                  }
   for (i=1;i<=n;i++)
       {if(strstr(str[i],s0)!=NULL)
       while(str[i][j]==' ')
                          j++;
       if (str[i][j]>='a' or str[i][j]<='z')
          printf("\n neverno zapisano imya programmi\n");
       j++;}
       while(str[i][j]!=';')
                           if (str[i][j]>='a' or str[i][j]<='z'or str[i][j]<='0'or str[i][j]<='9')
                              printf("\n neverno zapisano imya programmi\n");       
                              if(strstr(str[i],s1)!=NULL)
            while (strstr(str[i],s2)!=NULL)
                        {  while (str[i][j]!='\0')
                               while (str[i][j]!=':')
                                     {          k=1;
                                                while(str[i][j++]==' ' or str[i][j++]==','){}
                                                stack *pv= new stack;
                                                while(str[i][j++]!=' ' or str[i][j++]!=',')
                                                                     pv->per[k++]=str[i][j++];                                
                                                pv->tip[i]=' ';
                                                pv->p=*top;
                                                *top=pv;
                                                
                                     }
                           while (str[i][j]!=';' or str[i][j++]!=' ')
                           tip1[l++]=str[i][j++];
                           while(pv)
                                  while(pv->tip[i]==' ')
                                         for (i=1;i<=(strlen(tip1));i++) 
                                          pv->tip[i]=tip1[i];
                                  pv=pv->p;
                           i++;
                        }
        k=1;l=1;s=0;
        while(strstr(str[i],s3)!=NULL)
                  if(strstr(str[i],":="))
                                          s=j;
                           while(str[i][j]!=';')
                                    for(j=s;j<=m;j++)
                                           per1[k++]=str[i][j];
                          
                          k=1;          
                          for(i=s;i>=1;i++)
                                     while(str[i][j]!=' ')
                                               per2[k++]=str[i][j];
        k=1;
        pv=*top;
        while(pv)
                   {  if(per1==pv->per)                                  
                         {   k++;
                             for (i=1;i<=(strlen(pv->tip));i++) 
                                        tip2[i]=pv->tip[i];
                         }
                             pv=pv->p;
                   }          
        if(k!=1)
                printf("ispolsuemaya peremennaya ne naydena.\n");
        pv=*top;
        k=1;
        while(pv)
                   {  if(per2==pv->per)                                  
                         {   k++;
                             for (i=1;i<=(strlen(pv->tip));i++) 
                                        tip2[i]=pv->tip[i];
                         }
                      pv=pv->p;
                   }          
        if(k!=1)
                printf("ispolsuemaya peremennaya ne naydena.\n");
        if (tip1!=tip2)                                     
                printf("nesootvetstvie tipov.\n");                         
    
}
lubafffka вне форума Ответить с цитированием
Старый 04.12.2009, 00:56   #7
lubafffka
Пользователь
 
Регистрация: 05.11.2008
Сообщений: 46
По умолчанию

Код:
//---
void menu(void) //меню
 {int k;
 // clrscr();
  printf("menu\n1. prosmotr\n2. poisk oshibok\n3. exit\nvash vybor: ");
  scanf("%d",&k);
  switch (k)
   {case 1:{prosmotr(); menu(); break;}
    case 2:{void oshibki(stack *pv); menu(); break;}
    case 3:{break;}}
  return;} 
//----  
  void prosmotr(void)
{  FILE *f;
   char name[30],str[m];         
printf("---");
printf ("\nWrite name of file: ");
scanf("%s",&name);                          // имя файла
while(( f=fopen (name,"rt"))==NULL)
{printf("fail s dannym imenim ne sushchestvuet\nimya faila: ");
   scanf("%s",&name);}
printf("\n vasha programma:\n");
while(!feof(f))
               {fgets(str,m,f);
               puts(str);
               }
fclose(f);
}
lubafffka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Игнорирование ошибок mephist Microsoft Office Excel 3 24.07.2009 09:58
Обработка ошибок Liones БД в Delphi 12 04.12.2008 07:22
обнаружение ошибок makar575 Фриланс 3 18.12.2007 07:56
Обработка ошибок. Serviceprofi Помощь студентам 7 19.11.2007 15:12