Ir para conteúdo

Pesquisar na Comunidade

Mostrando resultados para as tags ''c''.

  • Pesquisar por Tags

    Digite tags separadas por vírgulas
  • Pesquisar por Autor

Tipo de Conteúdo


Calendários

  • Comunidade iMasters

Todas as áreas do Fórum

  • Q&A Desenvolvimento
    • Perguntas e respostas rápidas
  • Desenvolvimento Web
    • Desenvolvimento frontend
    • Javascript
    • PHP
    • Ruby
    • Python
    • Java
    • .NET
    • Docker, Kubernets e outros ambientes
    • Desenvolvimento com Wordpress
    • Desenvolvimento de apps
    • Desenvolvimento ágil
    • Desenvolvimento de Games
    • Banco de Dados
    • Design e UX
    • Algoritmos & Outras Tecnologias
  • Entretenimento e uso pessoal
    • Segurança & Malwares
    • Geral
    • Boteco iMasters

Encontrar resultados em...

Encontrar resultados que...


Data de Criação

  • Início

    FIM


Data de Atualização

  • Início

    FIM


Filtrar pelo número de...

Data de Registro

  • Início

    FIM


Grupo


Google+


Hangouts


Skype


Twitter


deviantART


Github


Flickr


LinkedIn


Pinterest


Facebook


Site Pessoal


Localização


Interesses

Encontrado 90 registros

  1. Questão 1 Crie um algoritmo que leia um número entre 2 e 20 e gere uma tela com a seguinte configuração: Digite um número: 4 Saída do algoritmo: 1 12 123 1234 123 12 1 Questão 2 Escreva um algoritmo que calcule a média da seguinte sequência numérica a seguir: 1/2 + 1/3 + 1/4 + 1/5 + 1/6 + ... + 1/50. Feito isto, o algoritmo deverá apresentar uma lista contendo todos os números da sequencia que estão acima da média calculada. Questão 3 Um posto está vendendo combustíveis com a seguinte tabela de descontos: Álcool: até 20 litros, desconto de 3% por litro e acima de 20 litros, desconto de 5% por litro; Gasolina: até 20 litros, desconto de 4% por litro e acima de 20 litros, desconto de 6% por litro. Escreva um algoritmo que leia o número de litros vendidos, o tipo de combustível (A-álcool, G-gasolina) e imprima o valor a ser pago pelo cliente. Considere que o preço do litro da gasolina é R$ 2,99 e o preço do litro do álcool é R$ 2,19. Usar procedimento. Questão 4 Um número é, por definição, primo se ele não tem divisores, exceto 1 e ele próprio. Prepare um programa para ler um número inteiro positivo e determinar se ele é ou não um número primo. Usar função.
  2. Estou com dificuldade para elaborar o seguinte código:
  3. Neste programa eu recebo as siglas para cada operação, como eu poderia printar conforme eu as solicitei com, o programa se encerra quando OOO é digitado. exemplos de entrada 18 12 MOD MDC OOO saida MDC(18,12) = 6 MOD(18,12) = 6 ***código abaixo #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> int MDC(int n1, int n2); int MOD(int n1, int n2); int POT(int n1, int n2); int main(){ char x[100]; int n1=0, n2=0 , rmdc = 0, rmod = 0, rpot = 0; scanf("%d",&n1); scanf("%d",&n2); rmdc = MDC(n1,n2); rmod = MOD(n1,n2); rpot = POT(n1,n2); do{ scanf("%s", x); if(strcmp(x,"MDC") == 0){ printf("MDC(%d,%d) = %d\n", n1, n2, rmdc); } else if(strcmp(x,"MOD") == 0){ printf("MOD(%d,%d) = %d\n", n1, n2, rmod); } else if(strcmp(x,"POT") == 0){ printf("POT(%d,%d) = %d\n", n1, n2, rpot); } else if(strcmp(x,"OOO") == 0){ break; } } while (strcmp(x,"OOO") != 0); return 0; } int MDC(int n1, int n2){ if (n2==0) return n1; return MDC(n2, n1 % n2); } int MOD(int n1, int n2){ int res; res = n1 % n2; return res; } int POT(int n1, int n2) { if(n2 == 0) return 1; else if(n2 > 0) return n1 * POT(n1, n2-1); }
  4. Tenho que criar um código que imprime os 5 numeros anteriores, por exemplo: se o usuario digitar 30, tem que ser impresso 29, 28, 27, 26, 25. Eu conseguir criar um código, porem começa do numero atual, se eu digito 30 começa do 30 e não é isso que eu quero. Eu consigo fazer isso tranquilo com um for, mas preciso que seja com recursividade. O codigo que criei foi esse: #include <stdio.h> long int number(int num, int y){ if(num > y-5){ printf(" %d ", num); number(num - 1, y); } else{ return 0; } } int main() { int N; int y; printf("Digite um numero inteiro positivo: "); scanf("%d", &N); y = N; number(N, y); return 0; }
  5. char

    Ajuda em logins.

    Olá, sou inciante em programação, estamos aprendendo C, preciso de ajuda para o seguinte: 1- Fiz para salvar em vetor um código somente de números e uma senha tbm de números. int telacadastro () { int i, logar[50], senha[50]; printf ("Vamos executar o cadastro, para isso digite apenas o login e a senha(somente numeros):\n"); for (i=0; i<=0; i++) { printf ("Escolha um codigo de login de até 4 numeros. Ex: 2134:"); scanf("%d", &logar); break; } for (i=0; i<=0; i++) { printf ("Escolha uma senha, somente de numeros, até 8 numeros:"); scanf ("%d", &senha); } main(); return 0; } 2 - O próximo passo seria comparar esses vetores: int telalogin () { int i, cli_logar[50], cli_senha[50], logar[50], senha[50]; printf("Digite seu codigo:"); scanf("%d", &cli_logar); printf("Digite sua senha:"); scanf("%d", &cli_logar); for (i=0; i<=49; i++) { if((cli_logar==logar) && (cli_senha==senha)) { printf("Acesso Liberado."); break; } else { printf("Login Errado."); break; } } } Alguém ai que me ajude, o programa copila e roda, só que não salva o código e senha, nem compara, acredito que a logica esteja errada. Agradeço amigos.
  6. Vinicius G. Vieira

    Atividade da faculdade de C

    Construa um algoritmo que leia uma quantidade indeterminada de números inteiros positivos e identifique qual foi o maior número digitado. Para encerrar a série de números informada deve ser digitado o valor “-1”. Eu fiz a maioria do comando... mas não estou conseguindo fazer com que o programa informe o maior numero. desde já obrigado pela ajuda. #include <stdio.h> #include <math.h> #include <stdlib.h> void main () { int x, y; printf("digite -1 para cessar comando \n"); while (x!=0 && x!=-1) { printf("digite valores positivos \n"); scanf("%i", &x); if (x<<0 && x!=-1) { printf("valor nao valido"); } } printf("maior valor %i é", x); }
  7. juliaKrunker

    Lista Encadeada

    1- O comando typedef pode ser utilizado para criar novos comandos, ou simplesmente novas formas de escrever determinados comandos em linguagem C. Por exemplo, toda vez que você quiser criar uma variável do tipo struct declarado acima, terá que escrever o nome completo do tipo, isto é struct lista. Usando o comando typedef, defina um tipo alternativo, chamado Lista, que possa ser usado em lugar de struct lista. 2- Usando o tipo Lista que você criou na questão 3, declare uma variável chamada myList que possa ser utilizada para construir uma lista encadeada. 3- (0,5) Usando o tipo Lista que você criou na questão 3, declare uma variável chamada novo que possa ser utilizada para criar um novo elemento para a lista declarada na questão 4. 4- Escreva uma linha de código que aloque espaço na memória para a variável novo declarada na questão 5, de forma que a variável possa ser utilizada para inserir um novo elemento na lista myList declarada na questão 4. 5 -Considerando a variável myList declarada na questão 4 e a variável novo declarada na questão 5 e alocada na questão 6, atribua os valores 1 para o atributo id e 9.1 para o atributo valor e insira-a na lista myList. 6- O trecho de código apresentado a seguir, refere-se a uma função que receberá como parâmetro um ponteiro para uma lista do tipo Lista e deverá calcular e retornar a média dos valores existentes na lista. Escreva o corpo da função.
  8. 1. Crie um programa que recebe um número inteiro N e exibe na tela a contagem de 1 até N. 2. Crie um programa que recebe dois números inteiros, A e B e exibe na tela a contagem de A até B. 3. Crie um programa capaz de calcular a área e o perímetro de um retângulo, uma circunferência e um triângulo. O usuário deve informar que forma geométrica ele quer usar e informar pelo teclado os dados necessários para o cálculo da área e do perímetro da figura (por exemplo, a circunferência precisa apenas do raio, mas o triângulo requer o tamanho dos três lados e a altura). 4. Crie um programa que recebe um valor X e retorna o resultado da expressão 2X²+4X–1. 5. Utilizando a função matemática da questão anterior, crie um programa que mostre os resultados dessa função aplicado como entrada X todos os N primeiros valores inteiros de X múltiplos de 3. N é um valor dado pelo usuário. Ex: se N=6, o programa deve mostrar todos os resultados para X= 3, 6, 9, 12, 15 e 18. 6. Crie um programa que recebe um número N e exibe na tela a contagem de 1 até a metade de N. Caso N seja ímpar, mostrar o número do meio também. Por exemplo: se N=7, exibir 1,2,3 e 4 (4 é o número do meio entre 1 e 7). 7. Crie um programa que recebe um número N e exibe na tela o par de números das pontas da sequência de 1 até N, apresentando o primeiro e o último, o segundo e o penúltimo e assim por diante até chegar no centro. Por exemplo: se N=9, mostrar a sequência 1 e 10, 2 e 9, 3 e 8, 4 e 7, 5 e 6. 8. Crie um programa que recebe o número N e faz a contagem regressiva de N até 0, exibindo apenas os números pares. 9. Crie um programa que recebe um valor x tal que y seja atualizado de acordo com a seguinte regra: a. Se x é par, y = x / 2 b. Se x é ímpar, y = 3 * x + 1 c. Após atualizar y, imprime o valor de y Após isso, o programa deve jogar o valor de y em x (x = y;) e continuar repetindo esse processo até que y tenha o valor final 1. Ex: para x=13, a saída será: 40 -> 20 -> 10 -> 5 -> 16 -> 8 -> 4 -> 2 -> 1. 10. Crie um programa que receba um valor N e exiba na tela a tabuada de multiplicação de N. Por exemplo: N=4 exibe exatamente no seguinte formato. 1x4 = 4 2x4 = 8 3x4 = 12 4x4 = 16 5x4 = 20 6x4 = 24 7x4 = 28 8x4 = 32 9x4 = 36 10x4 = 40
  9. nixfb

    help

  10. Estou iniciando em programação e tenho um trabalho em C que devo: Construir um programa que leia uma matriz 7x7 de inteiros. Após a leitura, calcular o somatório apenas dos elementos abaixo destacados da matriz lida. Mostre, os elementos destacados e o somatório. A soma deve ser entre as posições da matriz refentes a imagem em anexo. É esta a dificuldade que eu encontrei, não sei os passos para realizar esta soma em específico então provavelmente a minha tentativa abaixo foi bizarra. Alguém poderia me ajudar? Agradeço desde já. #include<stdio.h> #include<conio.h> #define linha 7 #define coluna 7 int main (void ) { int i, j, matriz[linha][coluna], result, soma; printf ("\nDigite valor para os elementos da matriz\n\n"); for ( i=0; i<linha; i++ ){ for ( j=0; j<coluna; j++ ){ printf ("\nElemento[%d][%d] = ", i, j); scanf ("%d", &matriz[ i ][ j ]); } } for ( i=0; i<linha; i++ ){ for ( j=0; j<coluna; j++ ){ printf ("%i", matriz[i][j]); } printf("\n"); } for ( i=0; i<linha; i++ ){ for ( j=0; j<coluna; j++ ){ result=result+matriz[i][j]; } } for ( i=0; i<linha; i++ ){ for ( j=0; j<coluna; j++ ){ soma=soma+matriz[3][3]+matriz[4][2]+matriz[4][3]+matriz[4][4]+matriz[5][1]+matriz[5][2]+matriz[5][3]+matriz[5][4]+matriz[5][5]+matriz[6][0]+matriz[6][1]+matriz[6][2]+matriz[6][3]+matriz[6][4]+matriz[6][5]+matriz[6][6]; } } printf("\n\nA soma de todos valores da matriz: %d\n", result); printf("\n\nA soma dos valores solicitados: %d\n", soma); }
  11. Bom dia! Eu tenho um programa escrito em C e nele estou utilizando funções, e para ter boa prática, eu quero separar as funções do programa principal. Então to querendo criar uma header e outro arquivo .c para colocar as funções. Ai eu fico com: Arquivo .h "Funcoes.h"; Arquivo .c "Funcoes.c" Arquivo .c "main.c" Eu tentei fazer o esquema acima, mas quando compilo o arquivo main.c o compilador me retorna um erro (Anexo I); Na minha opinião era pra dar certo, pois fiz igual um exemplo que eu tenho aqui (o exemplo tá em c++)... o que eu to deixando passar pra não ter dado certo? // FUNCOES.H #pragma once #include <stdio.h> #include <math.h> extern int assentoC[23]; extern int assentoJ[23]; extern float valort; void limpavetor(int *v1,int*v2); //FUNCOES.C #include "funcoes.h" void limparvetor(int *v1,int *v2){ int i; for(i=0;i<23;i++){ *(v1+i)=0; *(v2+i)=0; } } //MAIN.C #include<stdio.h> #include<math.h> #include <string.h> #include "funcoes.h" int assentoC[23]; int assentoJ[23]; float valort=0; char* verStatusAss(int *assento) {if(*assento>0) return "OCUPADO"; else return "DISPONIVEL"; } void comprar() { int i; int opt=0; int qt=0; int ass[23]; int confirma=0; int menu=0; int contDJ=1; int contDC=1; int destino=0; int cont=0; float valor1=28.0,valor2=159.0,valor3=188.0; printf("\t\t MENU\n"); printf("Destino: [1] Sao Paulo [2] Curitiba [3] Florianopolis: "); scanf("%i",&destino); printf("\n"); printf("voce quer comprar assentos em/ou: \n\n"); for(i=0;i<23;i++){ if(assentoC[i]==0){ contDC=0; } } for(i=0;i<23;i++){ if(assentoJ[i]==0){ contDJ=0; } } printf("ASSENTO DISPONIVEIS EM\n"); if(contDJ==0) printf("\n1 - Janela\n\n"); if(contDC==0) printf("2 - Corredor\n"); printf("\n\n\n3 - Voltar para menu principal\n"); scanf("%i",&opt); switch(opt){ case 1: printf("[JANELA] Quantos assentos?:"); scanf("%i",&qt); printf("\n"); printf("[JANELA] Qual/Quais assento?: "); for(i=0;i<qt;i++){ cont=0; while(cont<1){ printf("[JANELA] Bilhete: %i. Assento: ",i+1); scanf("%i",&ass[i]); printf("\n"); if(assentoJ[ass[i]]!=0){ printf("Assento OCUPADO. Escolha outro assento! "); }else { cont++; } } } printf("\t\t RESUMO\n"); printf("Posicao: JANELA \n"); for(i=0;i<qt;i++){ printf("Bilhete: %i.\t Assento: %i\n",i+1,ass[i]); } printf("CONFIRMA?? "); printf("[1] SIM [0] NAO:"); scanf("%i",&confirma); if(confirma!=0){ for(i=0;i<qt;i++) { assentoJ[ass[i]]=1; switch(destino) { case 1: valort=valort+(qt*valor1); break; case 2: valort=valort+(qt*valor2); break; case 3: valort=valort+(qt*valor3); break; } } } else { printf("VENDA NAO EFETUADA! VOLTANDO AO MENU PRINCIPAL..."); } break; case 2: printf("[CORREDOR] Quantos assentos?:"); scanf("%i",&qt); printf("\n"); printf("[CORREDOR] Qual/Quais assento?: "); for(i=0;i<qt;i++){ printf("[CORREDOR] Bilhete: %i. Assento: ",i+1); scanf("%i",&ass[i]); printf("\n"); } printf("\t\t RESUMO\n"); printf("Posicao: CORREDOR \n"); for(i=0;i<qt;i++){ printf("Bilhete: %i.\t Assento: %i\n",i+1,ass[i]); } printf("CONFIRMA?? "); printf("[1] SIM [0] NAO:"); scanf("%i",&confirma); if(confirma!=0){ for(i=0;i<qt;i++) { assentoJ[ass[i]]=1; } } else { printf("VENDA NAO EFETUADA! VOLTANDO AO MENU PRINCIPAL..."); } break; case 3: break; } } int menuprincipal() { int opt=0; printf("\t\t MENU PRINCIPAL\n\n"); printf("\t\t 1 - COMPRAR ASSENTO\n"); printf("\t\t 2 - VERIFICAR ASSENTOS\n"); printf("\t\t 3 - VER MAPA DO TRAJETO\n"); printf("\t\t 4 - VER LUCRO\n"); printf("\t\t 5 - SAIR\n"); printf("\t\t Digite uma opcao: "); scanf("%i",&opt); return opt; } int menusecundario() { int opt=0; printf("1 - COMPRAR ASSENTO // "); printf("2 - VERIFICAR ASSENTOS \n"); printf("3 - VER MAPA DO TRAJETO // "); printf("4 - VER LUCRO // "); printf("5 - VOLTAR PARA MENU PRINCIPAL\n"); printf("6 - SAIR \n"); printf("Digite uma opcao: "); scanf("%i",&opt); return opt; } void verAss() { int i; int opt=0; printf("\t\t MENU\n"); printf("voce quer ver assentos em/ou: \n"); printf("1 - Janela\n"); printf("2 - Corredor\n"); printf("3 - Todos\n"); printf("Digite uma opcao: "); scanf("%i",&opt); printf("\n"); for(i=0;i<23;i++) { switch(opt){ case 1: printf("[JANELA] Assento %i. STATUS: %s \n",i, verStatusAss(&assentoJ[i])); break; case 2: printf("[CORREDOR] Assento %i. STATUS: %s \n",i,verStatusAss(&assentoC[i])); break; case 3: printf("[JANELA] Assento %i. STATUS: %s \t [CORREDOR] Assento %i. STATUS: %s\n",i,verStatusAss(&assentoJ[i]),i,verStatusAss(&assentoC[i])); break; } } } int voltarMenuP(int *menu) { int menu2; printf("APERTE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL"); scanf("%i",&menu2); if(menu2!=0) *menu=1; return menu; } int acao(int opt,int * gameover) { int menu=0; while(!menu){ switch(opt){ case 1: comprar(); voltarMenuP(&menu); break; // VERIFICAR ASSENTOS case 2: verAss(); voltarMenuP(&menu); break; // verMap() case 3: printf("\t\t\MAPA\n"); printf("SJC\t->\t Sao Paulo\t->\t Curitiba\t->\t Florianopolis\n"); voltarMenuP(&menu); break; // verLuc() case 4: printf("Valor total: %.2f\n",valort); voltarMenuP(&menu); break; // exit() case 5: *gameover=1; return *gameover; break; } } } int main(){ int gameover=0; int opt; int i=0; limparvetor(&assentoC,&assentoJ); while(!gameover){ // MENU PRINCIPAL // -- func menuprincipal() acao(opt=menuprincipal(),&gameover); } return 0; }
  12. programa { inclua biblioteca Matematica funcao inicio() { inteiro hom=0, mul=0, rsim=0, rnao=0, rhsim=0, rmsim=0, n, t=4 real psim, pnao caracter sexo, resp (n == t) { leia ("Informe o Sexo: ", sexo) leia ("Gostou do produto (S/N): ", resp) se (sexo =='1') { hom = hom + 1 se (resp == '1') { rmnao = rmnao + 1 } } senao { se (sexo == '2') { mul = mul + 1 se (resp == '2') { rhsim = rhsim + 1 } } } se (resp == '1') { rsim = rsim +1 } senao { se (resp == '2') { rnao = rnao +1 } } n = n + 1 } psim = 100 * (rmsim / t) pnao = 100 * (rhnao / t) } escreva ("Quantidade de pessoas que responderam sim: ", rsim) escreva ("Quantidade de pessoas que responderam não: ", rnao) escreva ("Porcentagem de mulheres que responderam sim: ", psim) escreva ("Porcentagem de homens que responderam não: ", pnao) }
  13. estou tentando fazer um programa que verifique 3 valores e informe o maior, o menor e se forem iguais! oq ta errado #include<stdio.h> #include<stdlib.h> #include<locale.h> int main() { setlocale(LC_ALL,"Portuguese"); int maior,menor; float a,b,c; printf("\n\tDigite 3 valores: \n"); scanf("%f%f%f",&a,&b,&c); if (a>b&&a>c) { maior=a; } else{} if (b>a&&b>c) { maior=b; } else{} if(c>a&&c>b) { maior=c; } if (a<b&&a<c) { menor=a; } else{} if(b<a&&b<c) { menor=b; } else{} if(c<a&&c<b) { menor=c; } else{} if (a==b&&b==c&&a==c) { printf("\n\tValores iguais\n\n"); } else{} printf("\n\tO maior é: %d\n\tO menor é: %d\n\n",maior,menor); system("pause"); return 0; }
  14. Keven Augusto

    Cronômetro em C

    Primeiramente, bom dia/boa tarde/boa noite. Eu estou migrando de vez para o Linux e percebi que não possui nenhuma aplicação nativa de cronometro como a que estava acostumado a utilizar no Windows 10. Eu faço home office, então uso muito para gerir o tempo de trabalho diário e gostaria de utilizar no Ubuntu também. Procurei na loja do sistema, mas não encontrei nenhum que me agradasse e, como estudante de Engenharia de Computação, pensei em fazer um simples que execute no terminal mesmo e possua as funções básicas que preciso: start, pause e reset. Porém, estava pensando e não aprendi ainda e não tenho a menor ideia de como faria para que fosse exibido no terminal o contador e ao mesmo tempo examinar o teclado para que pause a execução caso seja pressionada uma determinada tecla. Alguém teria alguma ideia de como possa fazer para isso? Eu pensei em iniciar um novo terminal via código mesmo e ir mostrando o contador neste outro terminal, aí no primeiro eu insiro os comandos para pausar, começar ou reiniciar o tempo. Penso que seja mais ou menos isso que preciso fazer, mas não tenho certeza e gostaria de uma luz.
  15. Lísias de Castro

    trajeto linear em linguagem c

    Ola, sou Lísias e gostaria de saber se alguém poderia me ajudar nessa tarefa tão difícil para finalizar minha biblioteca. Eu fiz um motor de jogos, e nele já consegui implementar todas as funções básicas para um uso primário. Fazendo a criação de jogos simples através dela. Mas estou desenvolvendo um rpg, e resolvi fazer com que os personagens atirem a longa distância. Porém, para que isso aconteça, tenho que fazer com que o objeto a ser atirado sempre corra em linha reta. Criei uma função que faz com que todos os objetos se movam na tela, mas ela não funciona de uma maneira linear. O que posso modificar nessa função para que ela me proporcione isso? static STATUS place_user_move(OBJECT_SET * U, BP32 x, BP32 y) { if (U == NULL)return (Off); if (U->x_route == x) { if (U->y_route > y) { U->y_route -= U->y_speed; U->where_stop_but(U, NORTH); if (U->y_route < y) { U->y_route = y; U->where_stop(U); return (On); } } if (U->y_route < y) { U->y_route += U->y_speed; U->where_stop_but(U, SOUTH); if (U->y_route > y) { U->where_stop(U); U->y_route = y; return (On); } } return (Off); } if (U->y_route == y) { if (U->x_route > x) { U->x_route -= U->x_speed; U->where_stop_but(U, WEST); if (U->x_route < x) { U->where_stop(U); U->x_route = x; return (On); } } if (U->x_route < x) { U->x_route += U->x_speed; U->where_stop_but(U, EAST); if (U->x_route > x) { U->where_stop(U); U->x_route = x; return (On); } } return (Off); } if (U->x_route > x) { U->x_route -= U->x_speed; if (U->x_route < x)U->x_route = x; if (U->y_route > y) { U->y_route -= U->y_speed; U->where_stop_but_and(U, NORTH, WEST); if (U->y_route < y)U->y_route = y; } if (U->y_route < y) { U->where_stop_but_and(U, SOUTH, WEST); U->y_route += U->y_speed; } } if (U->x_route < x) { U->x_route += U->x_speed; if (U->x_route > x)U->x_route = x; if (U->y_route < y) { U->y_route += U->y_speed; U->where_stop_but_and(U, SOUTH, EAST); if (U->y_route > y)U->y_route = y; } if (U->y_route > y) { U->y_route -= U->y_speed; U->where_stop_but_and(U, NORTH, EAST); if (U->y_route < y)U->y_route = y; } } return (Off); } PLACE_CALL STATUS PLACE_TYPE place_user_route(CHAINED * user, BP32 x, BP32 y) { if (user && USER_C(user->it)->object && bit_is_on(USER_C(user->it)->object->status, OBJECT_VISIBLE)) { OBJECT_SET * U = USER_C(user->it)->object; if (U->x_route == x && U->y_route == y) { obj_where_stop_all(U); return (On); } //printf("xs %f ys %f\n",object->x_speed,object->y_speed); return (place_user_move(U, x, y)); } return (Off); } #define sign(x) ((x > 0) ? 1 : ((x < 0) ? -1 : 0) ) PLACE_CALL STATUS PLACE_TYPE place_user_straight(CHAINED * user, BP32 x1, BP32 y1) { if (user && USER_C(user->it)->object && bit_is_on(USER_C(user->it)->object->status, OBJECT_VISIBLE)) { OBJECT_SET * O = USER_C(user->it)->object; BP32 dx, dy; dx = x1 - O->x_route; dy = y1 - O->y_route; static BP32 x = -1, y = -1, p = -1; if (x == -1)x = O->x_route; if (y == -1)y = O->y_route; if (p == -1)p = 2 * dy - dx; printf("x %lf y %lf\n", x, y); if (x < x1) { if (p >= 0) { y = y + 1; p = p + 2 * dy - 2 * dx; } else { p = p + 2 * dy; } x = x + 1; } else { O->x_route = x; O->y_route = y; x = -1; y = -1; p = -1; return (On); } O->x_route = x; O->y_route = y; x = -1; y = -1; p = -1; } return (Off); } a função user_place_straight foi minha tentativa de implementar bresenham que promete fazer o que estou tentando. Isso é o que fá fiz com o motor: https://www.youtube.com/watch?v=nuLi_lB6c4Y&feature=youtu.be Mas até agora não estou conseguindo resultado
  16. Boa noite, Preciso de ajuda com o desenvolvimento de um programa. Quero saber 3 coisas . 1 - Criei uma vetor de struct vinculada a uma constante de valor 5. Quero saber como faço para limitar o cadastro ao tamanho da constante ( controla o n° de posições do vetor da struct) De forma que ao cadastrar 5 livros ele impeça de cadastrar o sexto. 2- Impedir que dos 5 cadastros algum deles se repita. (Livros iguais) 3- Se eu der o comando para exibir a lista de dados cadastrados e não houver nenhum ele tem que informar lista vazia. Segue o meu código. #include<stdio.h> #include<stdlib.h> #include<string.h> #define Max_livros 5 struct biblio{ char nomeobra[30]; char nomeedit[30]; char nomeaut[30]; int codigo; int ativo; }; biblio livros[Max_livros]; void menu(); void cadastrar(); void mostrar(); // Menu principal -------------------------INICIO------------------------------- int main(){ menu(); return 0; } // -----------------------------------------FIM--------------------------------- void menu(){ int op; do{ system("cls"); printf("---------->>Sistema para bibliotecas<<----------\n \n \n "); printf("\n1 - Inserir um novo cadastro: "); printf("\n2 - Mostrar todos os cadastros: "); printf("\n0 - Encerrar \n\n"); printf("Opcao escolhida: "); scanf("%d",&op); getchar(); fflush(stdin); switch(op){ case 1: cadastrar(); break; case 2: mostrar(); break; default : system("cls"); printf("\n \n =========================================="); printf("\n\n\n\n\t Erro : opcao invalida!!!\n\n\n\n"); printf("\n \n ==========================================\n\n"); system("pause"); } getchar(); }while(op!=0); } void cadastrar(){ system("cls"); char nomeobra[20]; char nomeedit[20]; char nomeaut[20]; int codigo; int op; do{ codigo=0; codigo=codigo+1; printf("\nDigite o nome da obra: "); fgets(nomeobra,sizeof(nomeobra),stdin); printf("\nDigite o(s) nome(s) d(os) autor(es): "); fgets(nomeaut,sizeof(nomeaut),stdin); printf("\nDigite o nome da editora: "); fgets(nomeedit,sizeof(nomeedit),stdin); for(int i=0;i<Max_livros;i++){ if(livros.ativo==0) { strcpy(livros.nomeobra,nomeobra); strcpy(livros.nomeaut,nomeaut); strcpy(livros.nomeedit,nomeedit); livros.ativo=1; break; } } printf("\n1 - Continuar \n0 - Sair \n\n"); scanf("%d",&op); getchar(); fflush(stdin); }while(op!=0); } void mostrar(){ int codigo=0; system("cls"); printf("------------->>Lista de livros cadastrados<<-------------\n \n \n"); for(int i=0;i<Max_livros;i++){ if(livros.ativo==1){ codigo=codigo+1; printf("\nCodigo: %d\n",codigo); printf("\nNome da Obra: %s\n",livros.nomeobra); printf("\nNome do(s) autor(es): %s\n",livros.nomeaut); printf("\nNome da editora: %s\n",livros.nomeedit); printf("\n\n--------------------------------\n\n"); } } printf("\n\nPressione '0' para voltar ao menu..."); getchar(); fflush(stdin); }
  17. OBJETIVO: Ler strings armazenando em campos de uma struct, atendendo à necessidade/interesse de não ler o que resta no buffer na próxima entrada (lendo espaços e quantidade de chars pré definidos) O QUE PESQUISEI: Tudo que pude, tentei( E TESTEI!) várias formatações com scanf, li e entendi o que fui capaz (lendo em todo lugar) sobre sscanf, fgets, estruturas de repetição recebendo strings de char em char, função criada para o último método citado, setbuf, setvbuf, bufsize e muito mais acredite, vou até passar na biblioteca estadual amanhã para ver se tem algum livro de C e pesquisar mais. (ISTO SÓ PRA DEIXAR CLARO PRA COMUNIDADE que não sou preguiçoso visto que essa é minha primeira pergunta num fórum na história - todo e qualquer tipo de fórum - porque existe uma pressão muito grande sobre fazer perguntas num fórum de programação em especial) Até que achei um jeito sem ser o famigerado fflush, o rewind (stdin)... *Reafirmo! Estou ciente de getchar em estrutura de repetição ou fgets por exemplo, mas só estou aqui porque não me foi útil.* AFINAL qual o problema de usar a função rewind para o fluxo stdin? Claro, é mais usual para chamar ponteiro de arquivo em leitura, mas isso é motivo suficiente para ser ruim usar em stdin? Qual o problema real de se aplicar no fluxo stdin? Não é portável? Achei até uma doc da microsoft indicando para isto: https://docs.microsoft.com/pt-br/cpp/c-runtime-library/reference/rewind?view=vs-2019 em que há "...Para limpar o buffer de teclado, use rewind com o fluxo stdin, que está associado com o teclado por padrão...". Vi reprovação por meio de usuários de outros fóruns nos quais achei perguntas parecidas como esta mas não achei as explicações de como isto ser ruim muito convincentes (um pouco presunçoso ou dedutivo da minha parte por ser um mero iniciante). O que acham? Eu só tenho 3 meses que conheço a programação em geral. SITUAÇÃO ATUAL: Olha, já que isto é para um trabalho de ADS EAD em que a faculdade ensina com 'fflush stdin' sem problemas, e já que ainda não achei alternativa também totalmente resoluta e confiável, está assim com o fflush stdin GENTE DESCULPE QUALQUER INCONVENIENTE. #include <stdio.h> #include <stdlib.h> #include <locale.h> typedef struct cadastro{ char nLivro[31]; char nAutores[31]; char nEditora[31]; int cod; }livro; int main(){ setlocale (LC_ALL, ""); livro estante[4]; int op, i, j; i = 1; j = 1; do { printf ("\t> Menu <\n\n1 - > Efetua um novo cadastro\n\n2 - > Visualiza todos cadastros\n\n0 - > Sai do menu\n\n"); scanf ("%1d%*c", &op); fflush (stdin); switch (op){ case 1 :if (i < 6){ printf ("\t> Efetua um novo cadastro\n\n> Nome da obra: "); scanf ("%30[^\n]", estante[i-1].nLivro);//não é necessário 's' nesta ocasião. printf ("\n> Autor(es): "); fflush (stdin);//ou rewind(stdin). scanf ("%30[^\n]", estante[i-1].nAutores); fflush (stdin); printf ("\n> Editora: "); scanf ("%30[^\n]", estante[i-1].nEditora); fflush (stdin); printf ("\n\n\t>Cadastro bem sucedido!"); estante[i-1].cod = i; i++; }else { printf ("Cadastro lotado!"); }......(vergonha do código)
  18. Hudson Medeiros

    Formulário condicional

    Bom dia! To precisando criar um formulário condicional com base em um menu dropdown que tem no meu site. Ele puxa as informações de uma lista no código, e gostaria que ao selecionar uma opção específica abrisse novos campos de formulário e alguns sumissem. Alguém tem alguma ideia de como posso executar isso?
  19. Construir um algoritmo em C++ que preencha um matriz quadrada de tamanho 4 pelo usuário. Após o preenchimento pelo usuário, verifique na diagonal principal qual foi o maior valor digitado e exiba na tela o valor. Por fim, exiba na tela toda matriz em forma de matriz na tela.
  20. andreluizsgf

    Impressão de Árvore Binária.

    Boa noite, eu estou tentando implementar uma função que imprima uma árvore como ela deveria ser, com o pai acima e a direita do menor filho e acima e a esquerda do maior filho. Já tenho duas funcões que me permitem imprimir por nível, porém estou tentando adaptá-las para a impressão correta. Exemplo: árvore: 5,4,3,2,1; Impressão: 5 3 4 1 2 O código para o print é este: void ---ivel(node_t* raiz, int level) { if (raiz == NULL){ for(int i = 0 ; i < 3 ; i++){ printf("\t"); return;} } if (level == 1) { for (int i=0; i<altura(raiz); i++) printf("\t"); simpleprint(raiz); } else if (level > 1) { ---ivel(raiz->left, level-1); ---ivel(raiz->right, level-1); } } void printarordem(node_t *raiz) { int h = altura(raiz); int i; for (i=1; i<=h; i++) { printf("\t"); ---ivel(raiz, i); printf("\n"); } } Se alguém souber como resolver este ou sugerir outra implementação, fico super agradecido!
  21. vinicius.benedito98

    Dúvida com vetor em C++

    Faça um Programa em Linguagem C que receba o nome e a nota de 180 alunos de uma sala e armazene em vetor. Calcule e mostre: - A média da sala; - O nome do aluno com a maior nota; - O nome do aluno com a menor nota; - Os nomes dos alunos aprovados; O meu código é esse : #define N 180 int main() { int i, ind_maior, ind_menor; float nota[N], soma=0, media, min_aprov=7; char nome[N][50]; for (i=0; i printf("Informe o nome do %dº aluno: ", i+1); gets(nome); printf("Informe a nota do %dº aluno: ", i+1); scanf(" %d ", &nota); soma += nota; } media = soma / N; printf("\nMédia da sal: %.2f\n", media); ind_menor = ind_maior = 0; for (i=1; i if (nota < nota[ind_menor]) ind_menor = i; if (nota > nota[ind_maior]) ind_maior = i; } printf("Menor nota: %s com %.2f\n", nome[ind_menor], nota[ind_menor]); printf("Maior nota: %s com %.2f\n", nome[ind_maior], nota[ind_maior]); printf("Aprovados:"); for (i=0; i if (nota >= min_aprov) printf("\t%s com: %.2f\n", nome, nota); } return 0; } Porém quando vou executa-lo, o programa pede para inserir o nome e nota do aluno apenas uma vez, e fica por isso, ele não exibe os resultados, alguém pode me ajudar ?
  22. WizardTech

    Cliente/Servidor em C - Problemas

    Eu estou criando uma aplicação cliente/servidor em C no ubuntu. O propósito é bem simples, saber se vale mais a pena alugar ou vender um imóvel, o usuário digita o valor do aluguel, os meses que irá alugar e o valor que irá vender e o servidor faz as contas e devolve o resultado. Tudo está dentro de um do while para ficar infinito, no final o usuário digita CONTINUAR para testar outros valores e SAIR para encerrar a conexão. Mas está com um problema que não consigo identificar. A primeira vez que comparamos valores, o servidor retorna o resultado correto(alugar ou vender), porém a partir da segunda vez ao digitar CONTINUAR, ele sempre retorna resultados errados. Eu suspeito que esteja armazenando dados na variáveis erradas a partir da segunda vez, coloquei uns prints no meio do código para mostrar os valores e tem divergência.E também tentei zerar as variáveis no começo e usar vários bzero e fflush, mas sem resultado. Mas não tenho certeza de nada. Podem me ajudar? CÓDIGO DO CLIENTE: #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <stdio.h> #include <stdlib.h> #include <strings.h> #include <string.h>  int main () { struct sockaddr_in sock; int con, sockid,numbytes; char resposta[10]; char buf[100]; char aluguel[10]; char venda[10]; char meses[2]; sockid = socket(AF_INET, SOCK_STREAM, 0); bzero(&(sock),sizeof(sock)); sock.sin_family = AF_INET; sock.sin_port = htons(9012); inet_pton(AF_INET, "127.0.0.1",&sock.sin_addr); con=connect(sockid,(struct sockaddr*)&sock,sizeof(sock)); do{ if(con>=0) { printf("=====================================================\n"); printf("Descubra se vale a pena vender ou alugar seu imóvel\n"); printf("=====================================================\n"); printf("Digite por quanto voce quer alugar: \n"); scanf("%s", &aluguel); printf("=====================================================\n"); if(send(sockid,aluguel,strlen(aluguel),0)==-1) { printf("Erro ao enviar mensagem\n"); close(sockid); } printf("Digite por quantos meses ira alugar : \n"); scanf("%s", &meses); printf("=====================================================\n"); if(send(sockid,meses,strlen(meses),0)==-1) { printf("Erro ao enviar mensagem\n"); close(sockid); } printf("Digite por quanto quer vender: \n"); scanf("%s", &venda); printf("=====================================================\n"); if(send(sockid,venda,strlen(venda),0)==-1) { printf("Erro ao enviar mensagem \n"); close(sockid); } bzero(&buf,sizeof(buf)); if((numbytes=recv(sockid,buf,100,0)==-1)) { printf("Erro ao receber a mensagem\n"); } printf("Vale mais a pena: %s\n",buf); printf("Digite SAIR para sair ou CONTINUAR para continuar a comparar.\n"); scanf("%s",&resposta); fflush(stdin); if(send(sockid,resposta,strlen(resposta),0)==-1) { printf("Erro ao enviar mensagem\n"); close(sockid); } if(strcmp(resposta,"CONTINUAR")==0) { continue; } } }while(strcmp(resposta,"SAIR")!=0); close(sockid); } CÓDIGO DO SERVIDOR: #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <stdio.h> #include <stdlib.h> #include <strings.h> #include <string.h> int main () { int sockid; struct sockaddr_in servidor; int client,numbytes; float convertido; float convertido1; float convertido2; char passar[10]; char buf[100]; char buf1[100]; char buf2[100]; float resultado; char resposta[10];  sockid = socket(AF_INET, SOCK_STREAM,0); if(sockid==-1) { printf("Não foi possivel criar o socket"); exit(1); } servidor.sin_family= AF_INET; servidor.sin_addr.s_addr = htonl(INADDR_ANY); servidor.sin_port = htons(9012); if(bind(sockid,(struct sockaddr*)&servidor, sizeof(servidor))<0) { printf("Falhou ao associar a porta\n"); } listen(sockid, 3); int c, new_socket; while(1) { c = sizeof(struct sockaddr_in); new_socket = accept(sockid, (struct sockaddr *)&client,(socklen_t *)&c); if(new_socket <=0) { printf("Falhou ao aceitar o conector\n"); continue; } while(1){ printf("Conexão aceita\n"); fflush(stdin); resultado = 0; convertido = 0; convertido1 = 0; convertido2 = 0; bzero(&buf,sizeof(buf)); if((numbytes=recv(new_socket,buf,100,0)==-1)) { printf("Erro ao receber a mensagem\n"); } convertido = atof(buf); bzero(&buf1,sizeof(buf1)); if((numbytes=recv(new_socket,buf1,100,0)==-1)) { printf("Erro ao receber mensagem\n"); } convertido1 = atof(buf1); printf(buf1); bzero(&buf2,sizeof(buf2)); if((numbytes=recv(new_socket,buf2,100,0)==-1)) { printf("Erro ao receber mensagem\n"); } convertido2 = atof(buf2); printf(buf2);  resultado = convertido*convertido1; if(resultado>convertido2) { sprintf(passar, "Alugar"); } else { sprintf(passar,"Vender"); } if(send(new_socket,passar,strlen(passar),0)==-1) { printf("Erro ao enviar a mensagem\n"); close(new_socket); } bzero(&resposta,sizeof(resposta)); if((numbytes=recv(new_socket,resposta,strlen(resposta),0)==-1)) { printf("Erro ao receber a mensagem\n"); } fflush(stdin); if(strcmp(resposta,"SAIR")==0) {  close(new_socket); break; }  } }  }
  23. reberthkss

    Tecla ENTER

    Bom dia! Estou desenvolvendo meu primeiro jogo da velha, e estou encontrando um problema quando aperto a tecla ENTER. O que acontece é que quando aperto ENTER, o programa o reconhece como um comando de caracter e retorna um valor para quando digitam um caracter diferente de X e O. Abaixo fotos: Antes de apertar o ENTER: Após apertar o ENTER CÓDIGO:
  24. Gostaria de saber qual o problema com o meu código pois ao compilar e executar ele simplesmente abre o DOS e fecha sem realizar nenhuma tarefa #include <stdlib.h> #include <stdio.h> #include <locale.h> // aux1 = contador de coluna e aux2 = contador de linha int main () { setlocale(LC_ALL, "portuguese"); int m1, n1, m2, n2, matriz1[m1][n1], matriz2[m2][n2],matrizsoma[m1][n1],aux1,aux2,elemento,contadorlinha=0; printf("Entre com o número de linhas da 1ª matriz : "); scanf("%i",&m1); printf("Entre com o número de colunas da 1ª matriz : "); scanf("%i",&n1); printf("Entre com o número de linhas da 2ª matriz : "); scanf("%i",&m2); printf("Entre com o número de colunas da 2ª matriz : "); scanf("%i",&n2); if ((m1==m2) && (n1==n2)){ for (aux2 = 0;aux2<m1;aux2++){ for (aux1=0;aux1<n1;aux1++){ contadorlinha=aux1+1; printf("Matriz A:"); printf("Entre com os elementos um a um, separados por espaço da %iª linha: ",contadorlinha); scanf("%i",&elemento); matriz1[aux2][aux1]=elemento; } } for (aux2 = 0;aux2<m2;aux2++){ for (aux1=0;aux1<n2;aux1++){ contadorlinha=aux1+1; printf("Matriz B:"); printf("Entre com os elementos um a um, separados por espaço, da %iª linha: ",contadorlinha); scanf("%i",&elemento); matriz2[aux2][aux1]=elemento; } } for (aux2=0;aux2<m1;aux2++){ for(aux1=0;aux1<n1;aux1++){ matrizsoma[aux2][aux1]=matriz1[aux2][aux1]+matriz2[aux2][aux1]; } } printf("Matriz C = A + B:\n"); for (aux2=0;aux2<m1;aux2++){ for(aux1=0;aux1<n1;aux1++){ printf("%i",matrizsoma[aux2][aux1]); } printf("\n"); } } else{ printf("\nParâmetros das matrizes inválidos para a soma!\n"); printf("Ambas devem ter o mesmo número de linhas e colunas\n"); } system("pause"); return 0; }
  25. guiarodrigues1

    [Lista de exercicios] Ajuda ?!

    1 - Escreva um algoritmo que receba um número inteiro positivo. Fazer a multiplicação do número recebido iniciando de 1 até chegar ao número recebido. Parar o algoritmo quando o usuário digitar 0. 2 - Escrever um algoritmo que a quantidade do produto comprado e o preço de cada produto. Imprimir o valor de total da compra. Parar quando a quantidade digitada for igual a 0. 3 - Escrever um algoritmo que recebe a quantidade de créditos de uma disciplina e o valor de cada crédito. No final do algoritmo apresentar o valor de cada disciplina e o valor total do curso. Sair do algoritmo quando o usuário digitar 0. 4 - Faça um algoritmo que receba o ano de nascimento de 30 pessoas e o ano atual, calcule e mostre: a idade de cada pessoa; quantos anos cada pessoa terá em 2029. 5 - Faça um algoritmo que leia 22 números inteiros positivos maiores que zero. A cada número informado calcule e mostre: a. O número digitado; b. A metade do número digitado; c. O dobro do numero digitado; d. O número digitado ao cubo. 2 6 - Faça um algoritmo que leia o valor do salário de 35 funcionários e o valor do salário mínimo. Calcule e mostre a quantidade de salários mínimos que cada funcionário ganha. 7 - Ler um número inteiro N (só aceitar valores positivos. Caso o N não seja positivo deverá ser lido um novo valor para o N) e escrever os divisores de N. 8 - Ler um número inteiro N (só aceitar valores positivos. Caso o N não seja positivo deverá ser lido um novo valor para o N) e escrever se é ou não um número PRIMO. 9 - Faça um algoritmo que receba o salário de 17 empregados e o seu percentual de aumento. Calcule e mostre o valor do aumento e o novo salário. 10 - Faça um algoritmo que leia três notas de um número indeterminado de alunos. Calcule e mostre: e. A média de cada aluno; f. O total de alunos reprovados; g. O total de alunos aprovados h. A média da turma Obs.: Considere média >= 7 aprovados e caso contrário reprovados. Para calcular a média final descarte a nota mais baixa e duplique a nota mais alta. 11 - Os funcionários de uma loja de motos recebem um salário fixo mais 4% de comissão sobre as vendas. Faça um algoritmo que leia o número de funcionários, o salário fixo e o valor das vendas de cada funcionário. Calcule e mostre o valor da comissão, o salário final de cada funcionário e o valor total da folha de pagamento da loja. 12 - O custo ao consumidor de um carro novo é a soma do preço de fábrica com o percentual de lucro do distribuidor e dos impostos aplicados ao preço de fábrica. Faça um algoritmo que leia o código, o nome e o preço de fábrica de 8 veículos; o percentual de lucro do distribuidor e o percentual de impostos de cada veículo. Calcule e mostre: a. O valor correspondente ao lucro do distribuidor; b. O valor correspondente aos impostos; c. O preço final de cada veículo.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.