Escreva um programa para verificar se uma expressão matemática (em
String) passada pelo usuário tem os parênteses agrupados de forma
correta, isto é:
a. se o número de parênteses de abertura e fechamento são iguais;
b. se todo parêntese aberto é seguido posteriormente por um
fechamento de parêntese;
c. nenhuma expressão deve conter um parêntese de fechamento
antes de um de abertura.
Ex1: A expressão ((A+B) viola as condições a e b.
Ex2: A expressão A+B) viola as condições a e c.
Ex3: A expressão )A+B( – C viola as condições b e c.
Ex4: A expressão (A+B)) – (C + D violam a condição b e c.
Escreva um programa para verificar se uma expressão matemática (em String):
Escreva um programa para verificar se uma expressão matemática (em
String) passada pelo usuário tem os parênteses agrupados de forma
correta, isto é:
a. se o número de parênteses de abertura e fechamento são iguais;
b. se todo parêntese aberto é seguido posteriormente por um
fechamento de parêntese;
c. nenhuma expressão deve conter um parêntese de fechamento
antes de um de abertura.
Ex1: A expressão ((A+B) viola as condições a e b.
Ex2: A expressão A+B) viola as condições a e c.
Ex3: A expressão )A+B( – C viola as condições b e c.
Ex4: A expressão (A+B)) – (C + D violam a condição b e c.
Para a resolução desta tarefa foram utilizados conhecimentos sobre a linguagem de programação C.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main (int argc, char** argv)
{
int flaga = 0, flagb = 0, flagc = 0, flagaux = 0;
char* string = (char* ) malloc (sizeof(char));
printf("Digite a expressao: ");
scanf("%[^\n]%*c", string);
int i, j = 0;
for(i = 0; i < strlen(string); i++){
flaga = 0;
if(string[i] == '('){
j++;
flagaux = 1;
}
else if(string[i] == ')'){
if(j == 1){
j--;
flagaux = 0;
}
else if(j <= 0){
flagc = 1;
flagaux = 0;
j--;
}
else{
flagb = 1;
j--;
}
}
}
if(j == 0)
flaga = 1;
if(flagaux)
flagb = 1;
if(!flaga && flagb && flagc)
printf("A expressao %s viola as condicoes a, b e c.", string);
else if(!flaga && flagb)
printf("A expressao %s viola a condicao a e b.", string);
else if(!flaga && flagc)
printf("A expressao %s viola a condicao a e c.", string);
else if(flagb && flagc)
printf("A expressao %s viola a condicao b e c.", string);
else if(!flaga)
printf("A expressao %s viola a condicao a.", string);
else if(flagb)
printf("A expressao %s viola a condicao b.", string);
else if(flagc)
printf("A expressao %s viola a condicao c.", string);
return 0;
}
O programa recebe uma expressão do usuário e verifica se viola alguma das condições dadas no enunciado, caso viole o programa imprime qual(is) dela(s) foi(ram) violada(s).
Para a resolução desta tarefa foram utilizados conhecimentos sobre a linguagem de programação C.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main (int argc, char** argv)
{
int flaga = 0, flagb = 0, flagc = 0, flagaux = 0;
char* string = (char* ) malloc (sizeof(char));
printf("Digite a expressao: ");
scanf("%[^\n]%*c", string);
int i, j = 0;
for(i = 0; i < strlen(string); i++){
flaga = 0;
if(string[i] == '('){
j++;
flagaux = 1;
}
else if(string[i] == ')'){
if(j == 1){
j--;
flagaux = 0;
}
else if(j <= 0){
flagc = 1;
flagaux = 0;
j--;
}
else{
flagb = 1;
j--;
}
}
}
if(j == 0)
flaga = 1;
if(flagaux)
flagb = 1;
if(!flaga && flagb && flagc)
printf("A expressao %s viola as condicoes a, b e c.", string);
else if(!flaga && flagb)
printf("A expressao %s viola a condicao a e b.", string);
else if(!flaga && flagc)
printf("A expressao %s viola a condicao a e c.", string);
else if(flagb && flagc)
printf("A expressao %s viola a condicao b e c.", string);
else if(!flaga)
printf("A expressao %s viola a condicao a.", string);
else if(flagb)
printf("A expressao %s viola a condicao b.", string);
else if(flagc)
printf("A expressao %s viola a condicao c.", string);
return 0;
}
O programa recebe uma expressão do usuário e verifica se viola alguma das condições dadas no enunciado, caso viole o programa imprime qual(is) dela(s) foi(ram) violada(s).
Para escrever sua resposta aqui, entre ou crie uma conta
Técnicas de Programação
•IFBA
Compartilhar