code.exe - Challenge II - LIGHT - C

Ir em baixo

code.exe - Challenge II - LIGHT - C

Mensagem  Code.exe em Seg Jul 18, 2011 10:46 pm

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
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <stdio.h>

int main(void) {

int opcao, teste = 1;

//Valor diferente de zero gera uma condição verdadeira.
while (teste) {

printf("\n\nDigite um numero de 1 a 7 referente ao dia da semana ou 0(zero) para sair:\t");
scanf("%d",&opcao);

system("cls");// Limpa tela (Não usar no Linux).

//A instrução break força a saída do laço.
if (opcao == 0)
break;

//Estrutura de seleção para escolher o dia de acordo com o valor de opcao.
switch (opcao) {

case 1 : printf("Dia 1 e Domingo;\n");
break;
case 2 : printf("Dia 2 e Segunda;\n");
break;
case 3 : printf("Dia 3 e Terça;\n");
break;
case 4 : printf("Dia 4 e Quarta;\n");
break;
case 5 : printf("Dia 5 e Quinta;\n");
break;
case 6 : printf("Dia 6 e Sexta;\n");
break;
case 7 : printf("Dia 7 e Sabado;\n");
break;
default: printf("Numero invalido.");
}
}
system("PAUSE");
return 0;
}


Exercício 1: Codepad

2 - Faça um Programa que peça um número correspondente a um determinado ano e em seguida informe se este ano é ou não bissexto.


 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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <stdio.h>


#define TRUE 1
#define FALSE 0


//Definição de um tipo do usuário Data.
typedef struct data {
int dia, mes, ano;
} Data;

//Função para testar a validade da data.
char testaData(Data d, char *bissexto);



int main(void) {
Data data;
char bissexto;


printf("Digite uma data com o seguinte formato dd/mm/aaaa:\n\n");

printf("Dia =\t"); scanf("%d",&data.dia);
printf("\nMes =\t"); scanf("%d",&data.mes);
printf("\nAno =\t"); scanf("%d",&data.ano);

system("cls");

//Bissexto contém um valor obtido na função, já que é passada por referência.
if (testaData(data, &bissexto)){
printf("%d/%d/%d e uma data valida", data.dia, data.mes, data.ano);
if (bissexto == 1)
printf("\n\nAno bissexto !\n\n");
else
printf(", entretanto o ano nao e bissexto\n\n");
}
else{
printf("%d/%d/%d e uma data invalida", data.dia, data.mes, data.ano);
if (bissexto == 1 && data.mes == 2){
printf(", mas o ano e Bissexto!\n\n");
}
}

printf("\n\n");

system("PAUSE");
return 0;

}

//Usando char para retornar inteiros pequenos.
char testaData(Data d, char *bissexto) {
//Matriz com ano normal e bissexto.
char ultimoDia[2][13] = {
{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31}
};

//Variavel recebe o resultado do teste lógico 0 ou 1.
*bissexto = d.ano %4 == 0 && (d.ano % 400 == 0 || d.ano % 100 != 0);

//Se for 1 usará a segunda linha da matriz correspondente ao ano bissexto.
if ((d.dia < 1 || d.dia > ultimoDia[*bissexto][d.mes]) ||
(d.mes < 1 || d.mes > 12) || (d.ano < 1))
return FALSE;
else
return TRUE;

}


Exercício 2: Codepad


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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <stdio.h>

//Função para verificar a nota.
int verificaNota(int nota);

int main(void) {

int nota, teste = 1;

//teste possui valor 1, portanto gera uma condição verdadeira.
while (teste) {

printf("Digite uma nota entre 0 e 10:\t");
scanf("%d",&nota);

system("cls");

//Para qualquer retorno diferente de zero a nota é válida.
if (verificaNota(nota)){
printf("Nota : %d\n\nValor correto.\n\n", nota);
break;// Encerra o laço caso a nota seja válida.
}
else
printf("Valor invalido !\n\n");

}
system("PAUSE");
return 0;
}

int verificaNota(int nota) {
if (nota < 0 || nota > 10)
return 0;
else
return nota;
}



Exercício 3: Codepad


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
22
23
24
25
26
27
28
29
30
31
#include <stdio.h>
#include <string.h>//Arquivo com o protótipo da função strcmp.


int main(void) {

char login[255], senha[50];
int teste = 1 ;

while (teste) {

printf("Digite seu login:\t");
gets(login);
printf("Digite sua senha:\t");
gets(senha);

system("cls");

//A função strcmp retorna verdadeiro caso as strings sejam diferentes.
if (strcmp(login,senha)){
printf("Logado com sucesso !\n\n");
break;//Interrompe o laço caso seja logado
}
else
printf("Login e senha invalidos!\n\n");


}
system("PAUSE");
return 0;
}


Exercício 4: Codepad


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
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <stdio.h>

#define CONST 20;
#define ANO 365;

int main(void) {

float cigarro_dia, p_carteira, anos;
float cigarro_ano, p_cigarro, total = 0;

printf("A quantos anos voce fuma?");
scanf("%f", &cigarro_dia);
system("cls");
printf("Quantos cigarros voce fuma por dia?");
scanf("%f", &anos);
system("cls");
printf("Qual e o preco da carterira de cigarro?");
scanf("%f", &p_carteira);
system("cls");

//Calcula o número de cigarros por ano.
cigarro_ano = anos * cigarro_dia * ANO ;
//Calcula o preço da carteira de cigarro.
p_cigarro = p_carteira / CONST;
//Calcula o total.
total = cigarro_ano * p_cigarro;

printf("\n\nTotal gasto: %.2f\n\n", total);

system("PAUSE");
return 0;
}



Exercício 5: Codepad



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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <stdio.h>
#include <string.h> //Arquivo com o protótipo de strcmp()e strlwr().


#define MAX 6 //Constante com o número de elementos do vetor.
#define FALSE -1 //Constante para emular o tipo lógico. Não pode ser 0 pois é um posição de vetor.

//Definição do tipo de usuário Lista.
typedef struct T_lista {
char nome[255];
char telefone[10];
}Lista;

//Função para consultar na lista.
int consulta(Lista *ptr, char *nome);

int main(void) {

char nome[255];
int indice;
//Vetor de tipo composto sendo inicializado.
Lista lista[] = {"Fulano","334-45566","Cicrano","112-23344","Beltrano","551-12233",
"Zé","443-34422","Toinho","661-12233","Luizinho","776-65577"};

printf("Digite o nome:");scanf("%s",nome);
strlwr(nome);
system("cls");

//Índice não poderia assumir o valor zero pois é uma posição válida.
indice = consulta(lista,nome);

if(indice != FALSE)
printf("O numero de %s e %s. \n\n",lista[indice].nome,lista[indice].telefone);
else
printf("%s nao consta na lista! \n\n",nome);


system("PAUSE");
return 0;
}

int consulta(Lista *ptr, char *nome) {
int i;

for (i = 0; i < MAX; i++) {
//strcmp retorna zro caso as strings sejam.
if (!strcmp(strlwr(ptr[i].nome),nome)) //A função strlwr converte para minúsculo.
return i; //Retorna índice do elemento.
}
//Se não encontrar retorna falso.
return FALSE;
}



Exercício 6: Codepad

7 - Faça um Programa que leia dois vetores com 10 elementos cada podendo ser strings ou números. Gere um terceiro vetor de 20 elementos, cujos valores deverão ser compostos pelos elementos intercalados dos dois outros vetores.


 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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <stdio.h>
#include <string.h>

//Constantes com os limites dos vetores.
#define MAX 10
#define LIM 20

//Função para ler o vetor.
void lerVetor(char **vetor);
//Função para mostrar o vetor.
void mostrarVetor(char **vetor);
//Função para mostrar o vetor depois de intercalado.
void mostrarIntercalacao(char **vetor);
//Função que realiza a intercalação.
void intercala(char **v1, char **v2, char **v3);

int main(void) {

char *vetor1[MAX], *vetor2[MAX];
char *vetor3[LIM];

lerVetor(vetor1);
system("cls");
lerVetor(vetor2);
system("cls");

printf("Vetor 1......: ");
mostrarVetor(vetor1);

printf("Vetor 2......: ");
mostrarVetor(vetor2);

printf("Intercalacao : ");
intercala(vetor1, vetor2, vetor3);
mostrarIntercalacao(vetor3);


system("PAUSE");
return 0;
}
//Função recebe um vetor de ponteiros.
void lerVetor(char **vetor){
int i = 0;
static int j = 1; //Variável estátic conserva seu valor cada chamada.
printf("Digite o vetor %d:\n",j++);
for(i = 0; i < MAX; i++)
scanf(" %s",&vetor[i]);
}

//Função recebe um vetor de ponteiros.
void mostrarVetor(char **vetor){
int i;
for(i = 0; i < MAX; i++)
printf("%s ",vetor++); //Incremento através da aritmética de ponteiros
printf("\n\n");
}

//Função recebe um vetor de ponteiros.
void mostrarIntercalacao(char **vetor){
int i;
for(i = 0; i < LIM; i++)
printf("%s ",vetor++); //Incremento através da aritmética de ponteiros
printf("\n\n");
}

//Função recebe vetores de ponteiros.
void intercala(char **v1, char **v2, char **v3) {
int i, j = 0, k = 0; // Índices auxiliares inicializados.

for (i = 0; i < LIM; i++){
if (i % 2 == 0)
v3[i] = v1[j++]; //J é o índice para par.
else
v3[i] = v2[k++]; //K é o índice para ímpar.

}
}



Exercício 7: Codepad

8 - Utilizando vetores faça um programa que faça 5 perguntas para uma pessoa sobre um crime.


 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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <stdio.h>

//Função para leitura e computação das respostas.
void resposta(int* resp);
//Função para classificação do interrogado.
void classificacao(int total);

int main(void) {
//Inicialização de um vetor de ponteiros para char.
char *perguntas[5] = {"Telefonou para a vitima?", "Esteve no local do crime?",
"Mora perto da vitima?", "Devia para a vitima?",
"Ja trabalhou com a vitima?"};
int i, resp = 0;
//Por convenção adotou-se os valores 0 e 1 para as respostas.
printf("\t\t\tResponda: 0 - NAO ou 1 - SIM\n\n");

for(i = 0; i < 5; i++){
printf(perguntas[i]);
resposta(&resp);//Emulação de passagem por referência.
}

classificacao(resp);

printf("\n\n");
system("PAUSE");
return 0;
}

void resposta(int *rsp) {

int r, t = 1;
//Para continuar o laço tem que ser uma resposta errada.
while(t){
scanf("%d",&r);
if (r == 1){
++(*rsp);
break;
}
else if (r == 0)
break;
else
printf("Resposta invalida. Digite 0 ou 1!");
}

}

void classificacao(int total){
switch (total){
case 2: printf("\t\t\t\tSuapeita");
break;
case 3: printf("\t\t\t\tCumplice");
break;
case 4: printf("\t\t\t\tCumplice");
break;
case 5: printf("\t\t\t\tAssassino");
break;
default: printf("\t\t\t\tInocente");
}
}


Exercício 8: Codepad


9 - Faça um programa que leia 2 strings e informe o conteúdo delas seguido do seu comprimento. Informe também se as duas strings possuem o mesmo comprimento e são iguais ou diferentes no conteúdo.

 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
#include <stdio.h>
#include <string.h>//Protótipos das funções strlen() e strcmp().

#define MAX 2
int main(void) {
char string[2][255];
int size[2], i;

for (i = 0; i < MAX; i++){
printf("String %d:", i + 1);
gets(string[i]);//Função gets() para ler espaços.
size[i] = strlen(string[i]); //Retorna o tamanho da string
}

for (i = 0; i < MAX; i++){
printf("\nTamanho da string %d \"%s\": %d caracteres", i + 1, string[i], size[i]);
if (i > 0){
if (size[i-1] != size[i])//Compara o tamanho das strings.
printf("\n\nAs duas strings sao de tamanhos diferentes.");
if (strcmp(string[0],string[1]) != 0)//Verifica se as strings possuem o mesmo conteúdo.
printf("\n\nAs duas strings possuem conteudos diferentes.\n\n");
}
}

system("PAUSE");
return 0;
}


Exercício 9: Codepad


Última edição por Code.exe em Sab Jul 23, 2011 4:38 pm, editado 1 vez(es)
avatar
Code.exe

Mensagens : 6
Data de inscrição : 16/07/2011

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: code.exe - Challenge II - LIGHT - C

Mensagem  Z3r0 em Seg Jul 18, 2011 11:21 pm

Opa!
Bom te ver participando hein Code.exe .. já chegou mostrando presença.
Curti........ e...jaja eu testo teu código....em caso de haver algum erro e tal, te reporto aqui mesmo blz?

Ah, e curti a documentação.
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: code.exe - Challenge II - LIGHT - C

Mensagem  Code.exe em Sab Jul 23, 2011 4:43 pm

Z3r0 escreveu:Opa!
Bom te ver participando hein Code.exe .. já chegou mostrando presença.
Curti........ e...jaja eu testo teu código....em caso de haver algum erro e tal, te reporto aqui mesmo blz?

Ah, e curti a documentação.

Valeu !! Pra quem gosta de programação é um prato cheio pra se divertir e testear o conhecimento, portanto eu não poderia ficar de fora.
avatar
Code.exe

Mensagens : 6
Data de inscrição : 16/07/2011

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: code.exe - Challenge II - LIGHT - 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