OmegaMK-XII - Challenge 3 - C

Ir em baixo

OmegaMK-XII - Challenge 3 - C

Mensagem  OmegaMK-XII em Sex Jul 29, 2011 1:09 am

Escolhi o challenge 2 light.

1 - Faça um Programa que leia um número e exiba o dia correspondente da semana (Começando de domingo ). Caso você digite outro valor deve aparecer valor inválido.

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<stdio.h>

int main()
{
char dia[7][10] = {"Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"};
int num;
printf("Digite um número: ");
scanf("%d",&num);
if(num>0 && num<8)
printf("Dia %d é %s\n", num, *(dia+(num-1)));
else
printf("Número inválido.\n");
return 0;
}



Fonte comentada:
http://paste.debian.net/124446/

3 - Faça um programa que peça uma nota, entre zero e dez. Mostre uma mensagem caso o valor seja inválido e continue pedindo até que o usuário informe um valor válido.

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

int main()
{
int nota = -1;
while(nota<0 || nota>10)
{
printf("Digite uma nota de 0 a 10: ");
scanf("%d", &nota);
if(nota>=0 && nota<=10)
printf("Valor correto.\n");
else
printf("Valor incorreto.\n");
}
return 0;
}


Fonte comentada:
http://paste.debian.net/124447/

4 - Faça um programa que leia um nome de usuário e a sua senha e não aceite a senha igual ao nome do usuário, mostrando uma mensagem de erro e voltando a pedir as informações.

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

int main()
{
char login[15], senha[15];
while(1)
{
printf("Digite seu login: ");
scanf(" %s", &login);
printf("Digite sua senha: ");
scanf(" %s", &senha);
if(!strcmp(login, senha))
printf("Login não pode ser igual à senha.\n\n");
else
break;
}
printf("Login: %s\nSenha: %s\n", login, senha);
return 0;
}


Fonte comentada:
http://paste.debian.net/124550/

5 - Faça um programa que calcule a quantidade dinheiro gasto por um fumante com os seguintes dados:
O número de anos que ele fuma :
O número de cigarros fumados por dia :
O preço da carteira de cigarro:

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<stdio.h>

int main()
{
float anos, cigarros, preco_cart;
printf("Número de anos que fuma: ");
scanf("%f", &anos);
printf("Número de cigarros fumados por dia: ");
scanf("%f", &cigarros);
printf("Preço da carteira de cigarro (20 unidades): ");
scanf("%f", &preco_cart);
printf("Dinheiro gasto nos cigarros em %.0f ano(s): R$ %.2f\n", anos, (preco_cart/20.0)*cigarros*365*anos);
return 0;
}


Fonte comentada:
http://paste.debian.net/124449/

6 - Escreva um algoritmo para encontrar o número do telefone correspondente a um determinado nome, na seguinte lista telefônica:
Nome : Fulano - Tel : 334-45566
Nome : Cicrano - Tel : 112-23344
Nome : Beltrano - Tel : 551-12233
Nome : Zé - Tel : 443-34422
Nome : Toinho - Tel : 661-12233
Nome : Luizinho - Tel : 776-65577

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

int main()
{
char name[10], nome[6][10] = {"Fulano", "Cicrano", "Beltrano", "Zé", "Toinho", "Luizinho"};
int cont, numero[6] = {33445566, 11223344, 55112233, 44334422, 66112233, 77665577};
printf("Digite um nome a ser procurado na lista: ");
scanf(" %s", &name);
for(cont=0; cont<6; cont++)
{
if(!strcmp(name, *(nome+(cont))))
{
printf("Nome: %s - Telefone: %d\n", name, numero[cont]);
return 0;
}
}
printf("Nome não encontrado na lista.");
return 0;
}


Fonte comentada:
http://paste.debian.net/124451/


Última edição por OmegaMK-XII em Sex Jul 29, 2011 8:28 pm, editado 1 vez(es)
avatar
OmegaMK-XII

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

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: OmegaMK-XII - Challenge 3 - C

Mensagem  Op@alo em Sex Jul 29, 2011 11:02 am

por que na primeira questão , você usou 2 dimensões ? ><'
avatar
Op@alo

Mensagens : 67
Data de inscrição : 02/07/2011
Idade : 26
Localização : Parnamirim-RN

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: OmegaMK-XII - Challenge 3 - C

Mensagem  Wagnesio em Sex Jul 29, 2011 5:39 pm

Op@alo escreveu:por que na primeira questão , você usou 2 dimensões ? ><'

Em C, uma variavel não consegue armazenar uma string, para armazenar uma palavra em C é necessário usar um vetor, para armazenar as 7 palavras ele usou uma matriz: semana[i][j], onde i se refere ao dia da semana e j à letra
avatar
Wagnesio

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

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: OmegaMK-XII - Challenge 3 - C

Mensagem  rmzelnick em Sex Jul 29, 2011 6:03 pm

OmegaMK-XII escreveu:Escolhi o challenge 2 light.

1 - Faça um Programa que leia um número e exiba o dia correspondente da semana (Começando de domingo ). Caso você digite outro valor deve aparecer valor inválido.

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<stdio.h>

int main()
{
char dia[7][10] = {"Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"};
int num;
printf("Digite um número: ");
scanf("%d",&num);
if(num>0 && num<8)
printf("Dia %d é %s\n", num, *(dia+(num-1)));
else
printf("Número inválido.\n");
return 0;
}



Fonte comentada:
http://paste.debian.net/124446/

3 - Faça um programa que peça uma nota, entre zero e dez. Mostre uma mensagem caso o valor seja inválido e continue pedindo até que o usuário informe um valor válido.

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

int main()
{
int nota = -1;
while(nota<0 || nota>10)
{
printf("Digite uma nota de 0 a 10: ");
scanf("%d", &nota);
if(nota>=0 && nota<=10)
printf("Valor correto.\n");
else
printf("Valor incorreto.\n");
}
return 0;
}


Fonte comentada:
http://paste.debian.net/124447/

4 - Faça um programa que leia um nome de usuário e a sua senha e não aceite a senha igual ao nome do usuário, mostrando uma mensagem de erro e voltando a pedir as informações.

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

int main()
{
char login[15], senha[15];
while(1)
{
printf("Digite seu login: ");
scanf(" %s", &login);
printf("Digite sua senha: ");
scanf(" %s", &senha);
if(!strcmp(login, senha))
printf("Login não pode ser igual à senha.\n\n");
else
{
printf("Login: %s\nSenha: %s\n", login, senha);
break;
}
}
return 0;
}


Fonte comentada:
http://paste.debian.net/124448/

5 - Faça um programa que calcule a quantidade dinheiro gasto por um fumante com os seguintes dados:
O número de anos que ele fuma :
O número de cigarros fumados por dia :
O preço da carteira de cigarro:

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<stdio.h>

int main()
{
float anos, cigarros, preco_cart;
printf("Número de anos que fuma: ");
scanf("%f", &anos);
printf("Número de cigarros fumados por dia: ");
scanf("%f", &cigarros);
printf("Preço da carteira de cigarro (20 unidades): ");
scanf("%f", &preco_cart);
printf("Dinheiro gasto nos cigarros em %.0f ano(s): R$ %.2f\n", anos, (preco_cart/20.0)*cigarros*365*anos);
return 0;
}


Fonte comentada:
http://paste.debian.net/124449/

6 - Escreva um algoritmo para encontrar o número do telefone correspondente a um determinado nome, na seguinte lista telefônica:
Nome : Fulano - Tel : 334-45566
Nome : Cicrano - Tel : 112-23344
Nome : Beltrano - Tel : 551-12233
Nome : Zé - Tel : 443-34422
Nome : Toinho - Tel : 661-12233
Nome : Luizinho - Tel : 776-65577

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

int main()
{
char name[10], nome[6][10] = {"Fulano", "Cicrano", "Beltrano", "Zé", "Toinho", "Luizinho"};
int cont, numero[6] = {33445566, 11223344, 55112233, 44334422, 66112233, 77665577};
printf("Digite um nome a ser procurado na lista: ");
scanf(" %s", &name);
for(cont=0; cont<6; cont++)
{
if(!strcmp(name, *(nome+(cont))))
{
printf("Nome: %s - Telefone: %d\n", name, numero[cont]);
return 0;
}
}
printf("Nome não encontrado na lista.");
return 0;
}


Fonte comentada:
http://paste.debian.net/124451/

Oi omega, parabéns pelo código, mas o código 3 não está muito bem otimizado, aparentemente você usa um loop infinito com a expressão break, mas isso não é uma boa solução. Eu postei um código alternativo: http://paste.debian.net/124532/
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: OmegaMK-XII - Challenge 3 - C

Mensagem  OmegaMK-XII em Sex Jul 29, 2011 8:30 pm

Parece que já responderam por mim. Smile

Cara, não usei do-while pq vi que vc fez assim no outro challenge e não quis deixar igual. De qualquer forma mudei ligeiramente o código e diminui duas linhas.
avatar
OmegaMK-XII

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

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: OmegaMK-XII - Challenge 3 - C

Mensagem  Op@alo em Sex Jul 29, 2011 10:25 pm

Wagnesio escreveu:
Op@alo escreveu:por que na primeira questão , você usou 2 dimensões ? ><'

Em C, uma variavel não consegue armazenar uma string, para armazenar uma palavra em C é necessário usar um vetor, para armazenar as 7 palavras ele usou uma matriz: semana[i][j], onde i se refere ao dia da semana e j à letra


ele fez isso também na 6 ?
avatar
Op@alo

Mensagens : 67
Data de inscrição : 02/07/2011
Idade : 26
Localização : Parnamirim-RN

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: OmegaMK-XII - Challenge 3 - C

Mensagem  OmegaMK-XII em Sex Jul 29, 2011 10:32 pm

Sim, foi o mesmo caso na 6ª.
avatar
OmegaMK-XII

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

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: OmegaMK-XII - Challenge 3 - C

Mensagem  fmle em Qui Ago 04, 2011 11:28 pm

Uma gambiarra-mor para os mais pacientes : )
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
char *login = NULL, *senha;
size_t n_bytes;

do {
printf("Digite usuário e senha.");
*(senha = ((senha = memchr(login, ' ', (n_bytes = getline(&login, &n_bytes, stdin)))) ? senha : login)) = '\n';
} while(!memcmp(login, ++senha, senha-login));

free(login);
return 0;
}

avatar
fmle

Mensagens : 8
Data de inscrição : 24/07/2011

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: OmegaMK-XII - Challenge 3 - C

Mensagem  fmle em Qui Ago 04, 2011 11:32 pm

Uma pergunta, porquê ficar alterando entre acessar por indíce e ponteiro?
avatar
fmle

Mensagens : 8
Data de inscrição : 24/07/2011

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: OmegaMK-XII - Challenge 3 - 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