Exata0mente
Membros-
Total de itens
21 -
Registro em
-
Última visita
Sobre Exata0mente
Últimos Visitantes
1.130 visualizações
Exata0mente's Achievements
0
Reputação
-
Você chegou a escrever algum código?
-
Olá amigo! O erro está no operador lógico que utilizou no if. A função strcmp retorna um inteiro 0 quando as palavras são iguais. O erro que seu código apresenta é que se uma das condições forem satisfeita ele dá acesso. O correto é usar o operador lógico OU (||). Veja "1 && 1 = 1" *** "1 || 1 = 1" "1 && 0 = 0" *** "1 || 0 = 1" "0 && 1 = 0" *** "0 || 1 = 1" "0 && 0 = 0" *** "0 || 0 = 0" Como a saída que diz "Acesso garantido!" é a saída else (0), se qualquer uma das condições tivesse uma ou nenhuma string correta a saída seria 0. Usando o operador lógico OU seria diferente: a única forma de o resultado ser 0 e ir para o else é se, e somente se, o retorno dos dois strcmp forem 0. if(strcmp(login.senha, "laranja") || strcmp(login.nome, "Angelo"))
-
Pense no seguinte, a média aritmética nada mais é do que a soma de n elementos dividido por n: media = (x1 + x2 + x3 + x4)/n Matematicamente, esta expressão poderia ser representada por: media = x1/n + x2/n + x3/n + x4/n. Dado este rearranjo da expressão fica fácil você fazer um laço para calcular média. Exemplo: int main(){ int i, n, idade[5] = {16, 18, 36, 40, 25}; float media; n = 5; media = 0; for(i = 0; i < n; i++){ media += idade[i] / (float)n; } return 0; } Veja: (16 + 18 + 36 + 40 + 25) / 5 => 135 / 5 = 27 16/5 + 18/5 + 36/5 + 40/5 + 25/5 => 3,2 + 3,6 + 7,2 + 8 + 5 = 27 Espero ter ajudado!
-
Olá! Não encontrei erro em seu código. Compilei e rodei no Code:Blocks e funcionou normalmente. Faz um teste com 3 medidas para cada sexo e posta o resultado.
-
Posta o código do que você já fez
-
Sempre que o compilador encontrar o exit(0) ele irá encerrar o programa. Coloque-o apenas quando for de fato necessário encerrar o programa (resposta errada por exemplo) Qual livro vocês estão utilizando?
-
Olá, Vamos ver se a lógica é essa: Solicita número limite para a aleatoriedade N; Solicita quantos elementos por linha será impresso M; Imprime o vetor; Se a quantidade de elementos for divisível por M pule uma linha; Me corrija se estiver errado por favor. Abaixo o código: #include <stdio.h> #include <stdlib.h> /*Biblioteca do srand() e rand(), não as esqueça :) */ #include <time.h> #define TAM 100 /*Por convencao usar constante com letras maiusculas*/ void atribuir_valor(int vet[], int N){ /*TAM e' uma constante global, ou seja, não se faz necessario passar como argumento pois já foi definida no começo do programa*/ int i; srand(time(0)); for(i = 0; i < TAM; i++) vet[i] = rand() % N + 1; /*Apesar de não passar o tamanho do vetor como argumento para a funcao, dentro da funcao e' necessario informar a posicao de cada elemento*/ } void exibe_vetor(int vet[], int M){ /*TAM e' uma constante global, ou seja, não se faz necessario passar como argumento*/ int i; for(i = 0; i < TAM; i++){ printf("Vet[%d] = %d\t", i + 1, vet[i]); if(!((i + 1) % M)) /*Condicao para pular linha*/ printf("\n"); } } int main(){ int v[TAM], n, m; printf("Informe o limite N:\n"); scanf("%d", &n); atribuir_valor(v, n); printf("Informe a quantidade de elementos por linha \'M\'\n"); scanf("%d", &m); /*Vamos assumir que o usuario não digitara numero negativo*/ printf("O vetor e: \n"); exibe_vetor(v, m); return 0; }
-
Olá! Tentei ser fiel ao máximo em seu código e deixá-lo bem simples, mas já adianto que não o corrigi (há alguns erros). É intuitivo os comandos então para seguir com as correções. #include <stdio.h> int main(){ char nome[60], d, n, turdiario; int idade, diasmes, diastrabmes, horasdia; float valhrtrab, salario, inss, fgts; /*Obs: há variaveis que não foram utilizadas em seu codigo: diasmes, n, d*/ printf("Digite o nome do funcionario: "); scanf("%s", nome); printf("Digite a idade do funcionario: "); scanf("%3d", &idade); printf("Digite quantos dias trabalhados no mes: "); scanf("%2d", &diastrabmes); do{ printf("Regime de horas trabalhadas por dia. 6 ou 8 horas?: "); scanf("%2d", &horasdia); }while((horasdia != 6) || (horasdia != 8)); /*Aqui há um erro de logica, 6 é diferente de 8 e 8 é diferente de 6 portanto este laco nunca sera nunca sera satisfeito*/ printf("Digite o Turno. D para Diurno e N para Noturno ou Pressione S para Sair: "); scanf("%c", &turdiario); if((turdiario != 'D') && (turdiario != 'N')){ printf("Programa Finalizado!!"); } if((turdiario == 'D') && (idade <= 50)) valhrtrab = 3.0; else if((turdiario == 'D') && (idade > 50)) valhrtrab = 3 + 3 * 0.1; else if((turdiario == 'N') && (idade <= 50)) valhrtrab = 4; else if((turdiario = 'N') && (idade > 50)) valhrtrab = 4 + 4 * 0.1; salario = (valhrtrab * horasdia * diastrabmes) + (valhrtrab * horasdia * diastrabmes * 1.5); fgts = salario * 0.08; if (salario <= (float)1556.94) inss = salario * 0.08; else if(salario >= (float)1556.95 && salario <= (float)2594.92) inss = salario * 0.09; else if(salario >= (float)2594.93 && salario <= (float)8189.82) inss = salario * 0.11; printf("O salario bruto é: %.2f", salario); printf("\nO Total do Depósito do FGTS e: %.2f",fgts); printf("\nO depósito do INSS é: %.2f", inss); return 0; }
-
Faça uma verificação da posição da coluna. if(col == 3) printf("\t\t"); ou if(col == col / 2) /*Verificando se está na metade*/ printf("\t\t"); o \t é como se fosse um TAB
-
Olá, se eu não entendi os conceitos de vetor erroneamente, não é uma boa prática definir o tamanho de um vetor por meio de uma variável pois o vetor é criado em tempo de compilação (antes do programa executar) já que é necessário destinar uma faixa na memória para o vetor. "Às vezes, a quantidade de memória a alocar só se torna conhecida durante a execução do programa. Para lidar com essa situação é preciso recorrer à alocação dinâmica de memória. A alocação dinâmica é gerenciada pelas funções malloc, realloc e free, que estão na biblioteca stdlib.(...)", este trecho retirei do site https://www.ime.usp.br/~pf/algoritmos/aulas/aloca.html Caso não tenha aprendido alocação dinâmica (o que é o meu caso) faça um vetor de um tamanho "aceitável" e no for determine o limite. Por exemplo: #include <stdio.h> #define MAX_T 50 int main(){ int X, Y, i, j; int matriz[MAX_T][MAX_T]; printf("X: "); scanf("%d",&X); /*Linha*/ printf("Y: "); scanf("%d",&Y); /*Coluna*/ printf("\n"); for(i = 0; i < X; i++) /*Usando X como limite para linha (assuminto que X será menor que MAX_T, você pode validar antes*/ for(j = 0; j < Y; j++) /*Usando Y como limite para linha (assuminto que X será menor que MAX_T, você pode validar antes*/ /*Preenchimento da Matriz*/ return 0; } Se falei alguma besteira me corrijam por favor :S
-
A tabela pode ser feita com matriz (vetor bidimensional). O define não está fazendo sentido no contexto que nos passou. Teria o enunciado do problema completo?
-
Modularização Exercicio Linguagem C Ajuda
pergunta respondeu ao ChristianMBaptista de Exata0mente em C, C++
Olha, se eu não entendi errado, o exercício 1 é muito simples e precisa apenas de dois números dados pelo usuário e não um laço: #include <stdio.h> #include <stdlib.h> /*Tipo void, pois as impressoes sairao direto das funcoes*/ void soma(int, int); void subtracao(int, int); void multiplicacao(int, int); void divisao(int, int); int main(){ int a, b; /*duas variaveis conforme o enunciado*/ printf("Digite dois numeros separados por espaco: "); scanf("%d%d", &a, &b); soma(a, b); subtracao(a, b); multiplicacao(a, b); divisao(a, b); return 0; } void soma(int num1, int num2){ printf("\n%d + %d = %d", num1, num2, num1 + num2); } void subtracao(int num1, int num2){ printf("\n%d - %d = %d", num1, num2, num1 - num2); } void multiplicacao(int num1, int num2){ printf("\n%d x %d = %d", num1, num2, num1 * num2); } void divisao(int num1, int num2){ printf("\n%d / %d = %.1f", num1, num2, (float)num1 / num2); } O exercício 2 é mais simples ainda pois pede apenas uma operação #include <stdio.h> void soma(int, int); int main(){ int a, b; printf("Digite dois valores separados por espaco: "); scanf("%d%d", &a, &b); soma(a, b); return 0; } void soma(int num1, int num2){ int soma; /*Apenas para não jogar a conta direto no printf*/ soma = num1 + num2; printf("\n%d + %d = %d", num1, num2, soma); } Caso eu tenha entendido errado peço desculpas :) -
Cara, eu sou seu fã!
-
Poxa! Vivendo e aprendendo. Conforme citado no link, essas coisas não são ensinadas em aula. Obrigado! mais uma para o caderninho. Então basta retirar o __fpurge(stdin); e adicionar um espaço antes do ("%4[\n] que funciona.
-
Bom dia! @vangodp, você tem total razão. Fui pesquisar um pouco mais sobre o gets() e é de fato um limitadissímo! @luisg5, lembre-se sempre que o nome de um vetor, é o "endereço" do primeiro elemento deste vetor, logo, não precisaria do & para indicar o endereço do vetor. Porém, caso você rode seu código fazendo apenas esta modificação, notará que o printf() retornará apenas a string nome. Acontece que o ENTER que você deu no primeiro scanf() não foi associado à string nome e acabou indo para o buffer. Quando o scanf() para a string contacorrente é chamado, primeiro analisa o buffer, que tem um "\n" o que encerraria a leitura da string contacorrente. Para resolver isto, será necessário a limpeza do buffer antes de ler a string contacorrente #include<stdio.h> #include<stdlib.h> int main(){ char nome[81], contacorrente[5]; int val; printf("Informe seu nome: "); scanf("%80[^\n]", nome); __fpurge(stdin); /*Para windows use fflush(stdin)*/ printf("Informe a conta corrente: "); scanf("%4[^\n]", contacorrente); val = atoi(contacorrente); printf("Seu nome e: %s\n", nome); printf("A conta e: %d", val); return 0; } Caso queira ver mais: https://www.vivaolinux.com.br/artigo/Parametros-interessantes-do-scanf-e-do-printf-em-C?pagina=2 http://www.cprogressivo.net/2012/12/Buffer--o-que-e-como-limpar-e-as-funcoes-fflush-e-fpurge.html