Markfinch 0 Denunciar post Postado Junho 9, 2009 Será que alguem poderia me ajudar a encontrar uma solução para este programa!!?? Eu gostaria de saber como eu posso criar um "sub menu" dentro de outro menu, e tb como eu faço para reexibir o menu quando o usuário selecionar uma opção inválida.. por exemplo o programa está pedindo assim: Elaborar um programa que faça cálculos de área e perímetro para as seguintes figuras geométricas: retângulo, quadrado, triângulo, círculo, trapézio e paralelogramo. O programa deverá ser estruturado de forma que cada um dos cálculos deverá ser feito por uma função específica. Ex.: float CalcularAreaQuadrado(float lado) • A cada nova execução o programa deverá limpar a tela antes de exibir o menu principal. • Apresentar o menu principal com as seguintes opções: o 1 – Área o 2 – Perímetro o 3 – Sair • Após a escolha da opção de cálculo, deverá ser apresentado um menu contendo a lista das figuras geométricas para que o usuário escolha uma. • Depois de escolhida a figura, o programa deverá: 1. solicitar a digitação dos dados para o cálculo (lados, alturas e etc); 2. efetuar o cálculo; 3. exibir a fórmula usada; 4. exibir o resultado do cálculo. • Quando o usuário selecionar uma opção inválida: o exibir uma mensagem; o aguardar que o usuário pressione qualquer tecla; o limpar a tela; e o reexibir o menu para que uma nova escolha seja feita. o codigo que eu fiz é esse #include <stdio.h> #include<conio.h> Void main () { int opcoes,perimetro,area,retangulo,quadrado,triangulo,circulo,trapezio,paralelogram o, lado1,lado2,lado3,lado4,base,altura,; while (escolha!=3) { printf("\n\n ----------------------- "); printf("\n 1-Area"); printf("\n 2-perimetro"); printf("\n 3-sair"); printf("\n\n Escolha uma opcao: "); scanf("%d", &opcoes); // estrutura switch// switch (opcoes) { case 1: { // a função clrscr(); é para limpar a tela// clrscr(); printf("\n\n Opcao escolhida: 1 "); break; } case 2: { clrscr(); printf("\n\n Opcao escolhida: 2 "); break; } case 3: { clrscr(); printf("\n\n Opcao escolhida: 3 "); break; } default: { clrscr(); // se for escolhida a opção 3, ele pula o while utilizando continue para isso if( escolha==3) { continue; } // caso o usuário digite um numero acima de 3, ele irá informar que nao existe essa opção printf("\n\n essa opcao não existe"); break; } } } return(0); } float calcular_quadrado(0)//calcular area do quadrado// { float lado1; float lado2; printf("Digite o lado1 do quadrado:"); scanf("%f", &n1); printf("digite o lado 2 do quadrado"); scanf("%f", &n2); return(lado1* lado 2); } float Area_triangulo(0)//calcular area do triangulo// { float lado1; float lado2; float lado3; printf("Digite a base do triangulo:"); scanf("%f", &n1); printf("digite a altura do triangulo :"); scanf("%f", &n2); return(base *altura)/2; } float perimetro_circunferencia ( float raio)//calcular area do circulo// { float pericirc; float pi=3.14; pericirc = 2*pi*raio; return (pericirc); } float Area_trapezio// calcular area do trapezio// { float base maior; float base menor; float altura; printf("Digite o valor da base maior:"); scanf("%f", &base maior); printf("digite o valor da base menor :"); scanf("%f", &base menorn2); printf("digite a altura:"); scanf("%f", &altura); return(area= h(base maior + base menor) / 2); } float Area_ paralelogramo(0)//calcular area do paralelogramo// { float lado1; float lado2; float lado3; float lado4; printf("Digite o lado1 do paralelogramo:"); scanf("%f", &n1); printf("digite o lado 2 do paralelogramo :"); scanf("%f", &n2); printf("digite o lado 3 do paralelogramo :"); scanf("%f", &n3); printf("digite o lado 4 do paralelogramo:"); scanf("%f", &n4); return(a x h); } float Area_retangulo(0)//calcular area do retangulo// { float base; float altura; ; printf("Digite o valor da base do retangulo :"); scanf("%f", &base); printf("digite o valor da altura do retangulo :"); scanf("%f", &altura); return(base x altura); } float calcular_perimetro(0)//calcular o perimetro// { float lado1; float lado2; float lado3; float lado4; printf("Digite o lado1 do retangulo :"); scanf("%f", &n1); printf("digite o lado 2 do retangulo :"); scanf("%f", &n2); printf("digite o lado 3 do retangulo :"); scanf("%f", &n3); printf("digite o lado 4 do retangulo :"); scanf("%f", &n4); return(lado1+lado2+lado3+lado4) return(0); } Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Junho 9, 2009 Use a tag code. É horrível ler um código que não está identado. int opcoes,perimetro,area,retangulo,quadrado,triangulo,circulo,trapezio,paralelogram o, lado1,lado2,lado3,lado4,base,altura,; while (escolha!=3) { E onde está a variável escolha? C não inicializa variáveis. De novo: Case não precisa de chaves. E seguindo o tópico homérico do fórum: O tipo de retorno de main deve ser int. Void main () { Não interessa se seu professor usa void. Provavelmente ele foi educado com os livros do Schildt. Leia o tópico sobre GCC. base,altura,; Cuidado com essas coisas sobrando. // estrutura switch// switch (opcoes) { O nome switch já é explicativo, não acha? O mesmo vale para algumas funções. A questão é associar o nome à expressão em inglês. Se você não sabe inglês, abra uma conta no LiveMocha e comece. (Sugestão para perdidos que reclamam quando posto links em inglês) printf("digite o lado 4 do paralelogramo:"); scanf("%f", &n4); return(a x h); } printf("digite o valor da altura do retangulo :"); scanf("%f", &altura); return(base x altura); } Você não espera que isso rode certo,né? // se for escolhida a opção 3, ele pula o while utilizando continue para isso if( escolha==3) { continue; } Se for escolhida a opção 3 ele executa o case 3 e nada mais, nem mesmo o default. E já que a opção vai ser diferente das outras explicitadas no switch, o if é falso. Portanto, código desnecessário. default: clrscr(); // caso o usuário digite um numero acima de 3, ele irá informar que nao existe essa opção printf("\n\n essa opcao não existe"); break; Default não precisa de break. // caso o usuário digite um numero acima de 3, ele irá informar que nao existe essa opção printf("\n\n essa opcao não existe"); Qualquer valor que o usuário digite que não seja os explicitados em cada case torna o default verdadeiro. Não use conio.h. Não é portável e além disso é antiga. Tem um post do VitorCacciari,acho,sobre isso. int opcoes,perimetro,area,retangulo,quadrado,triangulo,circulo,trapezio,paralelogram o, lado1,lado2,lado3,lado4,base,altura; Normalmente agrupa-se variáveis de modo lógico ao invés de se colocar tudo numa mesma linha. float calcular_quadrado(0)//calcular area do quadrado// { float lado1; float lado2; printf("Digite o lado1 do quadrado:"); scanf("%f", &n1); printf("digite o lado 2 do quadrado"); scanf("%f", &n2); return(lado1* lado 2); } Definição matemática: Quadrado é um polígono de 4 lados iguais. Pra quê ler o segundo lado? float Area_triangulo(0)//calcular area do triangulo// { float lado1; float lado2; float lado3; printf("Digite a base do triangulo:"); scanf("%f", &n1); printf("digite a altura do triangulo :"); scanf("%f", &n2); return(base *altura)/2; } Variáveis não usadas: saque fora. Variáveis não definidas: erro em tempo de compilação. float perimetro_circunferencia ( float raio)//calcular area do circulo// { float pericirc; float pi=3.14; pericirc = 2*pi*raio; return (pericirc); } Você pode utilizar o PI de math.h. float Area_trapezio// calcular area do trapezio// { float base maior; float base menor; float altura; printf("Digite o valor da base maior:"); scanf("%f", &base maior); printf("digite o valor da base menor :"); scanf("%f", &base menorn2); printf("digite a altura:"); scanf("%f", &altura); return(area= h(base maior + base menor) / 2); } Erro em tempo de compilação. O compilador vai esperar uma vírgula ou ';' depois de base. E não um espaço em branco. Outro erro: variável não declarada e função não definida. Além disso, preste atenção quando você copia e cola. float Area_ paralelogramo(0)//calcular area do paralelogramo// { float lado1; float lado2; float lado3; float lado4; printf("Digite o lado1 do paralelogramo:"); scanf("%f", &n1); printf("digite o lado 2 do paralelogramo :"); scanf("%f", &n2); printf("digite o lado 3 do paralelogramo :"); scanf("%f", &n3); printf("digite o lado 4 do paralelogramo:"); scanf("%f", &n4); return(a x h); } Definição matemática: Paralelogramo é um polígono de 4 lados cujos lados opostos possuem tamanhos iguais. Leitura de dois lados já bastam. De novo: se quer usar Ctrl+C/Ctrl+V arrume, porque dá erro de variáveis não declaradas. float calcular_perimetro(0)//calcular o perimetro// { float lado1; float lado2; float lado3; float lado4; printf("Digite o lado1 do retangulo :"); scanf("%f", &n1); printf("digite o lado 2 do retangulo :"); scanf("%f", &n2); printf("digite o lado 3 do retangulo :"); scanf("%f", &n3); printf("digite o lado 4 do retangulo :"); scanf("%f", &n4); return(lado1+lado2+lado3+lado4) return(0); } Definição matemática: Retângulo é um paralelogramo cujos lados formam 90º entre si. Logo, a propriedade dos lados é a mesma e não é necessário somar 4 lados p/ ter o perímetro. O return(0) nunca vai ser executado. E novamente o problema do Ctrl+C/Ctrl+V. P/ sair do do-while coloque um if abaixo do scanf verificando se a opção é p/ sair e tire fora esse caso do switch. Eu gostaria de saber como eu posso criar um "sub menu" dentro de outro menu, Só criar uma função p/ exibir um menu e chamar dentro da opção certa... e tb como eu faço para reexibir o menu quando o usuário selecionar uma opção inválida.. Estrutura de repetição já faz isso. Compartilhar este post Link para o post Compartilhar em outros sites
Markfinch 0 Denunciar post Postado Junho 9, 2009 obg pela a sua ajuda mas eu ainda estou com duvida em algumas coisas a começar pelas variaveis, entao você acha que eu devo abrevia-las?? por exemplo int opcoes,pr,A,rt,qdrado,trian,cir,trap,para,lado1,lado2,lado3,lado4,base,altura,B, b; E no caso do float do triangulo desse modo que eu fiz está certo? float Area_triangulo(0)//calcular area do triangulo// { float lado1; float lado2; float lado3; printf("Digite a base do triangulo:"); scanf("%f", &n1); printf("digite a altura do triangulo :"); scanf("%f", &n2); return(base *altura)/2; } e nesse outro caso agora está certo, você tinha me falado que as variavéis não estavam declaradas, mas agora estão! float Area_trapezio// calcular area do trapezio// { float basemaior; float basemenor; float altura; printf("Digite o valor da base maior:"); scanf("%f", &B); printf("digite o valor da base menor :"); scanf("%f", &b); printf("digite a altura:"); scanf("%f", &altura); return(area= h(base maior + base menor) / 2) E quanto ao float do paralelogramo agora está certo desse modo? float Area_ paralelogramo(0)//calcular area do paralelogramo// { float lado1; float lado2; printf("Digite o lado1 do paralelogramo:"); scanf("%f", &lado1); printf("digite o lado 2 do paralelogramo :"); scanf("%f", &lado2); return(a x h); } E quanto ao perimetro eu não entendi direito!! afinal pelo que eu saiba para encontrar um perimetro é a soma de todos os lados, certo?????e aí você falou assim Definição matemática: Retângulo é um paralelogramo cujos lados formam 90º entre si. Logo, a propriedade dos lados é a mesma e não é necessário somar 4 lados p/ ter o perímetro. Então eu teria que somar quantos lados entao para encontrar o perimetro??? então ficaria mais ou nenos assim o jeito certo de se fazer? float calcular_perimetro(0)//calcular o perimetro// { float lado1; float lado2; float lado3; printf("Digite o lado1 do retangulo :"); scanf("%f", &lado1); printf("digite o lado 2 do retangulo :"); scanf("%f", &lado2); printf("digite o lado 3 do retangulo :"); scanf("%f", &lado3); return(lado1+lado2+lado3+lado4) } E quanto ao float da circuferencia você me falou para utilizar PI de math.h. por acaso "math.h." é uma biblioteca??? então para eu poder exucutar direito a area da circuferencia eu teria que declarar essa biblioteca?? #include<math.h.> se eu tiver que usar essa bibilioteca entao o float do raio ficaria assim??? float perimetro_circunferencia ( float raio)//calcular area do circulo// { float pericirc; float PI=3.14; pericirc = 2*PI*raio; return (pericirc); } e tb estou com duvida nisso daqui que você me falou "P/ sair do do-while coloque um if abaixo do scanf verificando se a opção é p/ sair e tire fora esse caso do switch." certo eu coloquei o if debaixo do scanf como você falou mas eu gostaria de saber como eu posso colocar assim"Printf(“ você realmente deseja sair?") s/n, queria saber como eu faço para poder validar esses SIM ou Não!?? então o codigo ficaria +ou- assim? while (opcoes!=3) { printf("\n\n ----------------------- "); printf("\n 1-Area"); printf("\n 2-perimetro"); printf("\n 3-sair"); printf("\n\n Escolha uma opcao: "); scanf("%d", &opcoes); IF(op=3) Printf(“ você realmente deseja sair?")if( =s)sair else printf("permanecer no programa") e você tb me falou para eu tirar fora esse caso switch!, então como é que eu poder fazer um menu funcionar sem esse caso do switch??? Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Junho 9, 2009 a começar pelas variaveis, entao você acha que eu devo abrevia-las?? por exemplo Leia de novo: "Normalmente agrupa-se variáveis de modo lógico ao invés de se colocar tudo numa mesma linha." Eu não falei em abreviar variável. Simplesmente olhe p/ sua declaração e veja que ela contém figuras geométricas, segmento de reta e medidas numa mesma linha. float Area_triangulo(0)//calcular area do triangulo// { float lado1; float lado2; float lado3; printf("Digite a base do triangulo:"); scanf("%f", &n1); printf("digite a altura do triangulo :"); scanf("%f", &n2); return(base *altura)/2; } Continua com variável não declarada. Preste atenção. float Area_trapezio// calcular area do trapezio// { float basemaior; float basemenor; float altura; printf("Digite o valor da base maior:"); scanf("%f", &B); printf("digite o valor da base menor :"); scanf("%f", &b); printf("digite a altura:"); scanf("%f", &altura); return(area= h(base maior + base menor) / 2) Continua tendo variável não declarada. float Area_ paralelogramo(0)//calcular area do paralelogramo// { float lado1; float lado2; printf("Digite o lado1 do paralelogramo:"); scanf("%f", &lado1); printf("digite o lado 2 do paralelogramo :"); scanf("%f", &lado2); return(a x h); } O return está errado e ainda existe variável não declarada. E quanto ao perimetro eu não entendi direito!! afinal pelo que eu saiba para encontrar um perimetro é a soma de todos os lados, certo?????e aí você falou assim Definição matemática: Retângulo é um paralelogramo cujos lados formam 90º entre si. Logo, a propriedade dos lados é a mesma e não é necessário somar 4 lados p/ ter o perímetro. Então eu teria que somar quantos lados entao para encontrar o perimetro??? então ficaria mais ou nenos assim o jeito certo de se fazer? float calcular_perimetro(0)//calcular o perimetro// { float lado1; float lado2; float lado3; printf("Digite o lado1 do retangulo :"); scanf("%f", &lado1); printf("digite o lado 2 do retangulo :"); scanf("%f", &lado2); printf("digite o lado 3 do retangulo :"); scanf("%f", &lado3); return(lado1+lado2+lado3+lado4) } De novo: não precisa ler e fazer soma de 4 lados. Leia de novo o que eu escrevi sobre o retângulo. Se 2 lados são iguais você acha que dá p/ fazer o quê com isso? E ainda existe variável não declarada. e tb estou com duvida nisso daqui que você me falou "P/ sair do do-while coloque um if abaixo do scanf verificando se a opção é p/ sair e tire fora esse caso do switch." certo eu coloquei o if debaixo do scanf como você falou mas eu gostaria de saber como eu posso colocar assim"Printf(“ você realmente deseja sair?") s/n, queria saber como eu faço para poder validar esses SIM ou Não!?? então o codigo ficaria +ou- assim? while (opcoes!=3) { printf("\n\n ----------------------- "); printf("\n 1-Area"); printf("\n 2-perimetro"); printf("\n 3-sair"); printf("\n\n Escolha uma opcao: "); scanf("%d", &opcoes); IF(op=3) Printf(“ você realmente deseja sair?") Acho que você continua não inicializando as variáveis. Não se faz nada com uma variável em C sem ela estar inicializada porque o valor nela é imprevisível. Comparação de igualdade é '=='. você tb me falou para eu tirar fora esse caso switch!, então como é que eu poder fazer um menu funcionar sem esse caso do switch??? Foi uma das últimas coisas que falei. Se você já viu while, já viu break. Compartilhar este post Link para o post Compartilhar em outros sites
Markfinch 0 Denunciar post Postado Junho 10, 2009 então o agrupamento de modo logico das variáveis seria + ou menos assim??? int area, circulo etcse não for será que você poderia me dar um exemplo de variaveis lógicas?? E com relação a esse float você falou que continua com a variavel não declarada!! como que a variavel não está declarada se nas variaveis eu escrevi "trapezio" e B( de base maior) &¨b( de base menor)??? float Area_trapezio// calcular area do trapezio// { float basemaior; float basemenor; float altura; printf("Digite o valor da base maior:"); scanf("%f", &B); printf("digite o valor da base menor :"); scanf("%f", &b); printf("digite a altura:"); scanf("%f", &altura); return(area= h(base maior + base menor) / 2) E você tb falou que esse return está errado! entao se for pedir muito será que você poderia corrigilo por favor!? float Area_ paralelogramo(0)//calcular area do paralelogramo// { float lado1; float lado2; printf("Digite o lado1 do paralelogramo:"); scanf("%f", &lado1); printf("digite o lado 2 do paralelogramo :"); scanf("%f", &lado2); return(a x h); } e com relação ao perimetro do retangulo você falou assim "não precisa ler e fazer soma de 4 lados. Leia de novo o que eu escrevi sobre o retângulo. Se 2 lados são iguais você acha que dá p/ fazer o quê com isso? E ainda existe variável não declarada." então eu acho que dá para nós multiplicarmos um lado pelo outro certo?? afinal se 2 lados são iguais! E com relação a variavel não declarada eu nao estou entendendo! afinal eu declarei "perimetro". então como é possivel que a variavel não esteja declarada? float calcular_perimetro(0)//calcular o perimetro// { float lado1; float lado2; printf("Digite o lado1 do retangulo :"); scanf("%f", &lado1); printf("digite o lado 2 do retangulo :"); scanf("%f", &lado2); return(lado1*lado2) } e com relação ao caso do swtich eu ainda não entendi mto bem não!! eu só vi o caso break, o do while ainda não vi.. olha se for pedir muito será que você poderia solucionar o programa todo para mim?? pois eu estou tentando soluciona-lo a + ou - umas duas semanas e preciso entregar esse programa hj na faculdade!! Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Junho 10, 2009 se não for será que você poderia me dar um exemplo de variaveis lógicas?? Eu não disse que as váriáveis são lógicas. Eu falei que o agrupamento é lógico. E com relação a esse float você falou que continua com a variavel não declarada!! como que a variavel não está declarada se nas variaveis eu escrevi "trapezio" e B( de base maior) &¨b( de base menor)??? Você realmente acredita que o compilador sabe que B = basemaior e b=basemenor? Tá feio... E você tb falou que esse return está errado! entao se for pedir muito será que você poderia corrigilo por favor!? É pedir muito p/ ler o próprio código? Você realmente acha que 'x' é uma operação? E com relação a variavel não declarada eu nao estou entendendo! afinal eu declarei "perimetro". então como é possivel que a variavel não esteja declarada? Onde eu falei de variável perímetro? Tô falando disso: E quanto ao perimetro eu não entendi direito!! afinal pelo que eu saiba para encontrar um perimetro é a soma de todos os lados, certo?????e aí você falou assim Definição matemática: Retângulo é um paralelogramo cujos lados formam 90º entre si. Logo, a propriedade dos lados é a mesma e não é necessário somar 4 lados p/ ter o perímetro. Então eu teria que somar quantos lados entao para encontrar o perimetro??? então ficaria mais ou nenos assim o jeito certo de se fazer? float calcular_perimetro(0)//calcular o perimetro// { float lado1; float lado2; float lado3; printf("Digite o lado1 do retangulo :"); scanf("%f", &lado1); printf("digite o lado 2 do retangulo :"); scanf("%f", &lado2); printf("digite o lado 3 do retangulo :"); scanf("%f", &lado3); return(lado1+lado2+lado3+lado4) } De novo: não precisa ler e fazer soma de 4 lados. Leia de novo o que eu escrevi sobre o retângulo. Se 2 lados são iguais você acha que dá p/ fazer o quê com isso? E ainda existe variável não declarada. eu só vi o caso break, o do while ainda não vi.. Então use o break. olha se for pedir muito será que você poderia solucionar o programa todo para mim?? pois eu estou tentando soluciona-lo a + ou - umas duas semanas e preciso entregar esse programa hj na faculdade!! Foi mal, mas eu não vou fazer seu trabalho. Você tentou compilar isso? Nem termina. Eu não precisaria ficar catando variável não-declarada e possivelmente protótipo que não combina com a implementação das funções porque o compilador já aponta esse tipo de coisa. No mais, é tudo questão de ler o próprio código. Compartilhar este post Link para o post Compartilhar em outros sites
Markfinch 0 Denunciar post Postado Junho 10, 2009 me corrija se eu estiver errado!!! então no caso dos floats o código certo seria esse não é? float calcular_quadrado(0)//calcular area do quadrado// { float lado1; float lado2; printf("Digite o lado1 do quadrado:"); scanf("%f", &lado1); printf("digite o lado 2 do quadrado"); scanf("%f", &lado2); return(lado1*lado2)+(lado1*lado2); } float Area_triangulo(0)//calcular area do triangulo// { float base; float altura; printf("Digite a base do triangulo:"); scanf("%f",&base); printf("digite a altura do triangulo :"); scanf("%f",&altura); return(base*altura)/2 } float perimetro_circunferencia ( float raio)//calcular area do circulo// { float pericirc; float pi=3.14; pericirc = 2*pi*raio; return (pericirc); } float Area_trapezio// calcular area do trapezio// { float Basemaior; float basemenor; float altura; printf("Digite o valor da base maior:"); scanf("%f",&Basemaior); printf("digite o valor da base menor :"); scanf("%f",&basemenor); printf("digite a altura:"); scanf("%f",&altura); return(area=altura(Basemaior + basemenor)/2); } float Area_ paralelogramo(0)//calcular area do paralelogramo// { float base; float altura; printf("Digite o valor da base:"); scanf("%f", &base); printf("digite o valor da altura:"); scanf("%f", &altura); return(base*altura) } float Area_retangulo(0)//calcular area do retangulo// { float base; float altura; ; printf("Digite o valor da base do retangulo :"); scanf("%f", &base); printf("digite o valor da altura do retangulo :"); scanf("%f", &altura); return(base x altura); } float calcular_perimetro_de_um_triangulo(0)//calcular o perímetro de um triangulo// { float lado1; float lado2; float lado3; float lado4; printf("Digite o lado1 do retangulo :"); scanf("%f",&lado1); printf("digite o lado 2 do retangulo :"); scanf("%f",&lado2); printf("digite o lado 3 do retangulo :"); scanf("%f",&lado3); return(lado1+lado2+lado3) } float calcular_perimetro_de_um_retangulo(0)//calcular o perímetro de um retangulo// { float lado1; float lado2; float lado3; float lado4; printf("Digite o lado1 do retangulo :"); scanf("%f",&lado1); printf("digite o lado 2 do retangulo :"); scanf("%f",&lado2); printf("digite o lado 3 do retangulo :"); scanf("%f",&lado3); printf("digite o lado 4 do retangulo :"); scanf("%f",&lado4); return(lado1+lado2+lado3+lado4) } e com relação as variaveis eu estou utilizando essas variaveis int opcoes, perimetro, area, retangulo, quadrado, triangulo, circulo, trapezio, paralelogramo,lado1, lado2, lado3, lado4, base, altura, Basemaior,basemenor; você falou para eu agrupalas de modo logico, eu nao entendi direito qual é a melhor forma de agrupa-las de modo logico e se for pedir muito eu gostaria que você me desse um exemplo de agrupamento logico!..E desse jeito que eu escrevi as variaveis o meu compilador não apresentou erro nenhum!!! E quanto ao perimetro você me disse que para calcular o perimetro de um retangulo não era necessariamente somar todos os lados!! então pq nesse topico aqui está falando que é necessário somar todos os lados para poder se encontrar o perimetro??? http://br.answers.yahoo.com/question/index?qid=20090417194525AAqbz09 e com relação ao menu de exibição eu não entendi aonde esse código está errado!? eu tirei os breaks que você me falou que era totalmente descenessário para a função case // estrutura switch// switch () { case 1: // a função clrscr(); é para limpar a tela// clrscr(); printf("\n\n Opcao escolhida: 1 "); break; case 2: clrscr(); printf("\n\n Opcao escolhida: 2 "); case 3: clrscr(); printf("\n\n Opcao escolhida: 3 "); } default: { clrscr(); // se for escolhida a opção 3, ele pula o while utilizando continue para isso if( escolha==3) { continue; } // caso o usuário digite um numero acima de 3, ele irá informar que nao existe essa opção printf("\n\n essa opcao não existe"); } } e com relação ao sub menu. será que você poderia me dar um exemplo( algum codigo qualquer) de de uma função na qual eu possa criar esse sub menu dentro desse menu?? rsrsrs. ok você não tem que fazer esse meu trabalho, mas eu gostaria que você fosse o mais possivel claro comigo, dando alguns exemplos de codigo fonte na qual eu poderia usar para poder corrigir os meus erros!! Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Junho 10, 2009 Eu vou passar por tudo de novo: float calcular_quadrado(0)//calcular area do quadrado// { float lado1; float lado2; printf("Digite o lado1 do quadrado:"); scanf("%f", &lado1); printf("digite o lado 2 do quadrado"); scanf("%f", &lado2); return(lado1*lado2)+(lado1*lado2); } É um quadrado!!! Não precisa ler 2 lados. Eu realmente preciso te dizer que um quadrado tem lados iguais? E a fórmula da área está errada. float Area_triangulo(0)//calcular area do triangulo// { float base; float altura; printf("Digite a base do triangulo:"); scanf("%f",&base); printf("digite a altura do triangulo :"); scanf("%f",&altura); return(base*altura)/2 } Erro de sintaxe. Cadê o ';'? float Area_trapezio// calcular area do trapezio// { float Basemaior; float basemenor; float altura; printf("Digite o valor da base maior:"); scanf("%f",&Basemaior); printf("digite o valor da base menor :"); scanf("%f",&basemenor); printf("digite a altura:"); scanf("%f",&altura); return(area=altura(Basemaior + basemenor)/2); } Erro na declaração da função Area_trapezio. Pela 3a vez: variável não declarada e função não-definida. Abra bem os olhos enquanto lê o código. float Area_ paralelogramo(0)//calcular area do paralelogramo// { float base; float altura; printf("Digite o valor da base:"); scanf("%f", &base); printf("digite o valor da altura:"); scanf("%f", &altura); return(base*altura) } Erro de sintaxe. float Area_retangulo(0)//calcular area do retangulo// { float base; float altura; ; printf("Digite o valor da base do retangulo :"); scanf("%f", &base); printf("digite o valor da altura do retangulo :"); scanf("%f", &altura); return(base x altura); } De novo: você acha que 'x' é uma operação? float calcular_perimetro_de_um_triangulo(0)//calcular o perímetro de um triangulo// { float lado1; float lado2; float lado3; float lado4; printf("Digite o lado1 do retangulo :"); scanf("%f",&lado1); printf("digite o lado 2 do retangulo :"); scanf("%f",&lado2); printf("digite o lado 3 do retangulo :"); scanf("%f",&lado3); return(lado1+lado2+lado3) } De novo: Copy & paste. Revise o código direito quando fizer isso. E erro de sintaxe de novo. float calcular_perimetro_de_um_retangulo(0)//calcular o perímetro de um retangulo// { float lado1; float lado2; float lado3; float lado4; printf("Digite o lado1 do retangulo :"); scanf("%f",&lado1); printf("digite o lado 2 do retangulo :"); scanf("%f",&lado2); printf("digite o lado 3 do retangulo :"); scanf("%f",&lado3); printf("digite o lado 4 do retangulo :"); scanf("%f",&lado4); return(lado1+lado2+lado3+lado4) } Novamente: Retângulo é um paralelogramo cujos lados formam 90°. Sendo um paralelogramo, os lados opostos são iguais. Deduza. Erro de sintaxe também. E desse jeito que eu escrevi as variaveis o meu compilador não apresentou erro nenhum!!! Mostre onde eu disse que dá erro se você declarar uma tripa gigante de variáveis. Pelo que eu falei ("Normalmente agrupa-se variáveis de modo lógico ao invés de se colocar tudo numa mesma linha." // "Simplesmente olhe p/ sua declaração e veja que ela contém figuras geométricas, segmento de reta e medidas numa mesma linha.") já era p/ você ter sacado que dá pra separar essas coisas e que é boa prática, já que eu também comentei que normalmente se faz isso. E quanto ao perimetro você me disse que para calcular o perimetro de um retangulo não era necessariamente somar todos os lados!! então pq nesse topico aqui está falando que é necessário somar todos os lados para poder se encontrar o perimetro??? Vamos de novo ao que eu disse: De novo: não precisa ler e fazer soma de 4 lados. Leia de novo o que eu escrevi sobre o retângulo. Se 2 lados são iguais você acha que dá p/ fazer o quê com isso? Está bem claro o que eu falei: você não precisa ler os 4 lados de um retângulo p/ calcular o perímetro. Isso é bem diferente de dizer que perímetro de retângulo não é a soma dos 4 lados. e com relação ao menu de exibição eu não entendi aonde esse código está errado!? eu tirei os breaks que você me falou que era totalmente descenessário para a função case Novamente problema de leitura e interpretação. Dando quote em mim mesma: Default não precisa de break. Onde eu falei que você tinha que tirar TODOS os breaks do switch, já que o case 2 e o case 3 estão sem break? e com relação ao sub menu. será que você poderia me dar um exemplo( algum codigo qualquer) de de uma função na qual eu possa criar esse sub menu dentro desse menu?? É só criar uma função que exiba o menu que você quer e enfiar a chamada na opção correspondente!! E o if continua no default.... Dando quote no primeiro post: Se for escolhida a opção 3 ele executa o case 3 e nada mais, nem mesmo o default. E já que a opção vai ser diferente das outras explicitadas no switch, o if é falso. Portanto, código desnecessário. Case não é uma função. Compartilhar este post Link para o post Compartilhar em outros sites