Advertisement
Guest User

Parentesi

a guest
Oct 20th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.24 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <assert.h>
  3. #include <bits/stdc++.h>
  4. #include <stack>
  5. using namespace std;
  6.  
  7. #define MAXN 10000
  8.  
  9. int controlla(int N, char E[]) {
  10. int i,j,k;
  11. char temp;
  12. stack <char> Con;
  13.  
  14. if(N%2==0){
  15. for(i=0;i<N;i++){
  16. if(E[i] == '(' || E[i] == '{' || E[i] == '<'|| E[i] == '['){
  17. Con.push(E[i]);
  18. }else if( E[i] == ')' || E[i] == '}' || E[i] == '>' || E[i] == ']' ){
  19. temp=E[i];
  20. if(temp == ')'){
  21. temp--;
  22. }else{
  23. temp=temp-2;
  24. }
  25. if(!Con.empty()){
  26. if(temp==Con.top()){
  27. Con.pop();
  28.  
  29. }else{
  30. return -1;
  31. }
  32. }else{
  33. return -1;
  34. }
  35. }
  36.  
  37. }
  38. }else {
  39. return -1;
  40. }
  41. return 0;
  42. }
  43.  
  44.  
  45. char E[MAXN + 5]; // Maggiore di MAXN per contenere newline e null
  46.  
  47. int main() {
  48. FILE *fr, *fw;
  49. int N, i;
  50. fr = fopen("input.txt", "r");
  51. fw = fopen("output.txt", "w");
  52. assert(1 == fscanf(fr, "%d\n", &N));
  53. assert(fgets(E, MAXN + 5, fr) == E);
  54. E[N] = 0;
  55.  
  56. if (controlla(N, E) < 0)
  57. fprintf(fw, "malformata\n");
  58. else
  59. fprintf(fw, "corretta\n");
  60. fclose(fr);
  61. fclose(fw);
  62. return 0;
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement