Ir ao conteúdo
  • Cadastre-se

C códigos de programação em linguagem .C


wars897

Posts recomendados

Citação

 

Algoritmo que recebe 2 valores inteiros (base e expoente), positivos e maiores que zero e que calcula a potencia desses valores sem utilizar funções e o sinal de multiplicação (*).
- Verifique se os valores digitados são validos.

 

o que eu já tenho do código é apenas isso:

#include<stdio.h>
#include<stdlib.h>
#include<locale.h>

int main(){
	int num_1, num_2, cont;

setlocale(LC_ALL,"Portuguese");

	printf("\n\nDigite um número:\n");
	scanf("%d", &num_1);
	printf("\n\nDigite outro número:\n");
	scanf("%d", &num_2);


}

 

  • Curtir 1
  • Confuso 1
  • Triste 1
Link para o comentário
Compartilhar em outros sites

@wars897 Fala meu bom!

Acredito que teu proximo passo seja esse aqui:

5 horas atrás, wars897 disse:

calcula a potencia desses valores sem utilizar funções e o sinal de multiplicação


No caso ... eu daria um google pra saber como realizar esses calculos de potencia sobre base e expoente!
Primeiro entender o calculo e tentar jogar ele no codigo ...
E a julgar pela pergunta, deve ter alguma biblioteca que ajude nesse calculo, porque eu de cara usaria da multiplicação, porém o proprio enunciado fala para nao usar hahahaha
Mas é isso!

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

Lembre-se que a operação de multiplicação nada mais é do que várias somas do mesmo número.

1304230328_CodeCogsEqn(1).gif.d6dad2454207b3aa422600b80bafa714.gif      (0)

 

E que potenciação são várias multiplicações do mesmo número.

1747671813_CodeCogsEqn(2).gif.5538395b240489f9bc916a18da8c7ec0.gif

 

Então podemos fazer uma função f(n) tal que:

 

x2nqtn.png.61e54e7f10925b8b1991e43fcb416662.png

 

Logo, pode resolver o exercício usando a operação de soma em ciclos (while, for, ou do-while) para ir calculando f(n) somando f(n-1) a sí próprio a vezes, até chegar em f(b) (ou seja quando n=b) obtendo o resultado da potência.

  • Curtir 3
Link para o comentário
Compartilhar em outros sites

@wars897@wars897      A multiplicação são Somas sucessivas ,  então a primeira parte do exercício , seria fazer a multiplicação de um número pelo outro , e poderia ser assim  :

#include <stdio.h>
#include <conio.h>
#include<stdlib.h>
#include<locale.h>
int multiplicar(int a, int b){
    if( ! b )return 1;
    int r=0,i;
    for(i=0; i<b; i++)
        r += a;
    return r;
}
int main(){
    int num_1,num_2,r=0;
    setlocale(LC_ALL,"Portuguese");
    do{
        do{
            printf("  Digite um número -----: ");
            scanf ("%d",&num_1);
        }while( num_1 < 0 );
        do{
            printf("  Digite outro número --: ");
            scanf ("%d",&num_2);
        }while( num_2 < 0 );
        r = multiplicar(num_1,num_2);
        printf("\n Resultado Da Multiplicação -> %d\n",r);
        printf("\n Outro Cálculo  S/N ");
        printf("\n\n");;
    }while( toupper((char)getch()) !='N' );
    return 0;
}

e a potenciação é outra função semelhante a de multiplicar , com uma variável a mais para indicar a quantidade de vezes que vai multiplicar .

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@devair1010 eu havia feito assim... porém não está 100% funcional...

 

/*2.
-Algoritmo que recebe 2 valores inteiros (base e expoente),
-maiores que zero
-calcula a potencia desses valores sem utilizar funções e o sinal de multiplicação (*).
-Verifique se os valores digitados são validos.
*/

#include<stdio.h>
#include<stdlib.h>
#include<locale.h>

int main(){
	int num_1, num_2, cont, resultado=0;
	int x, y, r, cont2, k;

setlocale(LC_ALL,"Portuguese");

printf("Digite a base : ");
scanf("%i",&x);
printf("Digite o expoente : ");
scanf("%i",&y);
k=x;
r=0;

for(cont=1; cont<=y; cont++){
    for(cont2=2; cont2<=x; cont2++) k+=r;
    r=k;

printf("potencia de %i elevado a %i = %i",x,y,r);
return 0;

if(num_1>=0){	
printf("\n\nVálido.");
}else{
printf("\n\nInválido.");
}

if(num_2>=0){
printf("\n\nVálido.");
}else{
printf("\n\nInválido.");
}
}
}

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@wars897

   tentei , mas bão consegui entender a lógica de seu código , e se você quiser experimente esse código aqui e veja se te serve para alguma coisa , 

#include <stdio.h>
#include <conio.h>
#include <ctype.h>
#include<stdlib.h>
#include<locale.h>
int multiplicar(int a, int b){ // recebe o multiplicando e o multiplicador
    if( ! b )                  // se b , " multiplicador " , for igual a zero
        return 1;              // ret 1 , pois td núm x zero é = a 1
    int r=0,i;
    for(i=0; i<b; i++)         // o multiplicador
        r += a;                // faz a multiplicação
    return r;                  // ret o val da multiplicação
}
int potencia(int a, int b){    // recebe a base e o expóente
    int i,r=0,c=a;
    for(i=1; i<b; i++){        // mult a base a qtd de x do expoente
        r = 0;                 // val de retorno
        r += multiplicar(a,c); // r receb o val da multiplicação
        a = r;                 // acumula o valor em a
    }
    return r;                  // retorna o valor da potenciação
}
int main(){
    int base,expoente,r=0;
    setlocale(LC_ALL,"Portuguese");
    do{
        do{
            printf("  Digite um número Para a Base ---------: ");
            scanf ("%d",&base);
        }while( base < 0 );          // validando o que foi digitado
        do{
            printf("  Digite outro número Para o Expoente --: ");
            scanf ("%d",&expoente);
        }while( expoente < 0 );      // validando o que foi digitado
        r = potencia(base,expoente);
        printf("\n Resultado Da Potenciação -> %d\n",r);
        printf("\n Outro Cálculo  S/N ");
        printf("\n\n");;
    }while( toupper((char)getch()) !='N' );
    return 0;
}

 

  • Obrigado 2
Link para o comentário
Compartilhar em outros sites

oi@devair1010 tem como me ajudar a consertar esse código aqui?

 

/*1.
-Algoritmo que recebe uma quantidade de numeros definida pelo usuario.
-faz as sequintes verificações:
-Verifica quantos desses numeros sao primos e maiores que 1000.
-Verifica qual o maior e menor numero primo digitado pelo usuario.
-Faz a media aritimetica dos numeros primos encontrados.
*/

#include<stdio.h>
#include<stdlib.h>
#include<locale.h>

int main (){
int num, i;
int cont,quantidade,cont2;
int numero_maior=0;
int numero_menor=0;

setlocale(LC_ALL,"Portuguese");

float media=0.0;

setlocale(LC_ALL, "Portuguese");

printf("Digite a quantidade de números : ");
scanf("%i",&quantidade);

if(num<=0){
printf("Número invalido! Digite um número maior que 0!\n");
}else if(num%2 == 0 && num != 2){
printf("O número %i não é primo!\n",num);
}
else if(num == 2){
printf("O número %i é primo!\n",num);

}

for(i=3; i<num; i+=2){
if(num%i == 0){
printf("O número %i néo é primo!\n",num);

}
}

for(cont2=0,cont=1; cont<=quantidade;cont++){
printf("Digite o número : ");
scanf("%i",&num);
{
if(num > 1000) cont2++;
media+=num;
if(numero_menor == 0 && numero_maior == 0){
numero_menor = num;
numero_maior = num;
}
else if(num > numero_maior) numero_maior = num;
else if(num < numero_menor) numero_menor = num;

}

}
printf("Menor primo digitado : %i\n", numero_menor);
printf("Maior primo digitado : %i\n", numero_maior);
printf("Quantidade de primos maiores que 1000 digitados : %i\n", cont2);
printf("Media aritimética dos primos encontrados : %.2f\n", media/quantidade);
return 0;

}

os requisitos são esses:

/*1.
-Algoritmo que recebe uma quantidade de números definida pelo usuario.
-faz as seguintes verificações:
-Verifica quantos desses números sao primos e maiores que 1000.
-Verifica qual o maior e menor numero primo digitado pelo usuario.
-Faz a media aritmética dos números primos encontrados.
*/

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

#include <stdlib.h>
#include <stdio.h>

int main() { 
    int num[99999],i,qtd=0,quantidade,contprimo=0,contmil=0,maior=0,menor=999999,media;
    
     printf("digite quantos numeros vai digitar: ");
            scanf("%d",&quantidade);

    for (i=0;i<quantidade;i++) {
        do  {

            printf("digite o numero : ");
            scanf("%d",&num[i]);
        }
        while(num[i]<=1);
    }


    for (i=0;i<quantidade;i++) {

        if(num[i]==2) {
            
            qtd+=1;
        } 
		else  if(num[i] %2==0) {
          
            num[i]=num[i+1];
            qtd-=1;
        } 
		else{
         
            qtd+=1;
        }
        
    }
    printf("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n\n");
     for (i=0;i<=qtd;i++) {
     	 if(num[i]==2) {
          
            contprimo++;
            if(num[i]>1000)
            contmil++;
        } else  if(num[i] %2==0) {
          
            num[i]=num[i+1];
        } else{
           
            contprimo++;
             if(num[i]>1000)
            contmil++;
            }
     }
     //verifica o maior e o menor
     for (i=0;i<=qtd;i++) {
   	if(num[i]>maior)
   	maior=num[i];
   	if(num[i]<menor)
   	menor=num[i];
   }
   
   //verifica a media aritmetica
     for (i=0;i<=qtd;i++) {
   media+=num[i];
   }
   media=media/contprimo;
     
   printf("Tem %d numeros primos\n",contprimo);
   printf("Tem %d numeros primos maiores que mil\n",contmil);
	printf("o maior primo %d\n",maior);
    printf("o menor primo %d\n",menor);
     printf("a media dos primos %d\n",media);
}

 

adicionado 0 minutos depois

@wars897

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

 

Para um novo problema poste um novo tópico e com um título significativo. Assim pode ajudar mais alguém.Eu não tinha visto...
 

9 horas atrás, wars897 disse:

-Verifica quantos desses números sao primos e maiores que 1000.
-Verifica qual o maior e menor numero primo digitado pelo usuario.
-Faz a media aritmética dos números primos encontrados.

 

De um conjunto inicial de números lidos, só precisa de 4 valores

  • total de primos maiores que 1000. Um int
  • maior número digitado. Um int
  • menor número digitado. Um int
  • média aritmética dos primos. Um float, imagino

Para calcular a média dos primos vai precisar também saber quantos leu, além de claro somar um por um.

    int total_primos = 0;
    int total_primos_grandes = 0;
    int maior = 0;
    int menor = 0;
    int soma = 0;

Bastam essas variáveis. Não precisa de vetor ou de saber os números que passaram. Apenas leia os valores e mantenha atualizadas as variáveis. Ao final pode calcular a média direto no comando que imprime.

 

9 horas atrás, herbertbahia disse:

faz vetor e varre verificando....

 

9 horas atrás, wars897 disse:

eu não sei fazer, não aprendia inda

 

Não precisa. Mas não pode usar nada que não tenha "aprendido " oficialmente? 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

@arfneto

Olá, desculpa a demora, está bem corrido...

tenho um outro código pra resolver esse precisa ser com vetores eu tenho ele quase pronto, mas ainda preciso incluir os vetores...

 

#include <stdio.h>
int main(void){

int opcao = 0;

float saldo = 0.00;

float valordeposito = 0.00;
float valorsaque = 0.00;

  printf("\n=================================\n");
  printf("======= CAIXA eletrônico ========\n");
  printf("=================================\n");

while(opcao != 4){
printf("\n\n\t  1 - Saldo\n\n\t  2 - Saque\n\n\t  3 - Deposito\n\n\t  4 - Sair\n");
printf("-> ");
scanf("%i",&opcao);
switch(opcao){
case 1:
        printf("Seu saldo : %.2f\n", saldo);
        continue;
case 2:
        if(saldo == 0){
        printf("Seu saldo esta zerado, voce nao tem o que sacar!\n");
        continue;
        }
        printf("Digite o valor a ser sacado : ");
        scanf("%f",valorsaque);
        if(valorsaque < saldo){
                printf("voce nao tem dinheiro suficiente para efetuar este saque!\n");
                continue;
        }
        saldo=saldo-valorsaque;
        valorsaque=0.00;
        continue;
case 3:
        printf("Digite o valor a ser depositado : ");
        scanf("%f",&valordeposito);
        if(valordeposito < 0){
                printf("voce nao pode depositar um valor negativo!\n");
                continue;
        }
        saldo=saldo+valordeposito;
        valordeposito=0.00;
        continue;
case 4:
        break;
default:
        printf("Opcao invalida!\n");
        continue;
}
}


return 0;
}

O que preciso nesse código? então...

- O saldo inicial de cada cliente deve ser igual a 0,00.(ja foi feito)

 

- Caso o cliente tente sacar um valor maior do que o saldo disponível o programa deve apresentar a mensagem: "saldo insuficiente." (ja foi feito)

 

- Caso o cliente tente depositar um valor negativo, não permita. (ja foi feito)

 

PORÉM AINDA TENHO QUE FAZER ISSO:

 

- O algoritmo deve ser executado para 10000 clientes, logo deve armazenar em vetores. A conta corrente, o saldo final e a quantidade de operações bancarias executadas por cada cliente.

 

- Caso selecionada a opção 4, o algoritmo deve ir para o próximo cliente até chegar ao fim da execução.

 

- No final deve ser apresentado na tela uma listagem com a conta corrente , o saldo final e a quantidade de operações de todos os clientes . utilizar uma estrutura de repetição para apresentar as informações.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

1 hora atrás, wars897 disse:

um outro código

 

Acho que já te disse isso... Abra um novo tópico com um título significativo e assim pode ajudar outros caras com problemas parecidos

 

1 hora atrás, wars897 disse:

precisa ser com vetores eu tenho ele quase pronto, mas ainda preciso incluir os vetores...

 

Essa foi uma afirmação curiosa... Isso quer dizer que você não tem muita coisa.

 

Pense assim: se você tem um exercício sobre vetores então esse é o conceito do momento e provavelmente é nisso que você pode ter dificuldade se for ter alguma.

 

Comece por isso e teste isso.

 

Ler valores e escrever na tela não vai acrescentar nada e pode te dar a impressão de que está "quase pronto" até você descobrir que tem alguma dificuldade com o novo tema. Não é um bom caminho.

 

Escreva funções para resolver os problemas menores. Funções são apenas trechos de código com um nome mas tornam a vida mais simples. Se não sabe usar apenas leia as páginas seguintes de seu livro. Se não tem um livro arrume um. 

 

Um vetor é apenas um grupo de variáveis identificadas por um índice e simplifica as coisas ao invés de complicar, mas repito: escreva a parte dos vetores, do conceito central PRIMEIRO.

 

Não misture entrada e saída com a lógica. Só dá problema e dificulta os testes.

 

Sabe usar estruturas? É mais fácil assim. Um vetor de estruturas.

 

1 hora atrás, wars897 disse:

PORÉM AINDA TENHO QUE FAZER ISSO:

 

- O algoritmo deve ser executado para 10000 clientes, logo deve armazenar em vetores. A conta corrente, o saldo final e a quantidade de operações bancarias executadas por cada cliente

 

Pois é: esse é o objetivo e você não fez quase nada nesse sentido.

 

Sobre o programa até aqui

case 2:
        if(saldo == 0){
        printf("Seu saldo esta zerado, voce nao tem o que sacar!\n");
        continue;
        }
        printf("Digite o valor a ser sacado : ");
        scanf("%f",valorsaque);
  

 

Essa é uma construção curiosa. Porque se preocupar com isso? Se vai tratar isso especialmente não ofereça a opção de saque no menu para o cliente com saldo zero...

 

Acho que sabe que antes de tudo precisa saber a conta do cliente, certo? E aí poderia deixar o saldo do cliente já no menu. Para que esperar o cara perguntar o óbvio?

 

Você usou um switch dentro de um while para tratar as opções. Com continue ao invés de break em cada case. Algo curioso.

 

Se vai usar o switch e é o único comando do loop apenas troque os continue por break e termine o switch() normalmente. Assim não vai ficar furioso com você mesmo se precisar colocar um comando final dentro do loop e descobrir que tem que editar TODOS os case: para trocar os continue por break.

 

Chamaria isso de programação defensiva.

 

Sobre os vetores, um trecho de programa

 

#define _N_CLIENTES 10

struct cliente
{
    int conta_corrente;
    double saldo;
    int total_operacoes;
};
typedef struct cliente CLIENTE;

int main()
{
    CLIENTE     cadastro[_N_CLIENTES];

    int         conta_corrente[_N_CLIENTES];
    double      saldo[_N_CLIENTES];
    int         total_operacoes[_N_CLIENTES];

    // no banco chamam isso de "carga de cadastro"

    // se fosse um vetor de estruturas
    cadastro[0].conta_corrente = 1234567;
    cadastro[0].saldo = 100.12;
    cadastro[0].total_operacoes = 0;
    cadastro[1].conta_corrente = 2345678;
    cadastro[1].saldo = 123.12;

    // se fossem 3 vetores ligados pelo indice
    conta_corrente[0] = 1234567;
    total_operacoes[0] = 0;
    saldo[0] = 100.12;
    conta_corrente[1] = 2345678;
    saldo[1] = 123.12;
    total_operacoes[1] = 0;

    // claro que da na mesma
    // agora que tem dados no cadastro pode operar com os dois clientes
    // claro que saldo e deposito como operacao e a mesma coisa

    // para depositar ou sacar um dinheiro na conta de um
    // cliente você procura no cadastro acha o indice dele no cadastro
    // e faz o servico

    int um_cliente = 2345678;
    double valor = 100.0; // um deposito

    // vai descobrir que e o cliente 1

    cadastro[1].saldo += valor;
    cadastro[1].total_operacoes += 1;

    // ou se usou 3 vetores
    saldo[1] += valor;
    total_operacoes[1] += 1;

    valor = -99.; // e um saque

    cadastro[1].saldo += valor;
    cadastro[1].total_operacoes += 1;

    // ou se usou 3 vetores
    saldo[1] += valor;
    total_operacoes[1] += 1;


    return 0;
};

// fim

Assim você tem um exemplo com dois caminhos.

 

Não teste seu programa lendo dados e mostrando na tela. Só vai atrasar.

 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!