Advertisement
Guest User

pomogite

a guest
Dec 6th, 2019
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 29.22 KB | None | 0 0
  1. #pragma hdrstop
  2.  
  3. //-------------------------------------------------------------------------—
  4. #pragma hdrstop
  5.  
  6. //-------------------------------------------------------------------------—
  7.  
  8. #pragma argsused
  9. #include<iostream>
  10. #include<fstream>
  11. #include<string>
  12. #include<vector>
  13.  
  14. using namespace std;
  15. vector<string>v_int;
  16. vector<string>v_float;
  17. vector<string>v_char;
  18. vector<string> varName;
  19. string item_name;
  20.  
  21. using namespace std;
  22.  
  23. class errors
  24. {
  25. public:
  26.     string c="nothing vars";
  27.     string d="basic type is wrong";
  28.     string e="vars cannt be";
  29.     string j = "after int nothing right';'";
  30.     string k = "after char nothin right';'";
  31.     string n = "after float nothing right';'";
  32.     string m = "Extra characters in the program";
  33.     string u = "no ';'";
  34.     string p = "Your variable is incorrectly assigned";
  35.     string r = "Extra comma";
  36.     string l = "no variables";
  37. }errors;
  38.  
  39. string eraseSpaces(string &item_name){
  40.     for(int i = 0; i < item_name.size(); i++){
  41.         if(item_name[i] != 32){
  42.             break;
  43.         }
  44.         if(item_name[i] == ' ' || item_name[i] == '\t'){ //удаляем все пробелы
  45.             item_name.erase(i, 1); //  удалить 1 символ
  46.             i--;
  47.         }
  48.     }
  49.     return item_name;
  50. }
  51.  
  52. int proverkafloat(string &item_name, int i, int e){
  53.     string b, c, a = item_name, k1;
  54.     int  m = 0, d, flag, flug = 0, k, q = 0, n = 0, s1 = 0, x = 0;
  55.     for(i; i < item_name.size(); i++)
  56.     {
  57.         if(item_name[i] != 32){
  58.             break;
  59.         }
  60.     }
  61.     for(i; i < item_name.size(); i++){
  62.         for (d = i; a[d] != ';'; d++) {
  63.             for(d; a[d] == ' ' ; d++){
  64.                 flag = 0;
  65.             }
  66.             string k2;
  67.             s1 = 1;
  68.             if ((a[d] >= 65 && a[d] <= 90) || (a[d] >= 97 && a[d] <= 122))
  69.             {
  70.                 k2 += a[d];
  71.                 flug = 1;
  72.                 for (k = d+1; a[k] != '='; k++) {
  73.                     for(k; a[k] == ' ' ; k++){
  74.                         flag = 0;
  75.                     }
  76.                     if (a[k] == ';'){
  77.                         break;
  78.                     }
  79.                     if (a[k] == ','){
  80.                         q = 1;
  81.                         break;
  82.                     }
  83.                     if (a[k] == '\0'){
  84.                         cout << errors.u << endl << "Ошибка в строке: " << e << endl;
  85.                         m = 1;
  86.                         break;
  87.                     }
  88.                     if(a[k] == '='){
  89.                         break;
  90.                     }
  91.                     if ((a[k] >= 48 && 57 >= a[k]) || (a[k] >= 65 && a[k] <= 90) || (a[k] >= 97 && a[k] <= 122)){
  92.                         k2 += a[k];
  93.                     }
  94.                     else{
  95.                         cout << errors.e << endl << "Ошибка в строке: " << e << endl;
  96.                         m = 1;
  97.                         break;
  98.                     }
  99.                 }
  100.             }
  101.             else{
  102.                 cout << errors.e << endl << "Ошибка в строке: " << e << endl;
  103.                 m = 1;
  104.                 break;
  105.             }
  106.             if ((flug = 1)){
  107.                 d = k;
  108.             }
  109.             v_float.push_back(k2);
  110.             varName.push_back(k2);
  111.             for (int x = 0; k2[x] != '\0'; x++) {
  112.                 k2[x] = '\0';
  113.             }
  114.             if (a[d] == '='){
  115.                 d++;
  116.                 for(d; a[d] == ' '; d++){
  117.                     flag = 0;
  118.                 }
  119.                 if (a[d] == ';'){
  120.                     cout << errors.p << endl << "Ошибка в строке: " << e << endl;
  121.                     m = 1;
  122.                     break;
  123.                 }
  124.                 if (a[d+1] == '\0'){
  125.                     cout << errors.u << endl << "Ошибка в строке: " << e << endl;
  126.                     m = 1;
  127.                     break;
  128.                 }
  129.                 if (a[d] >= 48 && a[d] <= 57){
  130.                     for(d; a[d] != ','; d++){
  131.                         if(a[d] == ';'){
  132.                             break;
  133.                         }
  134.                         if ((a[d] >= 48 && a[d] <= 57) || (a[d] == '.')){
  135.                             flag = 1;
  136.                         }
  137.                         else {
  138.                             cout << errors.p << endl << "Ошибка в строке: " << e << endl;
  139.                             m = 1;
  140.                             break;
  141.                         }
  142.                         if (a[d] == '.'){
  143.                             x = 1;
  144.                             for(d; a[d] == ' ' ; d++){
  145.                                 flag = 0;
  146.                             }
  147.                             if (a[d+1] == ';'){
  148.                                 flag = 1;
  149.                             }
  150.                             if (a[d+1] == '\0'){
  151.                                 cout << errors.u << endl << "Ошибка в строке: " << e << endl;
  152.                             }
  153.                         }
  154.                     }
  155.                 }
  156.                 else{
  157.                     cout << errors.p << endl << "Ошибка в строке: " << e << endl;
  158.                     m = 1;
  159.                     break;
  160.                 }
  161.                 if(x != 1){
  162.                     cout << errors.p << endl << "Ошибка в строке: " << e << endl;
  163.                     m = 1;
  164.                     break;
  165.                 }
  166.             }
  167.             if((q == 1) || (a[d+1] == ',')){
  168.                 for(d; a[d] == ' ' ; d++){
  169.                     flag = 0;
  170.                 }
  171.                 if (a[d] == ';' ){
  172.                     cout << errors.r << endl << "Ошибка в строке: " << e << endl;
  173.                     m = 1;
  174.                     break;
  175.                 }
  176.                 if (a[d] == ',' && a[d+1] == ';' ){
  177.                     cout << "Лишняя запятая" << endl << "Ошибка в строке: " << e << endl;
  178.                     m = 1;
  179.                     break;
  180.                 }
  181.                 q = 0;
  182.                 d++;
  183.             }
  184.             if (a[d+1] == ',' ){
  185.                 cout << "Лишняя запятая" << endl << "Ошибка в строке: " << e << endl;
  186.                 m = 1;
  187.                 break;
  188.             }
  189.             if(m == 1){
  190.                 break;
  191.             }
  192.             i = d;
  193.             if(a[i] == ';'){
  194.                 break;
  195.             }
  196.         }
  197.         if(m == 1){
  198.             i = item_name.size();
  199.             break;
  200.         }
  201.         i = d;
  202.     }
  203.     if (s1 == 0){
  204.         cout << errors.l << endl << "Ошибка в строке: " << e << endl;
  205.     }
  206.     i = d;
  207.     return i;
  208. }
  209.  
  210. int proverkachar(string &item_name, int i, int e){
  211.     string b, c, a = item_name;
  212.     int  m = 0, d, flag, flug = 0, k, q = 0, n = 0, s1 = 0;
  213.     for(i; i < item_name.size(); i++){
  214.         if(item_name[i] != 32){
  215.             break;
  216.         }
  217.     }
  218.     for(i; i < item_name.size(); i++){
  219.         for (d = i; a[d] != ';'; d++) {
  220.             for(d; a[d] == ' ' ; d++){
  221.                 flag = 0;
  222.             }
  223.             string k2;
  224.             s1 = 1;
  225.             if ((a[d] >= 65 && a[d] <= 90) || (a[d] >= 97 && a[d] <= 122)){
  226.                 flug = 1;
  227.                 k2 += a[d];
  228.                 for (k = d+1; a[k] != '='; k++) {
  229.                     for(k; a[k] == ' ' ; k++){
  230.                         flag = 0;
  231.                     }
  232.                     if (a[k] == ';'){
  233.                         break;
  234.                     }
  235.                     if (a[k] == ','){
  236.                         q = 1;
  237.                         break;
  238.                     }
  239.                     if (a[k] == '\0'){
  240.                         cout << errors.u << endl << "Ошибка в строке: " << e << endl;
  241.                         m = 1;
  242.                         break;
  243.                     }
  244.                     if(a[k] == '='){
  245.                         break;
  246.                     }
  247.                     if ((a[k] >= 48 && 57 >= a[k]) || (a[k] >= 65 && a[k] <= 90) || (a[k] >= 97 && a[k] <= 122)){
  248.                         k2 += a[k];
  249.                     }
  250.                     else{
  251.                         cout << errors.e << endl << "Ошибка в строке: " << e << endl;
  252.                         m = 1;
  253.                         break;
  254.                     }
  255.                 }
  256.             }
  257.             else{
  258.                 cout << errors.e << endl << "Ошибка в строке: " << e << endl;
  259.                 m = 1;
  260.                 break;
  261.             }
  262.             if ((flug = 1)){
  263.                 d = k;
  264.             }
  265.             v_char.push_back(k2);
  266.             varName.push_back(k2);
  267.             for (int x = 0; k2[x] != '\0'; x++) {
  268.                 k2[x] = '\0';
  269.             }
  270.             if (a[d] == '='){
  271.                 d++;
  272.                 for(d; a[d] == ' '; d++){
  273.                     flag = 0;
  274.                 }
  275.                 if (a[d] == ';'){
  276.                     cout << errors.p << endl << "Ошибка в строке: " << e << endl;
  277.                     m = 1;
  278.                     break;
  279.                 }
  280.                 if (a[d+1] == '\0'){
  281.                     cout << errors.u << endl << "Ошибка в строке: " << e << endl;
  282.                     m = 1;
  283.                     break;
  284.                 }
  285.                 if (a[d] == 39){
  286.                     d++;
  287.                     if (a[d] >= 0 && a[d] <= 127){
  288.                         d++;
  289.                     }
  290.                     if (a[d] != 39){
  291.                         // cout << errors.x << endl << "Ошибка в строке: " << e << endl;
  292.                     }
  293.                 }
  294.                 else{
  295.                     cout << errors.p << endl << "Ошибка в строке: " << e << endl;
  296.                     m = 1;
  297.                     break;
  298.                 }
  299.             }
  300.             if(q == 1 || (a[d+1] == ',')){
  301.                 for(d; a[d] == ' ' ; d++){
  302.                     flag = 0;
  303.                 }
  304.                 if (a[d] == ';' ){
  305.                     cout << errors.r << endl << "Ошибка в строке: " << e << endl;
  306.                     m = 1;
  307.                     break;
  308.                 }
  309.                 if (a[d] == ',' && a[d+1] == ';' ){
  310.                     cout << "Лишняя запятая" << endl << "Ошибка в строке: " << e << endl;
  311.                     m = 1;
  312.                     break;
  313.                 }
  314.                 q = 0;
  315.                 d++;
  316.             }
  317.             if (a[d+1] == ',' ){
  318.                 cout << "Лишняя запятая" << endl << "Ошибка в строке: " << e << endl;
  319.                 m = 1;
  320.                 break;
  321.             }
  322.             if(m == 1){
  323.                 break;
  324.             }
  325.             i = d;
  326.             if(a[i] == ';'){
  327.                 break;
  328.             }
  329.         }
  330.         if(m == 1){
  331.             i = item_name.size();
  332.             break;
  333.         }
  334.         i = d;
  335.     }
  336.     if (s1 == 0){
  337.         cout << errors.l << endl << "Ошибка в строке: " << e << endl;
  338.     }
  339.     i = d;
  340.     return i;
  341. }
  342. int proverkaint(string &item_name, int i, int e)
  343. {
  344.     string b, c, a = item_name, h;
  345.     int  m = 0, d, flag, flug = 0, k, q = 0, n = 0, s1 = 0, s2 = 0;
  346.     for(i; i < item_name.size(); i++){
  347.         if(item_name[i] != 32){
  348.             break;
  349.         }
  350.     }
  351.     for(i; i < item_name.size(); i++){
  352.         for (d = i; a[d] != ';'; d++) {
  353.            
  354.             for(d; a[d] == ' ' ; d++){
  355.                 flag = 0;
  356.             }
  357.             string k2;
  358.             s1 = 1;
  359.             if ((a[d] >= 65 && a[d] <= 90) || (a[d] >= 97 && a[d] <= 122)){
  360.                 k2 += a[d];
  361.                 flug = 1;
  362.                 for (k = d+1; a[k] != '='; k++) {
  363.                     for(k; a[k] == ' ' ; k++){
  364.                         flag = 0;
  365.                     }
  366.                     if (a[k] == ';'){
  367.                         break;
  368.                     }
  369.                     if (a[k] == ','){
  370.                         q = 1;
  371.                         break;
  372.                     }
  373.                     if (a[k] == '\0'){
  374.                         cout << errors.u << endl << "Ошибка в строке: " << e << endl;
  375.                         m = 1;
  376.                         break;
  377.                     }
  378.                     if(a[k] == '='){
  379.                         break;
  380.                     }
  381.                     if ((a[k] >= 48 && 57 >= a[k]) || (a[k] >= 65 && a[k] <= 90) || (a[k] >= 97 && a[k] <= 122)){
  382.                         k2 += a[k];
  383.                     }
  384.                     else{
  385.                         cout << errors.e << endl << "Ошибка в строке: " << e << endl;
  386.                         m = 1;
  387.                         break;
  388.                     }
  389.                 }
  390.             }
  391.             else{
  392.                 cout << errors.e << endl << "Ошибка в строке: " << e << endl;
  393.                 m = 1;
  394.                 break;
  395.             }
  396.             if ((flug = 1)){
  397.                 d = k;
  398.             }
  399.             varName.push_back(k2);
  400.             v_int.push_back(k2);
  401.             for (int x = 0; k2[x] != '\0'; x++) {
  402.                 k2[x] = '\0';
  403.             }
  404.             if (a[d] == '='){
  405.                 d++;
  406.                 for(d; a[d] == ' '; d++){
  407.                     flag = 0;
  408.                 }
  409.                 if (a[d] == ';'){
  410.                     cout << errors.p << endl << "Ошибка в строке: " << e << endl;
  411.                     m = 1;
  412.                     break;
  413.                 }
  414.                 if (a[d+1] == '\0'){
  415.                     cout << errors.u << endl << "Ошибка в строке: " << e << endl;
  416.                     m = 1;
  417.                     break;
  418.                 }
  419.                 if (a[d] != 48 && a[d] >= 49 && a[d] <= 57){
  420.                     for(d; a[d] != ','; d++){
  421.                         if(a[d] == ';'){
  422.                             break;
  423.                         }
  424.                         if (a[d] >= 48 && a[d] <= 57){
  425.                             flag = 0;
  426.                         }
  427.                         else {
  428.                             cout << errors.p << endl << "Ошибка в строке: " << e << endl;
  429.                             m = 1;
  430.                             break;
  431.                         }
  432.                     }
  433.                 }
  434.                 else{
  435.                     cout << errors.p << endl << "Ошибка в строке: " << e << endl;
  436.                     m = 1;
  437.                     break;
  438.                 }
  439.             }
  440.             if((q == 1) || (a[d+1] == ',')){
  441.                 for(d; a[d] == ' ' ; d++){
  442.                     flag = 0;
  443.                 }
  444.                 if (a[d] == ';' ){
  445.                     cout << errors.r << endl << "Ошибка в строке: " << e << endl;
  446.                     m = 1;
  447.                     break;
  448.                 }
  449.                 if (a[d] == ',' && a[d+1] == ';' ){
  450.                     cout << "Лишняя запятая" << endl << "Ошибка в строке: " << e << endl;
  451.                     m = 1;
  452.                     break;
  453.                 }
  454.                 q = 0;
  455.                 d++;
  456.             }
  457.             if (a[d+1] == ',' ){
  458.                 cout << "Лишняя запятая" << endl << "erorr: " << e << endl;
  459.                 m = 1;
  460.                 break;
  461.             }
  462.            
  463.             if(m == 1){
  464.                 break;
  465.             }
  466.             i = d;
  467.             if(a[i] == ';'){
  468.                 break;
  469.             }
  470.         }
  471.         if(m == 1){
  472.             i = item_name.size();
  473.             break;
  474.         }
  475.         i = d;
  476.     }
  477.     if (s1 == 0){
  478.         cout << errors.l << endl << "Ошибка в строке: " << e << endl;
  479.     }
  480.     i = d;
  481.     return i;
  482. }
  483. int proverkaprozent(string &item_name, int e){
  484.     string b, c, a = item_name, k2;
  485.     int  m = 0, d, flag, flug = 0, k, q = 0, n = 0, s1 = 0, i, g = 0;
  486.     for(i = 0; i < item_name.size(); i++){
  487.         if(item_name[i] != 32){
  488.             break;
  489.         }
  490.     }
  491.     for (i; i < item_name.size(); i++) {
  492.         for (d = i; a[d] != ';'; d++) {
  493.            
  494.             for(d; a[d] == ' ' ; d++){
  495.                 flag = 0;
  496.             }
  497.             s1 = 1;
  498.             if ((a[d] >= 65 && a[d] <= 90) || (a[d] >= 97 && a[d] <= 122)){
  499.                 flug = 1;
  500.                 k2 = a[d];
  501.                 for (k = d; a[k] != ';'; k++) {
  502.                     k++;
  503.                     for(k; a[k] == ' ' ; k++){
  504.                         flag = 0;
  505.                     }
  506.                     if (a[k] == ';'){
  507.                         break;
  508.                     }
  509.                     if (a[k] == '%'){
  510.                         for(int x = 0; x < v_int.size(); x++){
  511.                             if(v_int[x] == k2){
  512.                                 n = 1;
  513.                                 break;
  514.                             }
  515.                         }
  516.                         if (n != 1){
  517.                             cout << "No right tip)" << endl;
  518.                             m = 1;
  519.                             break;
  520.                         }
  521.                     }
  522.                     if (a[k] == '\0'){
  523.                         cout << errors.u << endl << "Ошибка в строке: " << e << endl;
  524.                         m = 1;
  525.                         break;
  526.                     }
  527.                     if(a[k] == '='){
  528.                         break;
  529.                     }
  530.                     if ((a[k] >= 48 && 57 >= a[k]) || (a[k] >= 65 && a[k] <= 90) || (a[k] >= 97 && a[k] <= 122)){
  531.                         k2 += a[k];
  532.                     }
  533.                     else{
  534.                         cout << errors.e << endl << "Ошибка в строке: " << e << endl;
  535.                         m = 1;
  536.                         break;
  537.                     }
  538.                 }
  539.             }
  540.             else{
  541.                 cout << errors.e << endl << "Ошибка в строке: " << e << endl;
  542.                 m = 1;
  543.                 break;
  544.             }
  545.             for (int x = 0; k2[x] != '\0'; x++) {
  546.                 k2[x] = '\0';
  547.             }
  548.             if ((flug = 1)){
  549.                 d = k;
  550.             }
  551.             if (a[d] == '='){
  552.                 d++;
  553.                 for(d; a[d] == ' '; d++){
  554.                     flag = 0;
  555.                 }
  556.                 if (a[d] == ';'){
  557.                     cout << errors.p << endl << "Ошибка в строке: " << e << endl;
  558.                     m = 1;
  559.                     break;
  560.                 }
  561.                 if (a[d+1] == '\0'){
  562.                     cout << errors.u << endl << "Ошибка в строке: " << e << endl;
  563.                     m = 1;
  564.                     break;
  565.                 }
  566.                 if ((a[d] >= 65 && a[d] <= 90) || (a[d] >= 97 && a[d] <= 122)){
  567.                     k2 = a[d];
  568.                     for(d; a[d] != '%'; d++){
  569.                         d++;
  570.                         g = 1;
  571.                         if(a[d] == '%'){
  572.                             break;
  573.                         }
  574.                         for(d; a[d] == ' '; d++){
  575.                             flag = 0;
  576.                         }
  577.                         if ((a[d] >= 48 && 57 >= a[d]) || (a[d] >= 65 && a[k] <= 90) || (a[d] >= 97 && a[d] <= 122)){
  578.                             k2 += a[d];
  579.                         }
  580.                         else {
  581.                             cout << errors.p << endl << "Ошибка в строке: " << e << endl;
  582.                             m = 1;
  583.                             break;
  584.                         }
  585.                     }
  586.                     for(int x = 0; x < v_int.size(); x++){
  587.                         if(v_int[x] == k2){
  588.                             n = 1;
  589.                             break;
  590.                         }
  591.                     }
  592.                     if (n != 1){
  593.                         cout << "No right tip)" << endl;
  594.                         m = 1;
  595.                         break;
  596.                     }
  597.                     n = 0;
  598.                     for (int x = 0; k2[x] != '\0'; x++) {
  599.                         k2[x] = '\0';
  600.                     }
  601.                 }
  602.                 else{
  603.                     cout << errors.p << endl << "Ошибка в строке: " << e << endl;
  604.                     m = 1;
  605.                     break;
  606.                 }
  607.             }
  608.             for(d; a[d] == ' '; d++){
  609.                 flag = 0;
  610.             }
  611.             if(g == 1){
  612.                 d++;
  613.                 if ((a[d] >= 65 && a[d] <= 90) || (a[d] >= 97 && a[d] <= 122)){
  614.                     k2 = a[d];
  615.                     for(d; a[d] != ';'; d++){
  616.                         d++;
  617.                         if(a[d] == '%'){
  618.                             break;
  619.                         }
  620.                         if(a[d] == ';'){
  621.                             break;
  622.                         }
  623.                         for(d; a[d] == ' '; d++){
  624.                             flag = 0;
  625.                         }
  626.                         if ((a[d] >= 48 && 57 >= a[d]) || (a[d] >= 65 && a[k] <= 90) || (a[d] >= 97 && a[d] <= 122)){
  627.                             k2 += a[d];
  628.                         }
  629.                         else {
  630.                             cout << errors.p << endl << "Ошибка в строке: " << e << endl;
  631.                             m = 1;
  632.                             break;
  633.                         }
  634.                     }
  635.                     for(int x = 0; x < v_int.size(); x++){
  636.                         if(v_int[x] == k2){
  637.                             n = 1;
  638.                             break;
  639.                         }
  640.                     }
  641.                     if (n != 1){
  642.                         cout << "No right tip)" << endl;
  643.                         m = 1;
  644.                         break;
  645.                     }
  646.                     n = 0;
  647.                 }
  648.             }
  649.             g = 0;
  650.             if(m == 1){
  651.                 break;
  652.             }
  653.             i = d;
  654.             if(a[i] == ';'){
  655.                 break;
  656.             }
  657.         }
  658.         if(m == 1){
  659.             i = item_name.size();
  660.             break;
  661.         }
  662.         i = d;
  663.     }
  664.     if (s1 == 0){
  665.         cout << errors.l << endl << "Ошибка в строке: " << e << endl;
  666.     }
  667.     return(i);
  668. }
  669.  
  670. void godalshe1(string &item_name){
  671.     ifstream nameFile;
  672.     nameFile.open("analizator.txt");
  673.     int i, d, q = 0, c = 0, l = 0, k = 0, n = 0, s, e = 1, k1 = 0, k2 = 0, k3 = 0, k9 = 0;
  674.     char h;
  675.     string b;
  676.     string first = "int";
  677.     string second = "char";
  678.     string third = "float";
  679.     string fourth = "}";
  680.     string obman = "struct";
  681.     while(getline(nameFile, item_name)){
  682.         item_name = eraseSpaces(item_name);
  683.         string a = item_name;
  684.         for (i = 0; i < item_name.size();i++) {
  685.             for (s = 0; b[s] != '\0'; s++) {
  686.                 b[s] = '\0';
  687.             }
  688.             for (d = 0; a[d] != ' '; d++) {
  689.                 if (a[d] == '\0'){
  690.                     q = 1;
  691.                     break;
  692.                 }
  693.                 h = a[d];
  694.                 b[d] = h;
  695.             }
  696.             if (strcmp(first.c_str(), b.c_str()) == 0){
  697.                 if(q == 1){
  698.                     cout << errors.j << endl;;
  699.                     break;
  700.                 }
  701.                 i = proverkaint(item_name, d, e);
  702.                 k2 = 1;
  703.             }
  704.             q = 0;
  705.             for (s = 0; b[s] != '\0'; s++) {
  706.                 b[s] = '\0';
  707.             }
  708.             for (d = 0; a[d] != ' '; d++) {
  709.                 if (a[d] == '\0'){
  710.                     c = 1;
  711.                     break;
  712.                 }
  713.                 h = a[d];
  714.                 b[d] = h;
  715.             }
  716.             if (strcmp(second.c_str(), b.c_str()) == 0){
  717.                 if(c == 1){
  718.                     cout << errors.k << endl;
  719.                     break;
  720.                 }
  721.                 i =  proverkachar(item_name, d, e);
  722.                 k3 = 1;
  723.             }
  724.             c = 0;
  725.             for (s = 0; b[s] != '\0'; s++) {
  726.                 b[s] = '\0';
  727.             }
  728.             for (d = 0; a[d] != ' '; d++) {
  729.                 if (a[d] == '\0'){
  730.                     l = 1;
  731.                     break;
  732.                 }
  733.                 h = a[d];
  734.                 b[d] = h;
  735.             }
  736.             if (strcmp(third.c_str(), b.c_str()) == 0){
  737.                 if(l == 1){
  738.                     cout << errors.n << endl;
  739.                     break;
  740.                 }
  741.                 i = proverkafloat(item_name, d, e);
  742.                 k1 = 1;
  743.             }
  744.             l = 0;
  745.             for (s = 0; b[s] != '\0'; s++) {
  746.                 b[s] = '\0';
  747.             }
  748.             if (k2 == 1){
  749.                 for (int z = 0; a[z] != ' '; z++) {
  750.                     if (a[z] == '%'){
  751.                        i = proverkaprozent(item_name, e);
  752.                         k2=0;
  753.                     }
  754.                 }
  755.             }
  756.             break;
  757.         }
  758.         //сюда нужно проверку на повторяющиеся переменные
  759.         e++;
  760.     }
  761.     nameFile.close();
  762.    
  763. }
  764. int poisk_int()
  765. {   string iteam_name;
  766.     ifstream nameFileout;
  767.     nameFileout.open("analizator.txt");
  768.     string type="int ";
  769.     string type_main="int main";
  770.     string type_wrong="int int";
  771.     int num_strok=0,j=0;
  772.     int mass[20]={0};
  773.     size_t found;
  774.    
  775.     while(nameFileout)
  776.     {
  777.         getline(nameFileout,iteam_name);
  778.         num_strok++;
  779.         for(int i=0;i<iteam_name.size();i++)
  780.         {
  781.             found=iteam_name.find(type);
  782.             if(found==iteam_name.find(type_main))
  783.             {
  784.                 found = -1;
  785.             }
  786.             if(found==iteam_name.find(type_wrong))
  787.             {
  788.                 found=-2;
  789.                 printf("WRONG: peremenyi\n");
  790.                
  791.                 return 1;
  792.             }
  793.            
  794.             if (found!=string::npos)   //==-1  string::npos
  795.             {
  796.                 mass[j]=num_strok;
  797.                 j++;
  798.                 break;
  799.             }
  800.         }
  801.     }
  802.     int f=j;
  803.    
  804.     for(j=0;j<f;j++)
  805.     {
  806.         printf("number of strok int= %d\n",mass[j]);
  807.     }
  808.     nameFileout.close();
  809.     return 0;
  810. }
  811. int poisk_()
  812. {
  813.     string iteam_name;
  814.     ifstream nameFileout;
  815.     nameFileout.open("analizator.txt");
  816.    
  817.     return 0;
  818. }
  819.  
  820. /*int poisk_1()
  821.  {
  822.  string iteam_name;
  823.  ifstream nameFileout;
  824.  string type="%";
  825.  //string type_1="printf(%";
  826.  
  827.  int num_strok=0,j=0,t=0,mass[10];
  828.  nameFileout.open("analizator.txt");
  829.  while(nameFileout)
  830.  {
  831.  getline(nameFileout,iteam_name);
  832.  num_strok++;
  833.  for(int i=0;i<iteam_name.size();i++)
  834.  {
  835.  size_t found=iteam_name.find(type);
  836.  
  837.  if(found==iteam_name.find(type_1))
  838.  {
  839.  found = -1;
  840.  }
  841.  
  842.  if (found != string::npos)
  843.  {
  844.  mass[j]=num_strok;
  845.  j++;
  846.  break;
  847.  }
  848.  }
  849.  t=j;
  850.  }
  851.  for(j=0;j<t;j++)
  852.  {
  853.  printf("number of strok with= %d\n",mass[j]);
  854.  }
  855.  
  856.  nameFileout.close();
  857.  return 0;
  858.  }
  859.  */
  860. struct vars
  861. {
  862.     char name[20];
  863.     char mass[20];
  864.    
  865. };
  866.  
  867. void poisk_int2()
  868. {   string iteam_name;
  869.     ifstream nameFileout;
  870.     nameFileout.open("analizator.txt");
  871.     string type="int ";
  872.     string type_=" ";
  873.     string type_main="int main";
  874.     size_t found;
  875.     int flag=1;
  876.     vars a;
  877.     while(nameFileout)
  878.     {
  879.         getline(nameFileout,iteam_name);
  880.         for(int i=0;i<iteam_name.size();i++)
  881.         {
  882.             found=iteam_name.find(type);
  883.             if(found==iteam_name.find(type_main))
  884.             {
  885.                 found = -1;
  886.             }
  887.             if (found != string::npos)   //==-1
  888.             {
  889.                 for(i=(found+4);i<iteam_name.size();i++)
  890.                 {
  891.                     if(iteam_name[i]==' '||iteam_name[i]=='\t')
  892.                     {
  893.                        
  894.                        
  895.                         iteam_name.erase(i,1);  //delete 1 sumbhol из номера i
  896.                         i--;
  897.                     }
  898.                 }
  899.                 cout<<iteam_name<<endl;
  900.                 flag=0;
  901.                
  902.             }
  903.         }
  904.     }
  905.    
  906.     for(int i=0;i<iteam_name.size();i++)
  907.     {
  908.         found=iteam_name.find(type_);
  909.         if(found!=string::npos)
  910.         {
  911.             while(iteam_name[i]!=',')
  912.             {
  913.                
  914.                
  915.                 a.name[i]=iteam_name[i];
  916.             }
  917.            
  918.         }
  919.     }
  920.     if(flag)
  921.     {
  922.         printf("WARNING:net int peremenyh\n");
  923.     }
  924.     nameFileout.close();
  925. }
  926.  
  927. int pow()
  928. {
  929.     /*string iteam_name;
  930.      ifstream nameFileout;
  931.      nameFileout.open("analizator.txt");
  932.      char stroka[100];
  933.      while(nameFileout)
  934.      {
  935.      getline(nameFileout,iteam_name);
  936.      for(int i=0;i<iteam_name.size();i++)
  937.      {
  938.      stroka[i]=iteam_name[i];
  939.      }
  940.      
  941.      
  942.      for(int i=0;i<iteam_name.size();i++)
  943.      {
  944.      printf("%c",stroka[i]);
  945.      }
  946.      }
  947.      
  948.      
  949.      
  950.      nameFileout.close(); */
  951.     return 0;
  952. }
  953. int main(int argc, char* argv[])
  954. {
  955.     string item_name;
  956.     int value;
  957.     godalshe1(item_name);
  958.     value=poisk_int();
  959.     poisk_int2();
  960.    
  961.     return 0;
  962. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement