Ir ao conteúdo
  • Cadastre-se

Programa em c


Visitante

Posts recomendados

alguém saberia me dizer se esse programa que eu escreví está com algum erro de sintaxe? Pois quando eu vou rodar ele no Visual C++(no Windows XP Prof.) aparece aquela mensagem perguntando se eu quero enviar o erro.....

e depois aparece na janela do DOS somente a mensagem Press any key to continue...

o programa é o clássico que lê duas notas e depois dá a média aritimérica:

#include <stdio.h>

void main()

{

   float a, b, m;        /*Variáveis das notas*/

   int n;        /*Variável da nota requerida*/

   for(n=1; n<3; n++);        /*fazer a numeração da nota pedida na pergunta*/

do

{

   printf("Digite a %n\xA6 nota e tecle ENTER.\n"); /*pedir a nota*/

   scanf("%f", &a);        /*ler e guardar a Primeira nota*/

   scanf("%f", &B);        /*ler e guardar a Segunda nota*/

}

while(a<0&&a>10 && b<0&&b>10); /*notas válidas*/

   m=(a+B)/2;        /*atribuição para calcular a média*/

   printf("\tSua media aritmetica e: %f,m\n"); /*imprimirá a média final*/

   

   if(m<5.5) /*mostrará a situação da pessoa*/

printf("Reprovado nessa disciplina!\n"); /*se menor que 5.5, reprovado*/

   else

printf("Voc\x88 foi Aprovado nessa disciplina!\n"); /*se maior que 5.5, aprovado*/

}

Link para o comentário
Compartilhar em outros sites

dei uma arrumada pra você...


#include <stdio.h>

void main() {

  float a, b, m;        /*Variáveis das notas*/
  int n;        /*Variável da nota requerida*/

  for(n=1; n<=3; n++) {/*fazer a numeração da nota pedida na pergunta*/

     do {

        printf("Digite a %d\xA6 nota e tecle ENTER.\n",n); /*pedir a nota*/
        scanf("%f", &a);        /*ler e guardar a Primeira nota*/
        scanf("%f", &;        /*ler e guardar a Segunda nota*/
     }while(a<0&&a>10 && b<0&&b>10); /*notas válidas*/

     m=(a+b)/2;        /*atribuição para calcular a média*/
     printf("Sua media aritmetica e: %f\n",m); /*imprimirá a média final*/

     if(m<5.5) /*mostrará a situação da pessoa*/
        printf("Reprovado nessa disciplina!\n"); /*se menor que 5.5, reprovado*/
     else
        printf("Voc\x88 foi Aprovado nessa disciplina!\n"); /*se maior que 5.5, aprovado*/
  }
}

Link para o comentário
Compartilhar em outros sites

:-Baaa  esse programa seu (tanto o seu quanto o que o cara ai acima reformulou )tá sem pé e sem cabeça ! O programa vai ler duas notas ou tres ? putz .......

mas vou quebrar seu galho ! hoje eu t6o bonzim ! mas só hoje !

la la la la laaaaaaaa he is back ..he is back ..back again

#include <iostream.h>

#include <conio.h>

void main(){

 float nota1, nota2, media;   //variaveis

 cout<<" Digite o valor da Primeira nota ";

 cin>>nota1; //leitura da nota 1

 cout<<" Digite o valor da segunda nota ";

 cin>>nota2; //leitura da nota 2

  while (nota1 > 10 && nota2 >10){

   cout<<" A nota digitada deve ser inferior a 10 \n\n";

   cout<<" Digite o valor da Primeira nota ";

   cin>>nota1;

   cout<<" Digite o valor da segunda nota ";

   cin>>nota2; //

   }//fim da condicao repita enquanto nota for maior que 10

    if ((nota1 <= 10) && (nota2 <= 10))

     media = (nota1 + nota2) / 2; //calculo das medias

     cout<<" A media das notas é  " <<media <<endl;

      if (media >= 5.5) // se nota maior que 5.5

        cout<<" O aluno foi aprovado !" ;

          else if (media < 5.5)// se nota menor que 5.5

            cout<<" O aluno foi reprovado!";

  getch();   // segura a tela

}  //fim do programa

Link para o comentário
Compartilhar em outros sites

Aproveitando o seu comentário desnecessário:

#include <iostream.h>

Isso está errado. C++ padrão especifica <iostream>, e não <iostream.h>. Aliás, o tópico não é de C++, mas sim de C.

void main()

Errado de novo. Só existem dois protótipos padrão para main: int main(void) ou int main(int argc, char*argv[]) (lembrando que em C++ omitir o parâmetro entre parênteses é o mesmo que definir como "void").

cout<<" Digite o valor da Primeira nota ";

cin>>nota1; //leitura da nota 1

cout<<" Digite o valor da segunda nota ";

cin>>nota2; //leitura da nota 2

 while (nota1 > 10 && nota2 >10){

  cout<<" A nota digitada deve ser inferior a 10 \n\n";

  cout<<" Digite o valor da Primeira nota ";

  cin>>nota1;

  cout<<" Digite o valor da segunda nota ";

  cin>>nota2; //

 }//fim da condicao repita enquanto nota for maior que 10

Já isso não está errado, mas não é muito inteligente. Usar do-while é mais eficaz, pois evita ter repetir o código de leitura em dois lugares; além do mais, se uma das notas for maior que 10, o usuário tem que digitar as das de novo. Uma abordagem melhor é:


do {
   cout<<" Digite o valor da Primeira nota (0~10) ";
   cin >> nota1;
} while (nota1 > 10);
do {
   cout<<" Digite o valor da segunda nota (0~10) ";
   cin >> nota2;
} while (nota2 > 10);

 if ((nota1 <= 10) && (nota2 <= 10))

     media = (nota1 + nota2) / 2; //calculo das medias

Esse if é desnecessário. Se chegou nessa parte do programa, é porque ambas as notas são menores ou iguais a 10.

 if (media >= 5.5) // se nota maior que 5.5

      cout<<" O aluno foi aprovado !" ;

 else if (media < 5.5)// se nota menor que 5.5

      cout<<" O aluno foi reprovado!";

Esse "else if" é redundante também. Se a condição "media >= 5.5" for falsa, é porque "media" SÓ PODE ser menor que 5.5.  :-Baaa

Link para o comentário
Compartilhar em outros sites

Postado Originalmente por 7H3 ON3@11 Jan. 2003,00:29

#include <iostream.h>

#include <conio.h>

void main(){

 float nota1, nota2, media;   //variaveis

 cout<<" Digite o valor da Primeira nota ";

 cin>>nota1; //leitura da nota 1

 cout<<" Digite o valor da segunda nota ";

 cin>>nota2; //leitura da nota 2

  while (nota1 > 10 && nota2 >10){

   cout<<" A nota digitada deve ser inferior a 10 \n\n";

   cout<<" Digite o valor da Primeira nota ";

   cin>>nota1;

   cout<<" Digite o valor da segunda nota ";

   cin>>nota2; //

   }//fim da condicao repita enquanto nota for maior que 10

    if ((nota1 <= 10) && (nota2 <= 10))

     media = (nota1 + nota2) / 2; //calculo das medias

     cout<<" A media das notas é  " <<media <<endl;

      if (media >= 5.5) // se nota maior que 5.5

        cout<<" O aluno foi aprovado !" ;

          else if (media < 5.5)// se nota menor que 5.5

            cout<<" O aluno foi reprovado!";

  getch();   // segura a tela

}  //fim do programa

Acho que você não entendeu o algoritmo do programa do nosso amigo .....vou te mostrar :

Faça um programa que leia duas notas de um usuário, sendo que essa nota deve conter um valor menor que 10, se nota for maior que 10 o programa deve exibir uma mensagem para que o usuario digite a nota correta, o algoritmo ainda deve exibir uma mensagem dizendo se o aluno foi aprovado ou reprovado, e pelo que eu vi ali a media que nosso amigo queria era 5.5 ...ou seja a media pode ser qualquer uma !

pelo que eu entendi o que nosso amigo estava querendo era isso !! e meu programa faz isso !

Link para o comentário
Compartilhar em outros sites

Postado Originalmente por DanielKO@11 Jan. 2003,01:37

Aproveitando o seu comentário desnecessário:

já que você é bom em c/c++ me ajuda ai tenho que fazer um exercicio aqui e tô com um pouco de dificuldade ...

6. As raízes de funções do tipo F(x)  = x2 – 2 podem ser calculadas pelo método de Newton  que é baseado em funções e suas derivadas. Esta abordagem utiliza aproximações sucessivas a partir de um valor (“chute“) inicial para se chegar no valor das raízes de uma  função (ver os exemplos apresentados nos exercícios 1.12.54 e 1.12.55 página 84 do livro texto: Algoritmos Estruturados, Farrer, H. et al.). Uma análise geométrica permite uma fácil compreensão do método. Se x0 for o valor (“chute“) inicial (não é a raiz da função, mas está próximo dela), x1 pode ser calculado a partir de x0. Basta observar que :

tg(alfa)  = f(x0)/( x0- x1) = f’(x0)  ou

     x0- x1 = f(x0)/f’(x0)        e, portanto: x1 = x0 - f(x0)/f’(x0)

Da mesma forma:

tg(beta)  = f(x1)/( x1- x2) = f’(x1)    ou x1- x2 = f(x1)/f’(x1)

e, portanto:

x2 = x1 - f(x1)/f’(x1)

De um modo geral :

xn+1 = xn - f(xn)/f’(xn)    para n = 0, 1, 2, .....

Neste caso, a raiz é teoricamente, o limite de xn quando n tende para infinito, isto é:

raiz  = lim n à ¥  xn   (quando a < raiz < B)

Na prática não se pode fazer n tender para infinito  e, portanto deve-se limitar o número de iterações. Para isso, escolhe-se um valor de epsilon suficientemente pequeno em função da precisão que se deseja nos cálculos e interrompem-se as iterações assim que o valor absoluto do quociente f(xn)/f’(xn) ficar menor do que o epsilon dado. Faça  o  programa  com os módulos  (funções) correspondentes em C++ para implementar o método de Newton e calcular as raízes das funções F(x)  =  x2  - 5, G(x)  =  x4 – 5 e H(x) = x3 –  x2  + 1.

Teste o programa com vários valores de x0  e  epsilon (0,1 , 0,01, 0,0001 e a máxima precisão do compilador C++).

Com os resultados obtidos, implemente funções para calcular a raiz quadrada, cúbica e quarta de um número real positivo.

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...
Postado Originalmente por 7H3 ON3@Jan. 11 2003,14:52

já que você é bom em c/c++ me ajuda ai tenho que fazer um exercicio aqui e tô com um pouco de dificuldade ...

Talvez você não tenha lido outros posts meus quanto a isso: eu vou ser o último cara daqui a fazer esse exercício prá você; se você tiver dúvidas ou problemas com seu código, não conseguir fazer seu algoritmo funcionar como esperado, ou quiser alguma sugestão, eu até posso ajudar. Mas se for prá fazer todo o exercício, ou (como é mais comum) tiver preguiça de procurar a resposta no Google, tô fora. Aliás, acho que esse tipo de post nem deveria ser permitido por aqui, mas como parece que esta parte do fórum não tem moderação, não adianta reclamar muito não.

Link para o comentário
Compartilhar em outros sites

/*

Programador: ha não vou falar meu nome ...7H3 0N3

Programa: Exe6.cpp - Lista 4

Descricao: Funcao para implementar o metodo Newton que calcula as raizes

das funcoes f(x), g(x) e h(x).

Entrada: x1 (chute inicial), e numero de interacoes.

Saida: Raizes das funcoes.

*/

#include <conio.h>//getch()

#include <math.h>//exp

#include <stdio.h>//printf e scanf

#define deltax 0.0001 // Precisao desejada

double funcao(double x, int opt);  //Prototipo da funcao

double derivada(double x, int opt); //Prototipo da derivada

void main(){

 double x1,fx,deriv;

 int n,i,opt=0;

 while (opt!=4){

   printf("Funcoes:\n");

   printf("1. F(x) = xü - xý + 1\n");

   printf("2. G(x) = e^(2x)-5x\n");

   printf("3. H(x) = e^(2x)-5x-3\n");

   printf("4. SAIR\nESCOLHA UMA OPCAO: \b");

   scanf("%d",&opt);

   if (opt == 4)

      break; // sai do programa

   else

      if ((opt<1)||(opt>3)){

printf("\nOPCAO INVALIDA!");

getch();

continue;

}

   printf("ENTRE COM UM VALOR PARA X1: \b");

   scanf("%lf",&x1);

   printf("NUMERO MAXIMO DE INTERACOES: \b");

   scanf ("%d",&n);

   if ((x1!=0)&&(n>=1)){

     for (i=1;i<=n;i++) {

fx=funcao(x1,opt);

deriv=derivada(x1,opt);

x1 = x1-(fx/deriv);

printf("\nF(X%d) VALE: %.20lf\n",i,fx);

printf("F'(X%d) APROXIMADA VALE: %.20lf\n",n,deriv);

printf("X%d VALE: %.20lf\n",i+1,x1);

getch();

}

     }

   else {

     printf("\nDADOS INVALIDOS");

     getch();

     continue;

     }

   printf("\nFIM DAS INTERACOES.");

   getch();

   }

 }

double funcao (double x, int opt){

   double y;

   switch (opt){

     case 1: y=x*x*x-x*x+1.0;

     break;

     case 2: y=exp(2*x)-5*x;

     break;

     case 3: y=exp(2*x)-5*x-3;

     }

   return y;

 }

double derivada(double x, int opt){

 double deriv;

 deriv = (funcao(x+deltax,opt)-funcao(x,opt))/deltax;

 return deriv;

 }

Link para o comentário
Compartilhar em outros sites

O DanielKO é um bom programador cara! C num me engano vi um programas dele no superdownloads...

Pega leve cara! Não sei o que está cursando mas esse seu problema... mas c eu me lembro bem vi isso em Calculo Numerico e esse método se chama Newton-Raphson. E não me pareceu (quando você postou o problema) um desafio p/ o DanielKO (c eu não tiver enganado de quem ele é ... :;):   )

Mas cara é isso aí... continue, pois você (me parece) q sabe o q quer do que está falando.

Mas mantenha a cabeça fria e não fique desafiando todos...

Link para o comentário
Compartilhar em outros sites

Certo, você postou aquilo só prá mostrar prá todo mundo que você sabe fazer "o programa da derivada". Parabéns. Talvez você tenha aprendido isso através de livros e exemplos (como eu) ou talvez tenha aprendido por conta própria mesmo - nesse caso, parabéns de novo. Pronto, seu ego já está satisfeito?

Logo percebi que, ou era prá se exibir, ou você queria que alguém fosse tão convencido quanto você e quisesse mostrar o código pronto prá você. Eu poderia continuar citando problemas no seu código, mas acho que você vai aceitá-los como críticas construtivas.

Não me gabo de ter alguns softs no SD, pois aqueles bobocas do SD aceitam qualquer droga - é só ver a quantidade de idiotices que aparecem na parte de "Novidades de programas Nacionais" - então ter alguns softs lá não é motivo de orgulho; você pode até fazer um "hello world" e mandar prá lá, que eles aceitam.

Link para o comentário
Compartilhar em outros sites

Parabéns Daniel !! Gostei da sua atitude agora !! estou adimirado !! (estou sendo sincero)

Só não tinha gostado da sua atitude a respeito do meu programa anterior, fiz aquilo pra demonstrar ao nosso amigo um exemplo do seu algoritmo, lógicamente você viu que meu programa faz tudo que ele quer de uma maneira simples e "leiga" !

Agora quanto a conhecimentos, não podemos julgar ninguém inferior a ninguém ! somos todos iguais, com maneiras diferentes de agir !

E lembrando que como você mesmo citou naquele programa anterioro, um algoritmo = programa pode ser desenvolvido de diversas maneiras, no final seu resultado funcionado de maneira adequada isto é o que importa !!

Resumindo : A sintese do programa pode estar um lixo mas ele mostrando o resultado final correto, isto é o que importa !!

É como se fosse numa conta matématica, você pode aplicar diversas formulas para encontrar o resultado final !! Se com uma delas você chegar a esse resultado ....pronto !!

Abraços !!

Link para o comentário
Compartilhar em outros sites

Postado Originalmente por 7H3 ON3@Jan. 25 2003,19:02

Resumindo : A sintese do programa pode estar um lixo mas ele mostrando o resultado final correto, isto é o que importa !!

É como se fosse numa conta matématica, você pode aplicar diversas formulas para encontrar o resultado final !! Se com uma delas você chegar a esse resultado ....pronto !!

Me desculpe, mas isso que você escreveu é um absurdo... não é porque existem dez maneiras de se fazer algo que você não deve procurar fazer da melhor forma, principalmente em se tratando de C, que gera um assembly com eficiência muito dependente da qualidade do código escrito...

Essa de o que interessa é o resultado final pode ser verdade quando se trata de arte, mas não em programaçao...

Agora, olhando os códigos, cada espaguetao que aparece aqui, hein... uma coisa estranha que eu notei, talvez eu esteja por fora por não programar pra Windows, mas declarar main como void não tinha sido banido do C ansi em 88 ???? :)... lógico, ninguém é obrigado a seguir o Ansi, mas é uma boa prática seguir os padro"es...

Link para o comentário
Compartilhar em outros sites

Pessoal se prendam a responder as perguntas!

7H3 ON3 você recebeu nivel 1 de warn por escrever gracinhas!

DanielKO da próxima vez que alguem propor a resolução de algum exercicio a você, ou a outros membros, se não quiser fazer não precisa se manifestar, ok?

Tipo, não to querendo pegar mais esse Fórum, por isso ajudem, se algo acontecer avisem via messenger o moderador de sua preferência....

OK?!

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...