Ir ao conteúdo
  • Cadastre-se

alecounter

Membro Pleno
  • Posts

    42
  • Cadastrado em

  • Última visita

posts postados por alecounter

  1. #include <stdio.h>
    #include <stdlib.h>
    
    int main() {
        int opcao, gx, gy, gz, px, py, pz, pw;
        printf("[1] Funcao de duas variaveis\n");
        printf("[2] Funcao de tres variaveis\n");
        printf("\nDigite a opcao desejada: ");
        scanf("%d",&opcao); setbuf(stdin,NULL);
        if(opcao == 1) {
            printf("Digite o vetor gradiente no formato (x,y): ");
            scanf("(%d,%d)",&gx,&gy); setbuf(stdin,NULL);
            printf("Digite o ponto do R3 no formato (x,y,f(x,y)): ");
            scanf("(%d,%d,%d)",&px,&py,&pz); setbuf(stdin,NULL);
            printf("\nEquacao parametrica da reta tangente:\n");
            printf("\tx = (%d) + (%d)t\n",px,-gy);
            printf("\ty = (%d) + (%d)t\n",py,gx);
            printf("\tz = (%d) ; t variando na reta\n\n",pz);
            printf("Direcao de maior crescimento: (%d,%d)\n",gx,gy);
            printf("Direcao de menor crescimento: (%d,%d)\n",-gx,-gy);
            printf("Direcao em que nao ha variacao: (%d,%d)\n",-gy,gx);
        }
        else if(opcao == 2) {
            printf("Digite o vetor gradiente no formato (x,y,z): ");
            scanf("(%d,%d,%d)",&gx,&gy,&gz); setbuf(stdin,NULL);
            printf("Digite o ponto do R4 no formato (x,y,z,f(x,y,z)): ");
            scanf("(%d,%d,%d,%d)",&px,&py,&pz,&pw); setbuf(stdin,NULL);
            printf("\nEquacao parametrica da reta normal:\n");
            printf("\tx = (%d) + (%d)t\n",px,gx);
            printf("\ty = (%d) + (%d)t\n",py,gy);
            printf("\tz = (%d) + (%d)t ; t variando na reta\n\n",pz,gz);
            printf("Equacao do plano tangente: (%d)x + (%d)y + (%d)z + (%d) = 0\n",gx,gy,gz,-(gx*px+gy*py+gz*pz));
            printf("Direcao de maior crescimento: (%d,%d,%d)\n",gx,gy,gz);
            printf("Direcao de menor crescimento: (%d,%d,%d)\n",-gx,-gy,-gz);
            printf("Direcao em que nao ha variacao: qualquer vetor contido no plano tangente acima\n");
        }
        else {
            printf("Opcao invalida\n");
        }
        printf("\nPress any key to continue..."); getchar();
        return(0);
    }
    
    int main2() {
        int inteiro,inter;
        scanf("(%d,%d)",&inteiro,&inter);
        printf("%d %d",inteiro,inter);
        return(0);
    }

    Cara, fiz um esboço de programa nos moldes que você falou. Fiz calculo 2 ano passado, então se não esqueci as coisas deve funcionar tudo ok (verifique).

     

    Só tá acontecendo um problema, na hora de usar o scanf tá dando problema na parte de numeros negativos da forma(0,-1) por exemplo. fica pra você resolver essa parte.

    • Curtir 1
  2. 12 horas atrás, carlos20020 disse:

    Fazer um código que o usuário escolha entre uma função de duas ou três variáveis.

    Entrada:
    - Vetor Gradiente
    - Ponto

    Duas Variáveis:
    - Eq. da reta tangente a curva de nível do ponto dado;
    - Direção de maior crescimento;
    - Direção de maior decrescimento;
    - Direção que não há variação.

    Três Variáveis:
    - Eq. da reta normal;
    - Eq. do plano tangente;
    - Direção de maior crescimento;
    - Direção de maior decrescimento;
    - Direção que não há variação.

    Obs.: Fazer o código em linguagem C

    O vetor gradiente está avaliado no ponto dado?

    • Curtir 1
  3. 1 hora atrás, devair1010 disse:

    @alecounter     a linguagem mais fácil para fazer isso é basic usada no compilador Blitz Basic 3D , nele você só precisa escrever line e a posição de início e de final da linha e a linha será criada  e outras formas geométricas , retângulos , elipses .     na aba help tem todos os comandos e exemplos de como usa-los .   

    nesse link : http://www.superdownloads.com.br/download/14/blitz3d-blitzbasic/

     

    Pelo que vi só funciona no Windows. Acontece que preciso que funcione no Linux... conhece algum outro?

    • Obrigado 1
  4. def mul(num1,num2,cont,soma):
        if(cont == num2): return(soma)
        soma += num1
        cont += 1
        return(mul(num1,num2,cont,soma))
    
    def div(num1,num2,cont):
        if(num1 < num2): return(cont)
        num1 -= num2
        cont += 1
        return(div(num1,num2,cont))
        
    def main():
        print("Opcao 1: multiplicar dois numeros naturais")
        print("Opcao 2: dividir dois numeros naturais")
        print("\nDigite a opcao desejada: ",end="")
        opcao = int(input(""))  
        while(not opcao in [1,2]):
            print("Opcao invalida!")
            print("\nDigite a opcao desejada: ",end="")
            opcao = int(input(""))
        num1 = int(input("Digite o 1º numero: "))
        num2 = int(input("Digite o 2º numero: "))
        if(opcao == 1): resultado = mul(num1,num2,0,0)
        if(opcao == 2): resultado = div(num1,num2,0)
        print("\nResultado: %d" % resultado)
    
    main()

    Fiz pra naturais, acho que a pior parte é essa. Agora é com você fazer as adaptações necessárias pra funcionar também para inteiros.

  5. 19 horas atrás, AnsiC disse:

    pois é, dependendo da máquina ambos os algoritmos têm o mesmo desempenho. A diferença é que o seu não trata as exceções, ou não tratava. Beleza se acha que deve post seu versão otimizada.

    a complexidade computacional dos algoritmos não é igual. no meu algoritmo, a decisão de o número 'n' ser um primo ou não se baseia no fato de algum número contido em {2,3,...,int(sqrt(n))} dividir n. Se isso acontecer, a função cospe a resposta imediatamente.

    No caso do algoritmo do colega acima, o laço percorre o conjunto {1,2,...,n-1} em todos os casos e ainda itera sobre uma variável toda vez que ocorre uma divisão inteira. Podemos observar também que valores acima de int(sqrt(n)) nem precisariam ser verificados, pelo teorema fundamental da aritmética...

     
    • Obrigado 1
  6. não vejo outra alternativa a não ser usar exceções, em especial pelo caso n=0.

    pelo algoritmo de euclides, se um número 'a' natural divide 0, então o quociente também é 0 e podemos escrever

    0=0a. Percebe-se assim que qualquer valor contido no conjunto dos inteiros satisfaz isso, logo fica indeterminado. Contar divisores nesse caso não funciona(mesmo).

    adicionado 2 minutos depois

    algoritmo da divisão ***

  7. 21 horas atrás, AnsiC disse:

    Tem tudo, @giu_d já demonstrou o quanto saber, e não pensar que sabe, é importante.

    adicionado 5 minutos depois

    Talvez porque 2 é o único primo par. Portanto 2%2 = 0 e ainda sim 2 é primo. Coisa que você só diz saber, e que explica o porquê de não funcionar exclusivamente com 2. 

    não amigo, eu simplesmente copiei o código que estava aqui no post no meu codeblock para windows e tudo funcionou bem. precisei apenas fazer uma alteração aqui:

    for(int i = 2; i <= int(sqrt(n)); i++)

    pois realmente não sabia que o valor de sqrt(n) seria truncado, pensei que fosse arredondado. Não sei o motivo pelo qual não funcionou no ambiente Linux onde estava anteriormente. Basicamente eu nem segui nada do que vcs disseram aqui

    adicionado 2 minutos depois
    21 horas atrás, giu_d disse:

     

    Vê se entende a lógica usada, ok?

    entendi a lógica sim, obrigado pelo algoritmo

    como já disse, fiz uma alteração no código que fiz anteriormente e tudo funcionou bem

     
  8. Eu já sei a definição de número primo. O que isso tem a ver com o problema?

    adicionado 9 minutos depois

    Problema resolvido. Uma pequena alteração no código resolveu o problema :D estranho que na faculdade eu fiz a mesma coisa e não funcionou por lá... Lá na faculdade é Linux e aqui windows, será que tem algo a ver?

    adicionado 17 minutos depois
    3 horas atrás, AnsiC disse:

    Só não funciona para 2, para os demais números naturais funciona.

     

    se o meu número n for da forma n=2k, pra k natural, então deveria funcionar para o 2 também. o código não funcionou por algum motivo desconhecido, já que copiei e colei aqui no codeblocks em casa e tudo funcionou bem...

  9. agora, AnsiC disse:

    O que acontece é que,  raiz-2 de 5 é menor que 3 e maior que 2: porém o valor 2 é retornado pelo casting~int;

    Não satisfazendo a condição de i  <  2, pois i = 2.

    eu coloquei outra condição, fiz assim

     

    for(int i = 2; i < n; i++)

    e mesmo assim a coisa ainda não funciona!

  10. Pessoal, tudo bem? alguém poderia por gentileza me indicar o erro deste algoritmo que verifica se o número é primo ou não? O erro é que a função só retorna true!

     

    bool primo(int n) {
        for(int i = 2; i < int(sqrt(n)); i++)
            if(n % i == 0) return false;
        return true;
    }
    
    int main() {
        std::cout << primo(5);
    }

     

  11. 1 minuto atrás, Josesousa disse:

    @alecounter

     

    O que que voce mexeu, para me situar?

     

    Alem do :

     

    Sobre o ponteiro, eu ia utilizar ele, ai vi que nao era necessario e que tava esquentando cabeca à toa.

    bom, eu reparei que você declarou o vetor de estrutura gente dentro da função registro, do jeito que você fez ela seria perdida, o certo seria você declarar assim:

     

    static struct gente aaa[e];

    pois dessa forma esse vetor não seria perdido quando a função deixasse de executar. mas eu particularmente não gosto de fazer assim, então declarei esse vetor dentro de main e coloquei todas as outras funções para cima de main, pra não precisar fazer apenas a declaração das mesmas.

    • Amei 1
  12. você declarou aaa como uma estrutura e não como um vetor de estruturas.

    deveria fazer assim

     

    struct gente aaa[e];

     

    adicionado 1 minuto depois

    ops, acho que li o codigo de maneira errada, perai

    adicionado 8 minutos depois

    mexi no seu código e agora parece que rodou

    #include <stdio.h>
    #include <stdlib.h>
    
    struct gente {
        char sexo[11];
        char cor[11];
        char cabelo [11];
        int id;
    };
    
    void registro(struct gente *aaa, int e) {
        int i;
        for(i = 0; i < e; i++) {
            printf("Informe o sexo: ");
            scanf("%s%*c", &aaa[i].sexo);
            printf("Informe a cor dos olhos: ");
            scanf("%s%*c", &aaa[i].cor);
            printf("Informe a cor do cabelo: ");
            scanf("%s%*c", &aaa[i].cabelo);
            printf("Informe a idade: ");
            scanf("%d%*c", &aaa[i].id);
        }
    }
    
    void imprimir(struct gente *aaa, int e){
        int i;
        printf("Fique agora com os dados das pesquisas.\n\n");
        for(i=0;i<e;i++){
            printf("A pessoa do sexo %s, ",aaa[i].sexo);
            printf("tem os olhos %s, ",aaa[i].cor);
            printf("tem os cabelos %s, ", aaa[i].cabelo);
            printf("tem a idade de %d anos.\n\n", aaa[i].id);
        }
    }
    
    void main() {
        int e, *a;
        printf("Informe a quantidade de pessoas que passaram pela pesquisa.\n");
        scanf("%d", &e);
        a = &e;
        struct gente aaa[e];
        registro(aaa, e);
        imprimir(aaa, e);
    }

     

    adicionado 11 minutos depois

    na verdade não entendi porque você criou o ponteiro para inteiro a, ele não foi usado no código

    • Obrigado 1
  13. 9 horas atrás, Beatriz Brito disse:

    Eu sei que não vou receber o código pronto e nem estou pedindo isso. O que eu pedi foi um DIRECIONAMENTO de como começar a fazer ou do que usar.. De qualquer forma, obrigada.

    adicionado 0 minutos depois

    Obrigada!! Irei tentar!!

    adicionado 27 minutos depois

    Então, eu consegui mais ou menos fazer a letra b, mas há um problema que eu n sei como resolver. Eu consegui fazer a parte do código em que diz os aprovados e reprovados, mas no enunciado pede que eu diga apenas a quantidade de cada um, e na forma que eu encontrei mostra apenas escrito por extenso a situação de cada nota uma por uma. Poderia me direcionar sobre que modificação fazer?
    Segue o trecho do código.

    
    for(i=0;i<21;i++){
        if (notas > 5.0)
         printf(" (aluno aprovado).");
    }
        for(i=0;i<21;i++){
            if (notas < 5.0)
              printf(" (aluno reprovado).");
        }
    return 0;
    }

     

    Usa uma variável para guardar o número de alunos aprovados e outra para guardar o número de alunos reprovados. 

    • Curtir 1
  14. Moça, depois que calcular a média, você terá que varrer o vetor inteiro de novo, comparando cada elemento com a média e incrementando um contador para o caso aprovado e outro para o caso reprovado, conforme o caso.

    adicionado 0 minutos depois

    ops, você não precisa comparar com a média, precisa comparar com o número 5 na verdade.

     

    • Curtir 1
  15. Pessoal, boa tarde! o código abaixo está funcionando normalmente, mas minha dúvida é ali na parte (lista+i). Não deveria ser (lista+i*sizeof(livros)) pra tudo funcionar bem? Abraços!

     

    typedef struct {
        char titulo[50];
        char autor[50];
        int ano;
    } livros;
    
    void recebe_dados(int n, livros *lista) {
        for(int i = 0; i < n; i++) {
            printf("Digite o titulo do %d%c livro: ", (i+1), 248);
            gets((*(lista+i)).titulo);
            printf("Digite o autor do %d%c livro: ", (i+1), 248);
            gets((*(lista+i)).autor);
            printf("Digite o ano de publicacao: ");
            scanf("%d", &(*(lista+i)).ano);
            setbuf(stdin,NULL);
        }
    }
    
    void imprime_tela(int n, livros *lista) {
        system("cls");
        for(int i = 0; i < n; i++) {
            printf("%s\t", (lista+i)->titulo);
            printf("%s\t", (lista+i)->autor);
            printf("%d\n", (lista+i)->ano);
        }
    }
    
    void main(void) {
        int quantidade;
        printf("Digite a quantidade de livros: ");
        scanf("%d", &quantidade);
        setbuf(stdin,NULL);
        livros biblioteca[quantidade];
        recebe_dados(quantidade,biblioteca);
        imprime_tela(quantidade,biblioteca);
    }

     

  16. 5 minutos atrás, AnsiC disse:

    Isso ocorre para otimizar o acesso a memória, e mais fácil calcular o tamanho do bloco de dados quando esse da salto de 1 em 1 ou de 2 em 2, ou de 4 em 4.

    adicionado 1 minuto depois

    No curso de Física

    acho que entendi, mas você aprendeu C no curso ou aprendeu usando algum livro? porque você sempre fala de regras, e no livro que estou usando não estou vendo nada disso

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!