0. Crie uma função que receba um valor e informe se ele é positivo ou não.
1. Crie uma função que receba um valor e diga se é nulo ou não.
2. Crie uma função que receba três valores, 'a', 'b' e 'c', que são os coeficientes de uma equação do segundo grau e retorne o valor do delta, que é dado por 'b² - 4ac'
3. Usando as 3 funções acima, crie um aplicativo que calcula as raízes de uma equação do 2o grau:
ax² + bx + c=0
Para ela existir, o coeficiente 'a' deve ser diferente de zero.
Caso o delta seja maior ou igual a zero, as raízes serão reais. Caso o delta seja negativo, as reais serão complexas e da forma: x + iy
4. Crie uma função em linguagem C que receba 2 números e retorne o maior valor.
5. Crie uma função em linguagem C que receba 2 números e retorne o menor valor.
6. Crie uma função em linguagem C que receba 3 números e retorne o maior valor, use a função da questão 4.
7. Crie uma função em linguagem C que receba 3 números e retorne o menor valor, use a função da questão 5.
8. Crie uma função em linguagem C chamado Dado() que retorna, através de sorteio, um número de 1 até 6.
9. Use a função da questão passado e lance o dado 1 milhão de vezes. Conte quantas vezes cada número saiu.
A probabilidade deu certo? Ou seja, a porcentagem dos números foi parecida?
10. Crie um aplicativo de conversão entre as temperaturas Celsius e Farenheit.
Primeiro o usuário deve escolher se vai entrar com a temperatura em Célsius ou Farenheit, depois a conversão escolhida é realizada através de um comando SWITCH.
Se C é a temperatura em Célsius e F em farenheit, as fórmulas de conversão são:
C= 5.(F-32)/9
F= (9.C/5) + 32
11. Um professor, muito legal, fez 3 provas durante um semestre mas só vai levar em conta as duas notas mais altas para calcular a média.
Faça uma aplicação em C que peça o valor das 3 notas, mostre como seria a média com essas 3 provas, a média com as 2 notas mais altas, bem como sua nota mais alta e sua nota mais baixa.
Desafio 1: Programe um aplicativo em C que acha todos os números primos até 1000
Número primo é aquele que é divisível somente por 1 e por ele mesmo.
Desafio 2: Programe um aplicativo em C que recebe dois inteiros e retorna o MDC, máximo divisor comum.
Desafio 3: Programe um aplicativo em C que ache todos os números perfeitos até 1000.
Número perfeito é aquele que é a soma de seus fatores. Por exemplo, 6 é divisível por 1, 2 e 3 ao passo que 6 = 1 + 2 + 3.
Desafio 4: Crie um programa em C que receba um número e imprima ele na ordem inversa.
Ou seja, se recebeu o inteiro 123, deve imprimir o inteiro 321.
Soluções com código comentado
20 comentários:
Olá
Onde estão as respostas dos desafios?
Passei dois dias tentando fazer o desafio dos números primos, sem êxito, e gostaria da saber a resposta.
Obrigado.
Não entendi o final da questão 9
A probabilidade deu certo? Ou seja, a porcentagem dos números foi parecida?
Número com três algarismos inversos:
#include
#include
#include
/* Desafio respondido por Jeffersson.
JefferssonSa@outlook.com, para trocar ideias :) */
int invertido(int x);
int main()
{
int num,result;
setlocale(LC_ALL, "portuguese");
system("color F0");
printf("Digite um número com três algarismos, ex.: 256\n");
scanf("%d",&num);
system("cls");
invertido(num);
result=invertido(num);
printf("Invertido:\n");
printf("%d\n",result);
}
int invertido(int x){
int unidade,dezena,centena,aux,invertido;
centena = x/100;
aux = x%100;
dezena= aux/10;
unidade = aux%10;
invertido= unidade*100+dezena*10+centena;
return invertido;
}
A probabilidade do meu não está dando certo. sempre uma variavel sai com valor 0. alguem poderia me ajudar? pode ser a minha maquina? o meu codigo? ou os dois?
#include
#include
#include
int dado(){
srand( (unsigned)time(NULL) );
return 1+(rand()%6);
}
int main(void){
double count,count1=0,count2=0,count3=0,count4=0,count5=0,count6=0;
printf("intervalo da rand: [0,%d]\n", RAND_MAX);
//printf("Número sorteado: %d\n",dado());
for(count=1;count<=1000000;count++){
switch (dado())
{
case 1:count1++;
break;
case 2:count2++;
break;
case 3:count3++;
break;
case 4:count4++;
break;
case 5:count5++;
break;
case 6:count6++;
break;
}
}
printf("\t\t TABELA DE RESULTADOS \t\t\n\n");
printf("\tNúmero 1\tNúmero 2\tNúmero 3\n");
printf("\t%.2f \t%.2f \t%.2f \n\n",count1,count2,count3);
printf("\tNúmero 4\tNúmero 5\tNúmero 6\n");
printf("\t%.2f \t%.2f \t%.2f \n",count4,count5,count6);
}
olhando a resposta, eu percebi o porquê da probabilidade não bater.
eu estava gerando uma semente diferente toda vez que rodava o dado, ou seja, eu não estava jogando o dado sob a mesma condição.
realmente ,faltaram as respostas dos desafios...
Aqui o meu codigo pros numeros primos. Eu primeiramente fiz de 1 a 1000 mas depois eu variei ele pra listar todos os numeros primos entre 'a' e 'b' inseridos pelo o usuario. A funçao ficou assim:
void primo(int cont1,int cont2, int verificador,int a, int b, int contlinha)
{
contlinha = 0;
printf("\t");
for(cont1 = a; cont1 < b; cont1++)
{
verificador = 1;
cont2 = 2;
while(verificador == 1 && cont2<cont1)
{
if(cont1%cont2 == 0)
verificador = 0;
else
cont2++;
}
if(verificador == 1)
{
printf("%d ",cont1);
contlinha++;
}
if(contlinha == 10)
{
printf("\n\t");
contlinha = 0;
}
}
}
Me desculpem pela falta de comentario nos codigos por que as linhas tão quebrando quando eu tento comentar aqui e fica estranho, então eu removi. Então tentem entender esse codigo, e se alguem tiver uma solução melhor posta aqui... eu achei que essa ficou um pouco confusa.
O cont1 é o contador que varre todos os numeros entre A e B e o cont2 varre todos os numeros maiores que 1 e menores que cont1, sendo feito o teste de cont1%cont2. Caso cont2 divida cont1 o verificador passa a ser zero e o cont1 não é printado na tela. Caso o cont2 não divida o cont1 atual nenhuma vez, o verificador permanece 1 e o numero primo (atual cont 1) é impresso na tela.
minha resposta do desafio 2 se alguem estiver travado (nao se esqueçam do include):
int menor(int a, int b);
int maior(int a, int b);
int MDC(int a,int b,int cont,int temp);
int main(void)
{
int num1, num2, cont, mdc, temp;
printf("\tPrograma em C que determina o M.D.C entre dois numeros.\n\n");
printf("Insira dois numeros inteiros: ");
scanf("%d",&num1);
scanf(" %d",&num2);
mdc = MDC(num1,num2,cont,temp);
printf("\n");
printf("O maximo divisor comum entre %d e %d e igual a %d\n\n",num1,num2,mdc);
}
int menor(int a, int b)
{
if(a<=b)
return a;
else
return b;
}
int maior(int a, int b)
{
if(a>=b)
return a;
else
return b;
}
int MDC(int a,int b,int cont,int temp)
{
temp = a;
a = menor(a,b);
b = maior(temp,b);
cont = a;
while(b%cont != 0 || a%cont != 0)
{
cont--;
}
return cont;
}
Salve galera aqui esta resposta da questão 10 nao consegui fazer usando o SWITCH.
Se alguém tiver posta ai
#include
#include
int main ()
{
int m,f,c;
printf("PROGRAMA QUE TRANSFORMA TEMPERATURAS\n\nDigite o tipo de transformacao:\n\n");
printf("1- Celsius para Fahrenheit\n");
printf("2- Fahrenheit para Celsius\nOpcao: ");
scanf("%d",&m);
if(m==1)
{
printf("Digite o valor em graus Celsius: ");
scanf("%d",&c);
f=c*2+32;
printf("%d graus celsius sao aproximadamente %d graus Fahrenheit\n\n",c,f);
}
if(m==2)
{
printf("Digite o valor em graus Fahrenheit: ");
scanf("%d",&f);
c=f-32/2;
printf("%d graus Fahrenheit sao aproximadamente %d graus Celsius\n\n",f,c);
}
if((m!=1)&&(m!=2))
{
printf("Esta opcao nao existe, digite outra.\n\n");
}
system ("PAUSE");
return 0;
}
Boa tarde, por que no meu 9º o número 6 não sai nenhuma vez?
Não posto o código porque fiz em c# :D
Segue minha resposta da 11.
#include
float Media2Maiores(float num1,float num2,float num3);
float MaiorNota(float num1,float num2,float num3);
float MenorNota(float num1,float num2,float num3);
int main (){
float nota1,nota2,nota3,media,maior,menor;
printf("Digite a nota 1:");
scanf("%f", ¬a1);
printf("Digite a nota 2:");
scanf("%f", ¬a2);
printf("Digite a nota 3:");
scanf("%f", ¬a3);
media = Media2Maiores(nota1,nota2,nota3);
maior = MaiorNota(nota1,nota2,nota3);
menor = MenorNota(nota1,nota2,nota3);
printf("A media das 2 maiores notas eh: %.2f \n", media);
printf("A maior nota eh: %.2f \n", maior);
printf("A menor nota eh: %.2f \n", menor);
return 0;
}
float Media2Maiores (float nota1,float nota2,float nota3){
float result=0;
if (nota1 >= nota2){
if (nota2 >= nota3){
result = (nota1 + nota2)/2;
return result;
}else {
result = (nota1 + nota3)/2;
return result;
}
}else {
if (nota3 >= nota1){
result = (nota2 + nota3) /2;
return result;
}
}
}
float MaiorNota (float num1,float num2,float num3){
float maior;
if(num1 >= num2 && num3){
maior = num1;
return maior;
}else{
if(num2 >= num3){
maior = num2;
return maior;
}else{
maior = num3;
return maior;
}}
}
float MenorNota (float num1,float num2,float num3){
float menor;
if(num1 <= num2 && num3){
menor = num1;
return menor;
}else{
if(num2 >= num3){
menor = num2;
return menor;
}else{
menor = num3;
return menor;
}}
}
/* Tentativa p/ ex 11 */
#include
#include
int n1,n2,n3;
int maior1,maior2,newMedia;
newMedia = 0;
int mediaInicial();
int mediaAltas();
int maiorValor();
int menorValor();
int main() {
printf("Digite a nota 1: \n");
scanf("%d",&n1);
printf("Digite a nota 2: \n");
scanf("%d",&n2);
printf("Digite a nota 3: \n");
scanf("%d",&n3);
printf("A media geral e de: %d\n",mediaInicial());
printf("A media das maiores notas e de: %d\n",mediaAltas(n1,n2,n3));
printf("O maior valor e de : %d\n",maiorValor());
printf("O menor valor e de : %d\n",menorValor());
system("pause");
return 0;
}
int mediaInicial() {
int media;
media = (n1+n2+n3)/3;
return media;
}
int mediaAltas(nota1,nota2,nota3) {
maior1 = 0;
maior2 = 0;
if (nota1 > nota2 && nota1 > nota3) {
maior1 = nota1;
} else if ( nota2 > nota1 && nota2 > nota3) {
maior1 = nota2;
} else if ( nota3 > nota1 && nota3 > nota2) {
maior1 = nota3;
}
if (nota1 != maior1) {
if (nota1 > nota2 || nota1 > nota3) {
maior2 = nota1;
}
} else if (nota2 != maior1) {
if ( nota2 > nota3 || nota2 > nota1) {
maior2 = nota2;
}
} else if (nota3 != maior1) {
if ( nota3 > nota2 || nota3 > nota1) {
maior2 = nota3;
}
}
newMedia = (maior1+maior2)/2;
return newMedia;
}
int maiorValor() {
return maior1;
}
int menorValor() {
if (n1 < n2 && n1 < n3) {
return n1;
} else if ( n2 < n1 && n2 < n3) {
return n2;
} else if ( n3 < n1 && n3 < n2) {
return n3;
}
}
Resposta desafio 3:
#include
#include
int main()
{
int i,j,k;
printf("Numero: \n");
i=0;
for(i=0;i<1000;i++)
{
k=0;
for (j = 1; j<i; j++)
{
if((i % j) == 0 )
{
k=j+k;
if(k == i)
{
printf("%d\n",i);
}
}
}
}
return 0;
}
Segue a resposta do desafio 1:
#include
#include
int primos(){
int i,j,k;
for(i=0;i<1000;i++)
{
k=0;
for (j = 1; j<=i; j++)
{
if((i % j) == 0 )
{
k=j+k;
if(k == i+1)
{
printf("%d\n",i);
}
}
}
}
}
int main()
{
int i,j,k;
i=0;
primos();
return 0;
}
Segue o código do desafio 2:
#include
#include
int primos(int n1, int n2){
int k,j;
k=0;
for (j = 1; j<=n1; j++)
{
if((n1 % j) == 0 &((n2 % j) == 0) )
{
k=j;
}
}
printf("%d",k);
}
int main()
{
int a1,a2;
printf("digite o primeiro numero\n");
scanf("%d",&a1);
printf("digite o segundo numero\n");
scanf("%d",&a2);
printf("O 'MDC' dos dois numeros:\n");
primos(a1,a2);
return 0;
}
A minha resolução ao desafio 4. Não está optimizado mas funciona!
#include
void main(){
int i,numero,resto=0,soma=0,aux,dez=1;
printf("Introduza um valor\n");
scanf("%d",&numero);
aux=numero;
for(i=0;aux>0;i++){
aux/=10;
dez*=10;
}
dez/=10;
do{ numero=123 dez=100
resto=numero%10; resto=3----2--- 1
soma+=resto*dez; 321+=1*1-
numero/=10; numero=12--
dez/=10; dez=10-----
}while(numero>0);
printf("%d",soma);
}
#include
#include
#include
#include
//Questão 9
void Dado();
int main()
{
setlocale(LC_ALL,"portuguese");
Dado();
return 0;
}
void Dado()
{
int iCont,iNum,i1=0,i2=0,i3=0,i4=0,i5=0,i6=0;
// time_t t;
srand(time(NULL));
for(iCont=1;iCont<=1000;iCont++)
{
iNum=1+(rand()%6);
printf("%d\n",iNum);
if(iNum==1)
{
i1++;
}
if(iNum==2)
{
i2++;
}
if(iNum==3)
{
i3++;
}
if(iNum==4)
{
i4++;
}
if(iNum==5)
{
i5++;
}
if(iNum==6)
{
i6++;
}
}
getch();
system("cls||clear");
printf("Quantidade de vezes do número 1: %d\n",i1);
printf("Quantidade de vezes do número 2: %d\n",i2);
printf("Quantidade de vezes do número 3: %d\n",i3);
printf("Quantidade de vezes do número 4: %d\n",i4);
printf("Quantidade de vezes do número 5: %d\n",i5);
printf("Quantidade de vezes do número 6: %d\n",i6);
}
//2. Crie uma função que receba três valores, 'a', 'b' e 'c', que são os coeficientes de uma equação
// do segundo grau e retorne o valor do delta, que é dado por 'b² - 4ac'
#include
#include
int delta (int aIn, int bIn, int cIn);
int main()
{
int a, b, c, deltaOutput;
setlocale(LC_ALL,"portuguese");
printf("\t Entre com os coeficientes da equação do segundo grau ");
scanf("%d %d %d", &a, &b, &c);
deltaOutput = delta(a, b, c);
printf("\t O valor de delta é: %d ", deltaOutput );
}
int delta (int aIn, int bIn, int cIn)
{
return (( bIn * bIn ) - 4 * aIn * cIn);
}
//3. Usando as 3 funções acima, crie um aplicativo que calcula as raízes de uma equação do 2o grau:
//ax² + bx + c=0
//Para ela existir, o coeficiente 'a' deve ser diferente de zero.
//Caso o delta seja maior ou igual a zero, as raízes serão reais.
//Caso o delta seja negativo, as reais serão complexas e da forma: x + iy
#include
#include
#include
int nulo (int nuloInput);
int delta (int aIn, int bIn, int cIn);
int positivo (int positivoInput);
int main()
{
int calcular;
float a, b, c, deltaOutput;
setlocale(LC_ALL,"portuguese");
do
{
printf("Programa que acha as raizes de uma equacao do 2o grau: ax^2 + bx + c = 0\n\n");
printf("\t Entre com os coeficientes da equação do segundo grau ");
scanf("%f %f %f", &a, &b, &c);
if ( nulo(a) == 0){}
else
{
deltaOutput = delta(a, b, c);
printf("\t O valor de delta é: %.2f \n", deltaOutput );
if ( deltaOutput >= 0 )
{
printf("\t Raiz 1: %.2f \n", ((-b + sqrt(deltaOutput)) / (2 * a) ) );
printf("\t Raiz 2: %.2f \n", ((-b - sqrt(deltaOutput)) / (2 * a) ) );
}
else
{
printf("\t Raiz 1: %.2f + %.2f i \n", (-b / (2 * a) ), ((sqrt(-deltaOutput)) / (2 * a) ) );
printf("\t Raiz 2: %.2f - %.2f i \n", (-b / (2 * a) ), ((sqrt(-deltaOutput)) / (2 * a) ) );
}
}
printf("\n\n Calcular mais raizes?\n 1. Continuar\n 0. Sair \n");
scanf("%d", &calcular);
if ( calcular == 1 )
system("cls || clear all");
} while ( calcular == 1 );
}
int nulo (int nuloInput)
{
if ( nuloInput == 0 )
{
printf("\t o Valor informado do coeficiente a é nulo \n");
return 0;
}
}
int delta (int aIn, int bIn, int cIn)
{
return (( bIn * bIn ) - 4 * aIn * cIn);
}
int positivo (int positivoInput)
{
if ( positivoInput > 0 )
printf("\t o Valor informado é positivo \n");
else
printf("\t o Valor informado não é positivo \n");
}
//10. Crie um aplicativo de conversão entre as temperaturas Celsius e Farenheit.
//Primeiro o usuário deve escolher se vai entrar com a temperatura em Célsius ou Farenheit,
//depois a conversão escolhida é realizada através de um comando SWITCH.
//Se C é a temperatura em Célsius e F em farenheit, as fórmulas de conversão são:
//C= 5.(F-32)/9
//F= (9.C/5) + 32
#include
#include
int main (void)
{
int converter;
float Celsius, Farenheit;
setlocale(LC_ALL,"portuguese");
do
{
printf("\t Conversão entre as temperaturas Celsius e Farenheit \n\n");
printf("\t Tecle 'F' para converter Celsius em Farenheit ");
printf("\n\t ou tecle 'C' para converter Farenheit em Celsius ");
printf("\n\n \t Tecle 'q' para sair ");
scanf(" %c", &converter);
switch ( converter )
{
case 'F' :
printf("\t Entre com a temperatura em Celsius: ");
scanf("%f", &Celsius);
printf("\t A temperatura correspondente em Farenheit são: %.2f \n\n", ((1.8*Celsius)+32) );
system("pause");
system("cls || clear");
break;
case 'C' :
printf("\t Entre com a temperatura em Farenheit: ");
scanf("%f", &Farenheit);
printf("\t A temperatura correspondente em Celsius são: %.2f \n\n", ((Farenheit - 32)/1.8));
system("pause");
system("cls || clear");
break;
case 'q' :
printf("\t Encerrando !!! \n");
break;
default :
//system("cls || clear");
printf("\n\t\t Tecle o caracter 'F' ou 'C' \n\n" );
system("pause");
system("cls || clear");
break;
}
} while ( converter != 'q' );
}
Postar um comentário