Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Написать программу которая проверяет на корректность целые переменные и массивы char
- /* План
- * 1. Поиск первого инта в текстовике.
- * 1.1 Разделение изначального массива на кусок с нужными интами. Готово.
- * 2. Проверка на точку с запятой. Если не находит-программа вырубается. Готово.
- * 3. Проверка на количество слов int/char в строке. Если больше одного-программа вырубается. Готово.
- * 4. Проверка на
- * 5. И тд проверки до ...
- * 5.1
- */
- //
- #include <iostream>// поиск вызов поверки..
- #include <math.h>
- #include <fstream>
- #include <string.h>
- using namespace std;
- char s[1000];
- int j;
- //функции int
- int cheking_point_int(int n)// проверка на точку с запятой (работает)
- {
- int kol=0; int i,error_point = 0;
- // место где начинается синтаксис переменных
- for(i = 0; i<=n; i++)
- {
- //проверка на точку с запятой ";"
- if(s[i]==';' && s[i+1]=='\n')//if(s[i]==';' && s[i+1]=='\n')
- kol++;
- }
- cout<<"Kolvo strok="<<kol<<endl;
- for (i=1;i<=n;i++)
- if ((s[i]=='\n')&&(s[i-1]!=';')){
- error_point=1;
- break;}
- return error_point;
- }
- int counter_int (int n){
- int error=0,k=0,i;
- for (i=0;i<n;i++) {
- if((s[i] == 'i' && s[i+1] == 'n' && s[i+2] == 't')||(s[i-2]!=';' && s[i] == 'i' && s[i+1] == 'n' && s[i+2] == 't'))
- k++;
- if((s[i] == '\n') && (k>1))
- {
- cout<<"Bad!"<<endl;
- k=0;
- error=1;
- break;
- }
- if ((s[i]=='\n')&&(k<=1)) {
- cout<<"Good!"<<endl;
- k=0; }
- }
- return error;
- }
- int perezapis_int (char* c, int n)// перезапись
- {
- int error = 0, k = 0, i;
- j = 0;
- for (i=0;i<=n;i++)
- if (((c[i]=='i')&&(c[i+1]=='n')&&(c[i+2]=='t'))||((c[i]=='c')&&(c[i+1]=='h')&&(c[i+2]=='a')&&(c[i+3]=='r'))){
- k=i;
- break;}
- if ((k!=0)||(k==0)) {//(k!=0) ошибка будет тут
- for (i=k;i<=n;i++){
- s[j]=c[i];
- j++;}
- }
- else {
- cout<<"BiG ProbleM"<<endl;
- exit(0);
- }
- return j;
- }
- int cheking_correct_int(int n)//число в начале перменной
- {
- int error = 0, i = 0;
- for (i=0;i<n;i++)
- if(((s[i]>=48)&&(s[i]<=57))&&(s[i-1]==32))
- {
- error = 1;
- break;
- }
- return error;
- }
- int cheking_int(int n)//счетчик int (но тут должна быть проверка корректного написания int)
- {
- int error=0, i, k = 0;
- for(i=0;i<n;i++)
- {
- if(s[i] == 'i' && s[i+1] == 'n' && s[i+2] == 't')
- {
- k++;
- }
- }
- cout<<"colli4estvo int: "<<k<<endl;
- if(k>=0)
- {
- error = 0;
- }
- return error;
- }
- int cheking_pavno(int n)//присвоение значений без пробелов (вроде работает)
- {
- int error=0, i;
- for(i=0;i<n;i++)
- {
- if(s[i]=='=')
- {
- while((s[i]!=',')||(s[i]!=';'))
- {
- if(((s[i+1]>=48) && (s[i+1]<=57))||((s[i+2]>=48) && (s[i+2]<=57)))// диапозон целочисленных значений ascii
- {
- cout << "Diapozon norm" << endl;
- break;
- }
- else
- {
- cout << "Diapozon ne norm"<< endl;
- error = 1;
- break;
- }
- }
- }
- }
- return error;
- }
- int check_for_assignment_of_int_values(int n)//проверка на присвоение переменной значений (целые числа)
- {
- int error=0, i;
- for(i=0;i<n;i++)
- {
- if(s[i]=='=')
- {
- while((s[i+1]!=';')&&(s[i+1]!=','))//while(s[i+1]!=';')
- {
- if(((s[i+1]>=48) && (s[i+1]<=57))||s[i+1]=='-')
- {
- //cout<<s[i+1]<<endl;
- }
- else
- {
- error = 1;
- break;
- }
- i++;
- }
- }
- }
- return error;
- }
- int checking_for_variables(int n)// проверка на запятаю между переменными (оч сложная штука)нет! ничего сложного не бывает.Я нормальный.
- {
- int error = 0, i;
- for(i=0;i<n;i++)
- {
- if(s[i]==' ')
- {
- //cout<< "!!!!!!!: " << s[i-1] << endl;
- if((s[i-1]==',')||(s[i-1]=='t')||(s[i-1]=='r')||(s[i-1]=='\n'))// если будет ошибка скорее всего она сдесь
- {
- }
- else
- {
- error = 1;
- break;
- }
- }
- }
- return error;
- }
- //функции char
- int cheking_char(int n)// проверка на колличество скобочек [] и {}
- {
- int error=0, i, t = 0, y = 0;
- for(i=0;i<n;i++)
- {
- if(s[i]=='[')
- {
- t = t + 1;
- }
- if(s[i]==']')
- {
- t = t + 1;
- }
- if(s[i]=='{')
- {
- y = y + 1;
- }
- if(s[i]=='}')
- {
- y = y + 1;
- }
- }
- if(t%2 == 0) //если t чётное
- {
- cout<<"skobki norm"<<endl;
- }
- else
- {
- error=1;
- }
- if(y%2 == 0) //если t чётное
- {
- cout<<"skobki norm"<<endl;
- }
- else
- {
- error=1;
- }
- return error;
- }
- int checking_for_numbers_in_parenthesis_char(int n)//проврека на размерность массива
- {
- int error=0, i, r;
- for (i=0;i<n;i++)
- {
- if(s[i]=='[')
- {
- while(s[i+1]!=']')
- {
- if((s[i+1]>=48)&&(s[i+1]<=57))
- {
- }
- else
- {
- error = 1;
- break;
- }
- // cout << s[i+1] << endl;
- i++;
- }
- }
- }
- return error;
- }
- int checking_for_the_first_character_of_an_array(int n)// проверка на символ перед скобочкой массива
- {
- int error=0, i=0, score = 1;
- for(i=0; i<n; i++)
- {
- if(s[i]=='[')
- {
- if(s[i-1]>=97 && s[i-1]<=122)// 97 122
- {
- score = 0;
- }
- else
- {
- error = 1;
- break;
- }
- }
- }
- return error;
- }
- int main()
- {
- ifstream ttt;
- int error1 = 0, n = 0, i = 0, rrr = 0;
- char c[1000],buff;
- ttt.open("C:\\Users\\User\\Desktop\\aaa.txt",ios::in);
- if (!ttt.is_open()){
- cout<<"error opening file";
- }
- else{
- while (ttt >> noskipws >> buff)
- {
- c[i] = buff;
- i++;
- n++;
- }
- cout<<"Mystrign is:"<<endl;
- cout << endl;
- ttt.close();
- rrr = rrr+n;
- for (i = 0; i < rrr ; i++)
- {
- cout << c[i];
- }
- cout << endl;
- cout << "coll elem vsego: " << n << endl;
- //вызоы функции перезаписи
- n = perezapis_int(c,n);
- cout << "coll elem new: " << n << endl;
- cout<<endl;
- cout<<"My new string: "<<endl;
- cout<<endl;
- for (i = 0; i < n-1 ; i++)
- {
- cout << s[i];// s[i] с ключегого слова
- }
- cout<<endl;
- //вызовы функций проверки int
- error1=cheking_point_int(n);
- if (error1==0) {
- cout << "First stage is good!"<<endl;
- }
- else {
- cout<<"Error! Exit."<<endl;
- exit(0);
- }
- //
- error1=counter_int(n);
- if (error1==0) {
- cout << "Second stage is good!"<<endl;
- }
- else {
- cout<<"Error! Exit."<<endl;
- exit(0);
- }
- //
- error1=cheking_correct_int(n);
- if (error1==0) {
- cout << "Third stage is good!"<<endl;
- }
- else {
- cout<<"Error! Exit."<<endl;
- exit(0);
- }
- //
- error1=cheking_int(n);
- if (error1==0) {
- cout << "Third stage is good!"<<endl;
- }
- else {
- cout<<"Error! Exit."<<endl;
- exit(0);
- }
- // присвоение значений целому типу переменных int = 2323;
- error1=cheking_pavno(n);
- if(error1==0){
- cout << "Third stage is good!" << endl;
- }
- else{
- cout<<"Error! Exit."<<endl;
- exit(0);
- }
- error1=check_for_assignment_of_int_values(n);
- if(error1==0){
- cout << "Third stage is good!" << endl;
- }
- else{
- cout<<"Error! Exit."<<endl;
- exit(0);
- }
- //вызовы функций проверки char
- // проверка на скобочки []
- error1=cheking_char(n);
- if(error1==0){
- cout << "Third stage is good!" << endl;
- }
- else{
- cout<<"Error! Exit."<<endl;
- exit(0);
- }
- // проверка на числа в скобочках у char
- error1=checking_for_numbers_in_parenthesis_char(n);
- if(error1==0){
- cout << "Third stage is good!" << endl;
- }
- else{
- cout<<"Error! Exit."<<endl;
- exit(0);
- }
- // вызов проверки есть ли перед скобочкой нормальный символ массива
- error1=checking_for_the_first_character_of_an_array(n);
- if(error1==0){
- cout << "Third stage is good!" << endl;
- }
- else{
- cout<<"Error! Exit."<<endl;
- exit(0);
- }
- // вызов функции проверки на запятые между переменными int и массивами char
- error1=checking_for_variables(n);
- if(error1==0){
- cout << "Third stage is good!" << endl;
- }
- else{
- cout<<"Error! Exit."<<endl;
- exit(0);
- }
- // конец всех проверок и просто всего
- cout << endl;
- cout << "Otvet:" <<endl;
- cout << endl;
- if(error1 == 0)
- {
- cout << "The syntax is correct (yes)" << endl;
- }
- else
- cout << "The syntax is no correct (no)" << endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement