TiagoFernandes - Challenge I - C

Ir em baixo

TiagoFernandes - Challenge I - C

Mensagem  TiagoFernandes em Seg Jul 04, 2011 4:31 pm

1 - Faça um Programa que peça cinco números separados por vírgula, e imprima o maior deles.

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h> //Para printf e scanf


int main (void)
{
//Um vetor para armazenar os 5 valores e 2 variável para auxiliar no processo.
int num[5], aux, i;

//Ler os 5 números separados por vírgula.
printf("Digite 5 numeros: ");
scanf("%d,%d,%d,%d,%d", &num[0], &num[1], &num[2], &num[3], &num[4]);

//Atribuir à variável auxiliar o valor do primeiro elemento,
//checar qual o maior elemento e guarda-lo na variável aux.
for(i=1, aux=num[0]; i<5; i++)
if(aux<num[i])
aux=num[i];

//Imprimir o maior valor:
printf("\nO maior numero eh: %d\n\n", aux);

//Pausar a execução antes de encerrá-la.
system("pause");
}


http://codepad.org/1uRkNJBq

2 - Faça um Programa que peça cinco números separados por espaço e imprima o maior deles.

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h> //Para printf e scanf


int main (void)
{
//Um vetor para armazenar os 5 valores e 2 variável para auxiliar no processo.
int num[5], aux, i;

//Ler os 5 números separados por espaço.
printf("Digite 5 numeros: ");
scanf("%d %d %d %d %d", &num[0], &num[1], &num[2], &num[3], &num[4]);

//Atribuir à variável auxiliar o valor do primeiro elemento,
//checar qual o maior elemento e guarda-lo na variável aux.
for(i=1, aux=num[0]; i<5; i++)
if(aux<num[i])
aux=num[i];

//Imprimir o maior valor:
printf("\nO maior numero eh: %d\n", aux);

//Pausar a execução antes de encerrá-la.
system("pause");
}


http://codepad.org/XJDocKo8

3 - Faça um Programa que verifique se uma letra digitada é "F" ou "M". Conforme a letra escrever: F - Feminino, M - Masculino, Sexo Inválido.

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdio.h>

int main (void)
{
//Variáveis.
char sexo;

//Ler e guardar dados.
printf("Digite seu sexo, F ou M: ");
scanf("%c", &sexo);

//Checar o sexo.
switch (sexo)
{
case 'f':
case 'F'://Considerar a letra f tanto minúscula quanto maiúscula
printf("\nFeminino\n\n");
break;
case 'm':
case 'M'://Considerar a letra m tanto minúscula quanto maiúscula.
printf("\nMasculino\n\n");
break;
default://Caso o usuario digite um caractere inválido.
printf("\nSexo invalido.\n\n");
}
//Pausar a execução antes de encerrá-la.
system("pause");
}



http://codepad.org/TNOfTGEn

4 - Faça um Programa que verifique se uma letra digitada é vogal ou consoante.

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <stdio.h>
#include <ctype.h>

int main(void)
{
//Variáveis.
char letra;

//Ler e guardar dados.
printf("Digite uma letra: ");
scanf("%c", &letra);

letra=toupper(letra); //Converter a letra em maiúscula para facilitar o processo.

if(letra>=65 && letra<=90) //Entrará no laço apesnas se for uma letra, tabela ASCII.
switch (letra)
{
case 'A':
case 'E':
case 'I':
case 'O':
case 'U':
printf("\nVogal.\n\n");
break;
default:
printf("\nConsoante.\n\n");
}
else //Caso não seja uma letra.
printf("\nO caractere digitado nao eh uma letra.\n\n");

//Pausar a execução antes de encerrá-la.
system("pause");
}



http://codepad.org/foMRX0Xj

5 - Faça um Programa que pergunte quanto você ganha por hora e o número de horas trabalhadas no mês. Calcule e mostre o total do seu salário no referido mês.

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>

int main()
{
//Variáveis.
int hora;
float salario;

//Ler e armazenar dados
printf("Quanto voce ganha por hora?\n");
scanf("%f", &salario);
printf("\nQuantas horas voce trabalha no mes?\n");
scanf("%d", &hora);

//Calcular e mostrar o salário mensal
printf("\nSalario do mes = RS %.2f\n\n", (float)salario*hora);

//Pausar a execução antes de encerrá-la.
system("pause");
}[



http://codepad.org/W6aLOz7e

6 - Faça um programa para uma loja de tinta. O programa deverá pedir o tamanho em metros quadrados da área a ser pintada. Considere que a cobertura da tinta é de 1 litro para cada 3 metros quadrados e que a tinta é vendida em latas de 18 litros, que custam R$ 95,00. Informe ao usuário a quantidades de latas de tinta a serem compradas e o preço total.

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
#include <math.h>

#define PRECO 95.0

int main(void)
{
//Variáveis.
float area;
int num_latas;

//Ler e armazenar dados
printf("Quantos metros quadrados a area tem?\n");
scanf("%f", &area);

//Calcular o número de latas a serem usadas, função ceil() para arredondar o valor para cima.
num_latas=(int)ceil(area/3.0);

//Mostrar os valores
printf("\nVoce precisara comprar %d lata(s) de tinta.\n\nPreCo total a ser pago: RS %.2f\n\n", num_latas, (float)num_latas*PRECO);

//Pausar a execução antes de encerrá-la.
system("pause");
}



http://codepad.org/Mb6OEYnJ
avatar
TiagoFernandes

Mensagens : 6
Data de inscrição : 02/07/2011
Idade : 28
Localização : Fortaleza

Ver perfil do usuário

Voltar ao Topo Ir em baixo

TiagoFernandes

Mensagem  Z3r0 em Seg Jul 04, 2011 6:22 pm

Bem vindo ao Challenge.
Assim como os demais, gostei bastante da tua participação ... já chegou mostrando presença.
Enfim, código limpo, fácil de compreender, funcionando mediante a proposta ( o que mostra que você compreende, domina bem a linguagem ). Parabéns.

Só uma observação boba:

Notei que em seus códigos, você usa bastante o system.pause e isso gera essa mensagem :
Código:
sh: pause: not found
Aparece mas não como erro tanto, que o código roda normalmente. Mas uma forma de executar o código sem essa notificação, seria usar ao invés de system("pause"); , usar o :
Código:
return 0; // Retorna o valor zero e termina o código.

Além disso, no desafio 6 , está aparecendo esse erro ao compilar:
Código:
emc.c:(.text+0x3a): undefined reference to `ceil'
collect2: ld returned 1 exit status

O que seria ?
avatar
Z3r0

Mensagens : 149
Data de inscrição : 01/07/2011
Idade : 32

Ver perfil do usuário http://projectzim.blogspot.com

Voltar ao Topo Ir em baixo

Re: TiagoFernandes - Challenge I - C

Mensagem  OmegaMK-XII em Seg Jul 04, 2011 6:56 pm

Sobre esse erro:

Código:
sh: pause: not found

Acredito que esteja tentando compilar no Linux. Ele não reconhece system("pause")

Sobre o ceil, ele tbm não está sendo reconhecido no Linux aqui. Ainda não descobri pq, talvez tenha uma variante dele.
avatar
OmegaMK-XII

Mensagens : 29
Data de inscrição : 04/07/2011

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: TiagoFernandes - Challenge I - C

Mensagem  Z3r0 em Seg Jul 04, 2011 7:00 pm

OmegaMK-XII escreveu:Sobre esse erro:

Código:
sh: pause: not found

Acredito que esteja tentando compilar no Linux. Ele não reconhece system("pause")

Sobre o ceil, ele tbm não está sendo reconhecido no Linux aqui. Ainda não descobri pq, talvez tenha uma variante dele.

Exatamente. Smile
avatar
Z3r0

Mensagens : 149
Data de inscrição : 01/07/2011
Idade : 32

Ver perfil do usuário http://projectzim.blogspot.com

Voltar ao Topo Ir em baixo

Re: TiagoFernandes - Challenge I - C

Mensagem  TiagoFernandes em Seg Jul 04, 2011 7:17 pm

Obrigado pelas boas vindas. ^^

Sobre o "pause", acho que o erro seja porque ele é um comando exclusivo do DOS, costumo substituí-lo por:
Código:

    fflush(stdin); //__fpurge() no Linux.
    getchar();
    return 0;

E o ceil() é uma função da math.h, não entendi o porquê do erro.
avatar
TiagoFernandes

Mensagens : 6
Data de inscrição : 02/07/2011
Idade : 28
Localização : Fortaleza

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: TiagoFernandes - Challenge I - C

Mensagem  rmzelnick em Seg Jul 04, 2011 7:18 pm

@Lobo:

No caso do "undefined reference to ceil", eh pq vc nao linkou usando a biblioteca math de C.

gcc -c arq.c
gcc arq.o -o arq.bin -lm

@Tiago:

Gostei de voce ter utilizado a funcao 'ceil' =)
avatar
rmzelnick

Mensagens : 39
Data de inscrição : 02/07/2011
Idade : 25
Localização : Huntington, NY

Ver perfil do usuário http://www.markzelnick.me/

Voltar ao Topo Ir em baixo

Re: TiagoFernandes - Challenge I - C

Mensagem  OmegaMK-XII em Seg Jul 04, 2011 7:23 pm

Verdade, tinha esquecido completamente disso. Smile
avatar
OmegaMK-XII

Mensagens : 29
Data de inscrição : 04/07/2011

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Gostei muito dos algoritmos mas...

Mensagem  rmzelnick em Seg Jul 04, 2011 8:04 pm

Eu tenho que dizer que nos exercicios 1 e 2, o pessoal nao se preocupou muito em procurar o maior numero digitado. O algoritmo funciona de forma correta porem se algum dia vcs tiverem q programar para encontrar o maior numero dentro de um vetor de 2 000 000 elementos ou ate mais, o algoritmo nao sera eficiente. Por isso que acho que vcs poderiam encontrar uma solucao otimizada usando o algoritmo do quicksort por exemplo.

Se vcs quiserem entender sobre o quicksort podem consultar o wikipedia:
http://en.wikipedia.org/wiki/Quicksort

Vcs verao q eh bem mais simples e facil de ser feito, sem contar com a agilidade (que eh um fator essencial para qualquer software). Se vcs quiserem entrem no meu topico para conferir como foi feito.

E quando eh q vai ser o proximo nivel do challenge? Estou ansioso =)
avatar
rmzelnick

Mensagens : 39
Data de inscrição : 02/07/2011
Idade : 25
Localização : Huntington, NY

Ver perfil do usuário http://www.markzelnick.me/

Voltar ao Topo Ir em baixo

Re: TiagoFernandes - Challenge I - C

Mensagem  OmegaMK-XII em Seg Jul 04, 2011 8:25 pm

A lista é tão pequena (5 números) que não vejo porque usar Quicksort ao invés de uma solução mais simples. Quicksort em listas muito pequenas perde sua eficiência. E assim como fizeram fica melhor para pegar uma noção sobre vetores pra quem está iniciando.

Aliás, a questão apenas pede para mostrar o maior elemento. Não precisa ordenar a lista pra isso.
avatar
OmegaMK-XII

Mensagens : 29
Data de inscrição : 04/07/2011

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Correção do item 6

Mensagem  TiagoFernandes em Ter Jul 05, 2011 7:27 pm

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdio.h>
#include <math.h>

#define PRECO_LATA 95.0
#define LITROS_LATA 18.0

int main(void)
{
//Variáveis.
float area, litros;
int latas;

//Ler e armazenar dados
printf("Quantos metros quadrados a area tem?\n");
scanf("%f", &area);

//Calcular quantos litros e quantas latas serão usados, função ceil() para arredondar o valor para cima.
litros=area/3.0;
latas=(int) ceil(litros/LITROS_LATA);

//Mostrar os valores
printf("\nVoce precisara comprar %d lata(s) de tinta.\n\nPreCo total a ser pago: RS %.2f\n\n", latas, latas*PRECO_LATA);

//Pausar a execução antes de encerrá-la.
fflush(stdin);
getchar();
return 0;
}

avatar
TiagoFernandes

Mensagens : 6
Data de inscrição : 02/07/2011
Idade : 28
Localização : Fortaleza

Ver perfil do usuário

Voltar ao Topo Ir em baixo

TiagoFernandes

Mensagem  Z3r0 em Qua Jul 06, 2011 1:37 pm

Muito bom o 6...acabei de testar... foi o que mais me convenceu ... bom mesmo parabéns!
avatar
Z3r0

Mensagens : 149
Data de inscrição : 01/07/2011
Idade : 32

Ver perfil do usuário http://projectzim.blogspot.com

Voltar ao Topo Ir em baixo

Re: TiagoFernandes - Challenge I - C

Mensagem  ricbit em Seg Jul 11, 2011 11:09 pm

Rimack Zelnick escreveu:Eu tenho que dizer que nos exercicios 1 e 2, o pessoal nao se preocupou muito em procurar o maior numero digitado. O algoritmo funciona de forma correta porem se algum dia vcs tiverem q programar para encontrar o maior numero dentro de um vetor de 2 000 000 elementos ou ate mais, o algoritmo nao sera eficiente. Por isso que acho que vcs poderiam encontrar uma solucao otimizada usando o algoritmo do quicksort por exemplo.

Isso não procede, o quicksort é O(n^2) no pior caso, e o algoritmo usado no primeiro post dessa thread é O(n), que é o melhor possível para esse problema.

ricbit

Mensagens : 1
Data de inscrição : 11/07/2011

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: TiagoFernandes - Challenge I - C

Mensagem  Conteúdo patrocinado


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum