Advertisement
rdsedmundo

spoj.cpp

May 27th, 2014
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.01 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <cstring>
  4. #include <cstdio>
  5. #include <fstream>
  6. #include <dirent.h>
  7. #include <unistd.h>
  8. #include <sys/stat.h>
  9. #include <sys/types.h>
  10. #include <windows.h>
  11.  
  12. using namespace std;
  13.  
  14. int main() {
  15.  
  16.     char fname[128];
  17.  
  18.     cout << "Digite o NOME da pasta onde se encontra os casos de teste."
  19.             << endl;
  20.     cout
  21.             << "Ela precisa estar, obrigatoriamente, na mesma pasta em que se encontra este executável."
  22.             << endl;
  23.     cout << "Arquivo: ";
  24.  
  25.     cin >> fname;
  26.  
  27.     cout << "Especifique o formato das subpastas." << endl;
  28.     cout << "Entre com 0 para teste%%d, 1 para %%d." << endl;
  29.     cout << "Valor: ";
  30.  
  31.     int type_dir;
  32.     cin >> type_dir;
  33.  
  34.     cout << endl;
  35.  
  36.     mkdir("testes");
  37.  
  38.     int count = 0;
  39.     for (int folder = 1;; folder++) {
  40.         char dir[128], buffer[128];
  41.  
  42.         if(!type_dir)
  43.             sprintf(dir, "test%d", folder);
  44.         else
  45.             sprintf(dir, "%d", folder);
  46.  
  47.         sprintf(buffer, "%s\\%s", fname, dir);
  48.  
  49.         DIR *dp = opendir(buffer);
  50.         if(dp == NULL) {
  51.             cout << "O diretório não foi encontrado ["<<buffer<<"]." << endl;
  52.             break;
  53.         }
  54.  
  55.         for (int test = 1;; test++) {
  56.             char ff_in_name[128], ff_out_name[128], new_in_name[128], new_out_name[128];
  57.             sprintf(ff_in_name, "%s\\%s\\in%d", fname, dir, test);
  58.             sprintf(ff_out_name, "%s\\%s\\out%d", fname, dir, test);
  59.  
  60.             ifstream in_ifs;
  61.             in_ifs.open(ff_in_name);
  62.  
  63.             ifstream out_ifs;
  64.             out_ifs.open(ff_out_name);
  65.  
  66.             if (!in_ifs || !out_ifs) {
  67.                 cout << "Arquivo não encontrado ["<<ff_in_name <<"]." << endl;
  68.                 break;
  69.             }
  70.  
  71.             in_ifs.close();
  72.             out_ifs.close();
  73.  
  74.             sprintf(new_in_name, "testes\\%d.in", ++count);
  75.             sprintf(new_out_name, "testes\\%d.out", count);
  76.  
  77.             if(rename(ff_in_name, new_in_name) == 0 && rename(ff_out_name, new_out_name) == 0)
  78.                 cout << "Caso convertido " << ff_in_name << endl;
  79.             else {
  80.                 cout << "Ocorreu um erro durante a conversão de " << ff_in_name << endl;
  81.                 cout << "Tentou: " << new_in_name << endl;
  82.                 break;
  83.             }
  84.         }
  85.  
  86.         closedir(dp);
  87.     }
  88.  
  89.     return 0;
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement