-
Posts
6.318 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
Tudo que devair1010 postou
-
@Nilwanderson Souza ali você precisa de dois loops para pegar os numeros para a matriz g , seria assim : for(i=0;i<3;i++){ for(j=0;j<3;j++){ cout<<"digite o numero desejado "; cin>>matriz_g[i][j]; } }
-
C Função que Ordenar 4 números em ordem crescente
devair1010 respondeu ao tópico de Jemima Fonseca Passos em C/C#/C++
@Jemima Fonseca Passos pelo que foi dito é a função que deve imprimir os números, e para isso você precisa colocar esses números em ordem cescente, então você pode usar o método bublesort , dentro da função coloque os números nas posições de um vetor e use estes loops aqui : for(i=0;i<4;i++){ for(j=i+1;j<4;j++){ if(vetor[i] > vetor[j]){ aux=vetor[i]; vetor[i]=vetor[j]; vetor[j]=aux; } } } com isso na saida desse loop você pode imprimir os números que estão nas posições do vetor em ordem crescente . -
@Mateus Toshi para isso você precisa usar vetores ou struct e no seu caso creio que o struct ficaria melhor , o struct você precisa coloca lá em cima antes da main, e seria assim : struct pessoa{ char nome[30]; int cpf ; char email[30]; char cidade[30]; } struct pessoas[100]; com isso na hora de cadastrar você usa um contador para indicar em qual posição do struct você está cadastrando, por exemplo cont que seria assim : printf("Digite O Nome "); gets(pessoas[cont].nome); e depois que você pegar os outros dados o cpf e o email e a cidade então você incrementa o cont para ele passar a apontar para a próxima posição do struct , assim : cont++; e quando você quiser listar os dados que já estiverem cadastrado você usa um for com o valor indo atá a posição de cont .
-
Outro Produtividade para programadores com atalhos do teclado
devair1010 respondeu ao tópico de Fernando Oliveira de Paiva em Programação - iniciantes
@Fernando Oliveira de Paiva creio que não tenha como configurar o teclado para essa finalidade que você quer, pois isso seria bem difícil de fazer, no entanto você pode usar uma IDE que tenha algumas facilidades, como o codeblocks que te auxilia na hora da digitação ,se você digita um chave { e digita a outra e tecla enter ela já vai para a posição certa lá no inicio da linha de baixo, e quando você está começando a digita um comando ele já aparece em um caixa em baixo na janela com o nome já completo então se você ver que é esse comando mesmo que você quer escrever basta clicar em enter e o comando será inserido na tela automaticamente e outros comandos como include e define o for o printf, switch, case, fprintf, todos esses são assim : então essa IDE apresenta essas facilidades . -
@Dafne Guimarães lá dentro da função ler_numero () coloque esta linha , que resolve . if(i == 0)maior= num[0]; e na hora do return coloque return maior . e lá emcima na hora de escrever coloque assim : printf("O maior numero foi: %d",n);
-
@Flavio Hexa como o @TYSQUARE89 ajeitou a função alterar, seu código está bom , precisa apenas de organizar melhor, então ele ficaria assim : #include <iostream> #include <conio.h> #include <string> #include <locale.h> using namespace std; string produtos[100]; float precos[100]; int indexProduto; int indexPreco; int posicao = 1; void Incluir () { int x; char y; do{ x=0; cout << "Digite o produto: "; cin >> produtos[indexProduto]; cout << "Digite o preço: "; cin>>precos[indexPreco]; cout << "Produto incluido na posicao: " << indexProduto << "\n"; indexProduto++; indexPreco++; cout << "Quer Incluir Outro Produto S/N "; cin>>y; if(y=='s')x=1; }while(x!=0); } void Alterar () { string busca; cout << "Digite o produto que deseja alterar "; cin >> busca; for (int i = 0; i < indexProduto; i++) { if (busca == produtos[i]) { cout << "Achei!" << produtos [i] << " : " << precos[i] << "\n"; cout<<"informe o novo nome do produto"; cin>>produtos[i]; cout<<"produto alterado com sucesso\n\n Tecle\n"; getch(); break; } } } void Consultar () { for (int i = 0; i < indexProduto; i++) { cout<<posicao<<" produto --> "<<produtos[i]<<" ---- valor --> " <<precos[i]<<"\n"; } cout<<"\n Tecle\n\n"; getch(); } int main() { setlocale(LC_ALL, ""); int opcao; do { cout << "\nEscolha uma opcao: \n"; cout << "0. sair\n"; cout << "1. Incluir\n"; cout << "2. Alterar\n"; cout << "3. Consultar\n"; cin >> opcao; switch (opcao) { case 0: cout<<"saindo...!\n"; break; case 1: Incluir (); break; case 2: Alterar (); break; case 3: Consultar (); break; default: cout << "Opcao invalida\n"; } } while (opcao != 0); }
-
C Calculo C alguem faz a descrição pra mim
devair1010 respondeu ao tópico de Guti Correa em C/C#/C++
@Guti Correa aqui no : a+=b%c++; o c é incrementado sim e então a recebe a mais o valor do resto da divisão de b=5 com c=3 que será 2 mais o valor de a e em seguida o c será incrementado . e aqui no : d=a-b-c--; o d recebe o valor de a menos o valor de b menos o valor de c e em seguida o c será decrementado . no : b*=++d; o d será incrementado primeiro e depois o b recebe o valor da multiplicação de b com d já incrementado pois o sinal ++ está antes da variável . já no : c=a+b/d; o c recebe o valor de b dividido por d e depois somado com o valor de a . pois a divisão tem precedência à soma, então a divisão será realizada antes da soma . -
VisualG Matriz programa Visualg 5x5
devair1010 respondeu ao tópico de lucianogrecco em Programação - iniciantes
@lucianogrecco seu algoritmo está bom , mas você está fazendo mais coisas do que foi pedido e ao mesmo tempo está deixando de fazer a multiplicação e colocar esse valor novo na matriz, coloquei esse código nos loops finais para organizar as colunas na hora de imprimir, se você não quiser usar pode escrever da forma normal , então seu código com algumas modificações ficaria assim : algoritmo "Exercicio 1" // Autor: Luciano Tadeu Grecco // Data : 17/11/2017 var vetA:vetor[1..5,1..5] de real vetB:vetor[1..5,1..5] de real i,j,x:inteiro a : caractere inicio // Seção de Comandos para i de 1 ate 5 faca para j de 1 ate 5 faca escreva("Digite os numeros: [",i, " + ", j, " ] ") leia(vetA[i,j]) fimpara fimpara escreval escreval("Digite Um Número Para Multiplicar") leia(x) escreval para i de 1 ate 5 faca vetA[i,2] := vetA[i,2]*x fimpara para i de 1 ate 5 faca para j de 1 ate 5 faca a := numpcarac(vetA[i,j]) se (vetA[i,j] >-1 ) e (vetA[i,j] < 10) ENTÃO a := " "+a senao se (vetA[i,j] >= 10) e (vetA[i,j] < 100) ENTÃO a := " "+a senao se (vetA[i,j] >= 100) e (vetA[i,j] < 1000) ENTÃO a := " "+a senao a := " "+a fimse fimse fimse se j < 5 ENTÃO a := a+" - " fimse escreva( a ) fimpara escreval("") fimpara fimalgoritmo -
@Henrique N Mendes sim, mas ali está x[ qualquer coisa ]. o nome é só na hora de comparar, e funciona sim teste aí .
-
@Henrique N Mendes você pode usar a posição zero do struct para auxiliar na hora de ordenar o struct, então você precisa deixar a posição zero sem nada e comece a colocar os dados a partir da posição 1, e se você quer ordenar pelo nome então seria assim : #include <stdio.h> #include <string.h> #define MAX 10 typedef struct { char nconta[8]; /*//Número da conta */ float saldo; /*//Saldo cliente */ char nome[61]; /*//Nome cliente */ char cpf[12]; /*//Cpf cliente */ char telefone[12]; /*//Telefone cliente*/ int ativo; }Usuario; Usuario x[100]; int cont=1; void cadastrar(){ char flag='s'; printf("Vamos Cadastrar Clientes\n"); do{ printf("Digite O Nome "); fflush(stdin); gets(x[cont].nome); fflush(stdin); printf("Digite O Numero Da Conta "); gets(x[cont].nconta); printf("Digite O CPF "); fflush(stdin); gets(x[cont].cpf); printf("Digite O Telefone "); fflush(stdin); gets(x[cont].telefone); printf("Digite O Saldo "); fflush(stdin); scanf("%f",&x[cont].saldo); x[cont].ativo=1; cont++; printf("Quer Cadsastrar Outro Cliente S/N "); fflush(stdin); scanf("%c",&flag); }while(flag=='s'); } void listarClientes(/*Usuario *x*/){ system("cls"); int i,j; printf("\n-------Lista de clientes--------\n\n"); for(i=1;i<cont;i++){ for(j=i+1;j<cont;j++){ if( strcoll(x[i].nome, x[j].nome) > 0){ x[0] = x[i]; x[i] = x[j]; x[j] = x[0]; } } } for(i=1;i<cont;i++){ printf("\n--------Cliente [%d]------------\n",i+1); printf("Número da Conta --> : %s\n",x[i].nconta ); printf("Nome -------------> : %s\n",x[i].nome ); printf("CPF --------------> : %s\n",x[i].cpf ); printf("Telefone ---------> : %s\n",x[i].telefone); printf("Saldo ------------> : %.2f\n",x[i].saldo ); printf("\n--------------------------------\n" ); } } int main(){ cadastrar(); listarClientes(); return 0; }
-
Teclado não funciona em monitor novo.
devair1010 respondeu ao tópico de Souzukechan em Teclados, mouses e controles para jogos
@Souzukechan seu tecado é sem fio , se for pode ser interferência causada pelo monitor, então nesse caso use teclado com fio . -
C++ Criar arquivo escrever nele e ao mesmo tempo Imprimr na tela
devair1010 respondeu ao tópico de Murillo Pereira da Silva em C/C#/C++
@Murillo Pereira da Silva veja se isso te ajuda, você vai precisar adaptar aí no seu código : #include <stdio.h> #include <string.h> #include <conio.h> #include <stdlib.h> #include <windows.h> #include <time.h> char data[9],hora[9],c[3]; int dia,mes,ano,d,w,bsx,y,k,c_mes; int v[12]={31,28,31,30,31,30,31,31,30,31,30,31}; int main(){ _strdate(data); _strtime(hora); c[0]=data[3]; c[1]=data[4]; dia=atoi(c); c[0]=data[0]; c[1]=data[1]; mes=atoi(c); c[0]=data[6]; c[1]=data[7]; ano=atoi(c); printf("Data De Inicio Da Locacao --> %s\n",data); printf("A Data Em Portugues --------> %d/%d/%d\n",dia,mes,ano); printf("Hora De Inicio Da Locacao --> %s\n",hora); printf("\nDigte A Quantidade De Dias De Locacao "); scanf("%d",&d); dia += d; c_mes = mes; bsx = ano-2016;/* porque 2016 foi bissexto */ while(bsx > 3){bsx -= 4;} while(dia > 28){ y = v[c_mes-1]; if(bsx == 4 && c_mes == 2){bsx = 0;y++;} if(y < dia){ dia -= y; mes++; c_mes++; if(c_mes > 12){ c_mes = 1; bsx++;/*passou um ano*/ } } else break; } if(mes > 12){ while(mes > 12){ mes -= 12; ano++; } } printf("\nA Data De Devolucao eh -----> %d/%d/%d\n",dia,mes,ano); return 0; } -
VisualG como criar um calculo que possa ser usado em uma selecao
devair1010 respondeu ao tópico de mosiah santos em Programação - iniciantes
@mosiah santos não entendi o que você está precisando, se você quiser calcular o valor do desconto você pode usar a regra de três . por exemplo : desconto de 10 porcento : desconto = total*10 ---------- 100 que no código ficaria assim : desconto := total*10/100 -
C Calculo C alguem faz a descrição pra mim
devair1010 respondeu ao tópico de Guti Correa em C/C#/C++
@Guti Correa não podemos dar respostas de questões pois é contra as regras do fórum , mas você pode testar no codeblocks e ver o resultado, testei aqui e funcionou bem . -
C Calculo C alguem faz a descrição pra mim
devair1010 respondeu ao tópico de Guti Correa em C/C#/C++
@Guti Correa esse código do jeito que está não funciona pois ele apresenta erro de syntaxe no incremento de um número e isso só funciona com variáveis. então não tem como saber o resultado, se não tivesse o ++ seria 10 . -
VisualG Tecla para encerrar o algoritmo
devair1010 respondeu ao tópico de Thiago Biagioni em Programação - iniciantes
@Thiago Biagioni para o programa terminar quando digitar zero você coloca um se que verifica se for diferente de zero ele continua e senão ele termina exibindo as mensagens , então substitui o para por enquanto e coloquei esse se que verifica, então seu código com algumas modificações ficou assim : Algoritmo "Dep. de Transito" tipo transito = registro nascimento: inteiro sexo : caractere codigo : inteiro fimregistro Var motorista : vetor [1..3] de transito Faixa1,Faixa2,Mulher,Homem,Itajuba, Outra, Totalcodigo: Inteiro Pum, Pdois, Ptres, Pquatro, Pcinco, Pseis : real x,i : inteiro Inicio Escreval("DEPARTAMENTO DE TRÂNSITO DE ITAJUBÁ-MG") Escreval ("Cadastro dos Motoristas") enquanto x < 3 faca x := x+1 escreva("Ano de nascimento ou zero para Terminar : ") leia(motorista[x].nascimento) se motorista[x].nascimento <> 0 ENTÃO //ate (motorista[x].nascimento = 0) ou (motorista[x].nascimento <=1999) Repita escreva("Sexo (M p/ Homem e F p/ Mulher): ") leia(motorista[x].sexo) ate (motorista[x].sexo = "M") ou (motorista[x].sexo = "F") Repita escreva("Código da cidade (0 ou 1): ") leia(motorista[x].codigo) ate (motorista[x].codigo = 1) ou (motorista[x].codigo = 0) escreval(" ") senao x := 4 fimse fimenquanto // Verificando as faixas de idades Para x de 1 ate 3 Faca Se motorista[x].nascimento <= 1995 então Faixa1 <- Faixa1 + 1 Fimse Se (motorista[x].nascimento > 1995) e (motorista[x].nascimento <= 1999) ENTÃO Faixa2 <- Faixa2 + 1 Fimse Se motorista[x].sexo = "F" ENTÃO Mulher <- Mulher + 1 Fimse Se motorista[x].sexo = "M" ENTÃO Homem <- Homem + 1 Fimse Se motorista[x].codigo = 1 ENTÃO Itajuba <- Itajuba + 1 Fimse Se motorista[x].codigo = 0 ENTÃO Outra <- Outra + 1 Fimse Totalcodigo <- Itajuba + Outra Pum <- (Faixa1*100)/Totalcodigo Pdois <- (Faixa2*100)/Totalcodigo Ptres <- (Mulher*100)/Totalcodigo Pquatro <- (Homem*100)/Totalcodigo Pcinco <- (Itajuba*100)/Totalcodigo Pseis <- (Outra*100)/Totalcodigo Fimpara // MOSTRA NA TELA LIMPATELA Escreval("Motoristas maiores de 25 anos: ", Pum:5:2, " %") Escreval("Motoristas entre 18 e 25 anos: ", Pdois:5:2, " %") Escreval("Motoristas Mulheres: ", Ptres:5:2, " %") //Escreval("Motoristas Homens: ", Pquatro:5:2, " %") //Se caso necessitasse da porcentagem de homens. //Escreval("Motoristas de Itajuba: ", Pcinco:5:2, " %") //Se caso necessitasse da porcentagem de itajuba. Escreval("Motoristas com registro fora de Itajubá: ", Pseis:5:2, " %") Fimalgoritmo -
@mateus costa r esse código que postei, testei aqui e funcionou bem , não acessou com senha ou login errado não . copie ele e teste novamente .
-
C jogo cobrinha em linguagem c
devair1010 respondeu ao tópico de Luiz André Nunes da Silva em C/C#/C++
@Luiz André Nunes da Silva seu código ficou bom , desenhou as bordas do jeito certo, mas para mover a cobrinha será mais fácil se você usar um comando para posicionar os pedaços da cobrinha na tela, e no c precisa criar uma função para isso, então você pode usar essa função aqui : int i,player[20][2]; void gotoxy(int x,int y){ COORD c; c.X = x; c.Y = y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c); } coloque ela lá no início antes da main, e no código dentro da main coloque assim : for(i=0;i<10;i++){/* coloca a posiçao da lacraia no vetor */ player[i][0]=i+5; player[i][1]=10; } for(i=0;i<10;i++){ /* aqui desenha a lacraia na tela */ gotoxy(player[i][0],player[i][1]); printf("%c",42); } gotoxy(player[9][0],player[9][1]); printf("O"); o gotoxy posiciona o cursor para imprimir na posição X = coluna e Y = Linha o primeiro número dentro dos parenteses é a coluna e o segundo número é a linha, e para movimentar a cobrinha precisar criar uma função que faça isso detectando qual tecla foi pressionada e para isso você pode usar a função kbhit () e getch ( ). o valor das teclas referentes as setas do teclado são : codigo da tecla | tecla do teclado ----------------------------------------------- 77 = | seta direita 80 = | seta para baixo 75 = | seta para esquerda 72 = | seta para cima então seu código com modificações ficaria assim : /* instruções - controle a lacraia com as setas do teclado - pegue a maçã para ganhar 3 pontos cada - se demorar muito a maçã vai para outro lugar - tecle ESC para parar */ #include <stdio.h> #include <conio.h> #include <time.h> #include <windows.h> void gotoxy(int x,int y){ COORD c; c.X = x; c.Y = y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c); } int i,a,b,c,player[20][2],direcao,mac; int h,g,pts,tempo; int som(int f){ Beep(f,150);/* primeiro a frquência depois o tempo de duração do som */ return 0; } void desenha_lacraia(){ a=player[0][0]; /*pega a posião do rabo da lacraia*/ b=player[0][1]; /*pega a posião do rabo da lacraia*/ for(i=0;i<20;i++){ /* todos os vinte pedaços da lacraia */ gotoxy(player[i][0],player[i][1]);/* coloca o cursor na posição */ printf("%c",42); /* coloca cada um dos pedaço da lacraia */ } gotoxy(player[19][0],player[19][1]);/* coloca o cursor na posição da cabeça da lacraia */ printf("O"); /* imprime a cabeça da lacraia */ gotoxy(a,b); /* coloca o cursor na posição do rabo da lacraia */ printf(" "); /* apaga o último caractere da lacraia que é o rabo que tinha ficado para tras */ gotoxy(59,2); /*coloca o cursor na posição de imprimir os pontos */ printf(" ");/* apaga o que estiver escrito */ gotoxy(59,2); /* coloca o cursor na posição de imprimir os pontos */ printf("Pontos -%c %d",16,pts);/* imprime os pontos */ tempo++; /* soma o tempo */ if(tempo > 80){ /* tempo que a maçã pode ficar no mesmo lugar */ mac=0; /* para poder colocar outra maçã*/ gotoxy(h,g);/* coloca o cursor na posição da maçã */ printf(" ");/* remove a maçã */ som(1500); /* som maçã mudou de lugar */ } } void atualiza_lacraia(){ for(i=0;i<19;i++){ /* a lacraia tem vinte pedaços */ player[i][0] = player[i+1][0];/* puxa os pedaços da lcraia para tras */ player[i][1] = player[i+1][1];/* puxa os pedaços da lcraia para tras */ } } int move_lacraia(){ for(i=0;i<20;i++){ c=0; if(kbhit()) c=getch(); if(c==27) return 0; if(c==77){ /* seta p/direita */ if(direcao==2)som(500); /* tentou voltar para tras */ else direcao=0; } if(c==80){ /* seta p/baixo */ if(direcao==3)som(500); /* tentou voltar para tras */ else direcao=1; } if(c==75){ /* seta p/esquerda */ if(direcao==0)som(500); /* tentou voltar para tras */ else direcao=2; } if(c==72){ /* seta p/cima */ if(direcao==1)som(500); /* tentou voltar para tras */ else direcao=3; } } switch(direcao){ case 0: if(player[19][0] < 45){ /* coluna da posição da cabeça da lacraia */ atualiza_lacraia(); /* puxa os pedaços da lacraia para tras */ player[19][0]++; /* move a cabeça da lacraia para direita */ }else som(900); /* som bateu nas bordas */ break; case 1: if(player[19][1] < 23){ /* linha da posição da cabeça da lacraia */ atualiza_lacraia(); /* puxa os pedaços da lacraia para tras */ player[19][1]++; /* move a cabeça da lacraia para baixo */ }else som(900); /* som bateu nas bordas */ break; case 2: if(player[19][0] > 1){ /* coluna da posição da cabeça da lacraia */ atualiza_lacraia(); /* puxa os pedaços da lacraia para tras */ player[19][0]--; /* move a cabeça da lacraia para esquerda */ }else som(900); /* som bateu nas bordas */ break; case 3: if(player[19][1] > 1){ /* linha da posição da cabeça da lacraia */ atualiza_lacraia(); /* puxa os pedaços da lacraia para tras */ player[19][1]--; /* move a cabeça da lacraia para cima */ }else som(900); /* som bateu nas bordas */ break; } if(player[19][0]==h&&player[19][1]==g){/* se lacraia comeu a maçã */ mac=0; pts+=3; som(2200); /* som comu maçã */ } return 0; } int coloca_maca(){ int t=0,u=0; if(mac==0)tempo=0; if(mac==1)return 0; /*se já tem maçã não coloca outra*/ do{ h=rand()%45+1; /*escolhe coluna da maçã*/ g=rand()%22+1; /*escolhe linh da maçã*/ for(i=0;i<20;i++){ if(h==player[i][0]&&g==player[i][1])/*se algum pedaço da lacraia for = a posição da maçã repete*/ u=1; /*para repetir caso a maçã esteja sobre a lacraia */ } t++; if(t > 1000){ /* se o sistema demorar muito para escolher a posição da maçã */ u=0; g=1; h=1; } }while(u!=0); gotoxy(h,g); /*coluna e linha da maçã*/ printf("%c",3); /* coloca a maçã no lugar */ mac=1; /* informa que já tem uma maçã na tela */ return 0; } int main (){ srand(time(NULL)) ; for(i=0;i<47;i++) { /* desenha as bordas */ if(i<24) { gotoxy(0,i) ; /* primeira coluna da tela */ printf("%c",176); } if(i<24) { gotoxy(46,i) ; printf("%c",176);/* 219 caractere branco */ } gotoxy(i,0) ; /* primeira linha da tela */ printf("%c",176) ; gotoxy(i,24) ; /* ultima linha da tela */ printf("%c",176) ; } for(i=0;i<20;i++) { /* coloca a posiçao da lacraia no vetor */ player[i][0]=i+5 ; /* coloca as colunas */ player[i][1]=10 ; /* coloca as linhas */ } do{ desenha_lacraia(); move_lacraia( ); coloca_maca( ); Sleep(100 ); /* velocidade da lacraia */ }while(c != 27); return 0; } -
@Marcos Paulo feitosa para pegar a frase toda precisa usar o comando gets() pois o scanf só pega a primeira palavra, então na hora de buscar pela palavra você teria que digitar a frase toda, para que seja igual, então no lugar de : printf("Digite o nome do produto pode ser letras ou numeros "); scanf("%s",cad[quantp].nome); coloque printf("Digite o nome do produto pode ser letras ou numeros "); gets(cad[quantp].nome);
-
@Igor Vargas isso é porque você colocou um caractere & no lugar de % ali dentro da main, na linha que pega a idade : for(x=0; x<3; x++){ printf("Digite seu nome:\n"); gets(pessoas[x].nome); printf("Digite sua idade:\n"); scanf("&d",&pessoas[x].idade);/* <----- nessa linha aqui */ printf("Digite seu sexo 1 M e 0 F:\n "); gets(pessoas[x].sexo); coloque assim : scanf("%d",&pessoas[x].idade);
-
@Marcos Paulo feitosa é o que o @Simon Viegas disse, esse sinal de exclamação é o operador not da linguagem c/c++ ele inverte o resultado, então como precisa ver se é letra ou numero e o isdigit será verdadeiro se for número , então essa parte do código significa, " se algum caractere dessa string não for número " , e esse isdigit verifica um caractere de cada vez, então coloquei esse loop de acordo com o tamanho " strlen " da variável que pegou os caracteres , com isso ele verifica caractere por caractere da string e se algum desses caracteres não for número de zero até 9 ele imprime a mensagem .
-
@linkiano2015 teste aqui e está funcionando bem .
-
C da erro ao calcular o desconto do valor total com corrigir ?
devair1010 respondeu ao tópico de mosiah santos em C/C#/C++
@mosiah santos esse final seria assim : if (produto > 200 && produto < 1000){ printf("O desconto para ser aplicado será de 5%") ; /* desconto /= 100; desconto *= valor; */ valor =produto*5/100; } else if(produto > 1000){ /* desconto /= 100; desconto *= valor; */ valor = produto*10/100; } printf("o desconto sera de %.2f\n",valor); printf("O Total Com Desconto eh %.2f\n",produto-valor); system("pause"); break; } } return (0); -
C da erro ao calcular o desconto do valor total com corrigir ?
devair1010 respondeu ao tópico de mosiah santos em C/C#/C++
@mosiah santos você pode calcular o valor do desconto usando a regra de três assim : produto 100 valor 10 -------------------------------- valor=produto x 10 --------------------- 100 com isso seu código seria assim : // categoria de motor case 1: system ("cls"); printf ("\t Categoria Motor.\n"); printf(" 1 - Alto consumo de oleo lubrificante\n"); printf(" 2 - Excesso de fumaca sendo expelida pelo escapamento\n"); printf(" 3 - Baixa potencia\n"); printf("selecione uma opcao\n"); scanf("%i",&sn); /*scanf("%f",&valor);*/ /* digamos que terá um desconto de 10 por cento */ if (sn == 1) { printf("Em quantas horas voce ira resolver o problema ?"); printf("o valor por hora щ R$ 100,00 "); scanf("%f",&val); produto = 100*val; valor=10*produto/100; printf("o valor da mao de obra e : R$ %.2f \n\n",produto); printf("desconto de 10 porcento, o valor do desconto é: R$ %.2f\n",valor); printf("O Total Com Desconto é: R$ %.2f\n",produto-valor); } else if (sn == 2) -
@Marcos Paulo feitosa seu código está bom , mas esse comando que envia um struct para a função não funciona assim , pois você pode mandar um struct para uma função e chegando nessa função você pode trabalhar com os dados desse struct porém não se pode retornar um struct, e também não há necessidade de uma função que retorna um struct, seria mais fácil com apenas um struct que seja global, e para ver se é número ou letra você pode usar o comando isdigit ( ) , coloquei lá na função cadastro, então seu código com algumas modificações ficaria assim : #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> #include <windows.h> #include<ctype.h> #include <time.h> #define MAX 100 int cont; struct cadastra{ int codigop,codigof,quantidade; char nome[30]; char fornecedor[30]; float preco; }; struct cadastra cad[MAX]; int quantp=0; void cadastraProduto(struct cadastra produto){ cad[quantp] = produto; quantp++; } struct cadastra leDados(){ char xx,qp[10]; int w,i,c; do{ xx='n'; fflush(stdin); printf("Digite o nome do produto pode ser letras ou numeros "); scanf("%s",cad[quantp].nome); cad[quantp].codigop = 1 + rand()%100; printf("Codigo do produto %d\n",cad[quantp].codigop); do{ c=0;w=0; fflush(stdin); printf("Quantide de produtos para o estoque\n"); scanf("%s",&qp); for(i=0;i<strlen(qp);i++){ if( ! isdigit(qp[i])){ c=1; break; } } if(c==0) cad[quantp].quantidade = atoi(qp); else { printf("Isso Nao eh Numero, Digite Certo.\n"); w=1; } }while( w ); fflush(stdin); printf("Nome do fornecedor pode ser letras ou numeros "); scanf("%s",cad[quantp].fornecedor); cad[quantp].codigof = 1 + rand()%100; printf("Codigo do fornecedor %s eh %d\n",cad[quantp].fornecedor, cad[quantp].codigof); w=1; do{ w=0;c=0; fflush(stdin); printf("Digite o preco do produto\n"); scanf("%s",&qp); for(i=0;i<strlen(qp);i++){ if( ! isdigit(qp[i])){ c=1; break; } } if(c==0) cad[quantp].preco = atoi(qp); else { printf("Isso Nao eh Numero, Digite Certo.\n"); w=1; } }while( w ); fflush(stdin); quantp++; printf("Quer Cadastrar Outro Produto S/N e nao precisa de enter\n\n"); xx=getch(); }while(xx=='s'); system("CLS"); } void buscar(){ int i,opica; char nome[30]; do{ printf("MENU DE BUSCA\n"); printf("1- Mostrar lista de produtos\n"); printf("2- Buscar pelo nome produto ou pelo nome do fornecedor\n");; printf("3- Sair do menu busca\n"); printf("Digite o numero da opicao desejada \n"); scanf("%d",&opica); system("CLS"); switch(opica){ case 1: printf("Lista de produtos cadastrados\n"); for(i=0;i<quantp;i++){ printf("Produto %d \n",i+1); printf("+++++++++++++++++++++++\n"); printf("Nome do produto: %s\n",cad[i].nome); printf("Codigo do produto: %d\n",cad[i].codigop); printf("Quantidade no estoque: %d\n",cad[i].quantidade); printf("Nome do fornecedor: %s\n",cad[i].fornecedor); printf("Codigo do fornecedor: %d\n",cad[i].codigof); printf("Preço do produto: %.2f\n",cad[i].preco); printf("+++++++++++++++++++++++\n"); } break; case 2: printf("Digite o nome do produto ou nome do fornecedor\n"); scanf("%s",&nome); for(i=0;i<quantp;i++){ if((strcmp (nome, cad[i].nome) == 0) || strcmp (nome, cad[i].fornecedor) == 0) { printf("+++++++++++++++++++++++\n"); printf("Nome do produto: %s\n",cad[i].nome); printf("Codigo do produto: %d\n",cad[i].codigop); printf("Quantidade no estoque: %d\n",cad[i].quantidade); printf("Nome do fornecedor: %s\n",cad[i].fornecedor); printf("Codigo do fornecedor: %d\n",cad[i].codigof); printf("Preço do produto: %.2f\n",cad[i].preco); printf("+++++++++++++++++++++++\n"); } } break; case 3: break; } }while(opica!=3); system("CLS"); } void alterar (){ int i; char nome[30]; fflush(stdin); printf("Digite o nome do produto que deseja alterar: "); scanf("%s",&nome); for(i=0;i<quantp;i++){ if(strcmp (nome, cad[i].nome) == 0){ fflush(stdin); printf("Digite o nome do produto\n"); scanf("%s",&cad[i].nome); cad[i].codigop = 1 + rand()%10; printf("Codigo do produto %d\n",cad[i].codigop); fflush(stdin); printf("Quantide de produtos para o estoque\n"); scanf("%d",&cad[i].quantidade); fflush(stdin); printf("Nome do fornecedor\n"); scanf("%s",&cad[i].fornecedor); cad[i].codigof = 1 + rand()%10; printf("Codigo do fornecedor %s eh %d\n",cad[i].fornecedor, cad[i].codigof); fflush(stdin); printf("Digite o preço do produto\n"); scanf("%f",&cad[i].preco); fflush(stdin); } } system("CLS"); } void remover () { // Função remover int i,j,cont=0; int codigo_busc; printf("veja numero do produto que você deseja remover\n"); buscar(); // Chama a função listar para que seja visto qual codigo relacionado ao produto printf("Informe o Codigo do Produto que se Deseja Excluir: "); // Pede o codigo para busca scanf("%i",&codigo_busc); for(i = 0 ; i < quantp ; i++){ if (cad[i].codigop == codigo_busc) { // Compara o codigo relacionado e exclui for(j=i;j<quantp;j++){ cad[j] = cad[j+1]; // Realoca a Memória } quantp--; // decrementa o indice do vetor para que ocupe o cadastro removido cont++; break; } } if(cont>0){ printf ("\n\nPRODUTO EXCLUIDO COM SUCESSO !"); printf ("\nPressione ENTER Para Continuar !"); setbuf(stdin,NULL); getchar (); system ("cls"); }else { printf("Esse numero de codigo nao existe\n"); } } int main (){ int opicao; srand(time (NULL)); struct cadastra novoProduto; do{ printf("MENU DE OPICAO\n"); printf("1 - Cadastrar\n"); printf("2 - Buscar\n"); printf("3 - Alterar\n"); printf("4 - Remover\n"); printf("5 - Finalizar\n"); printf("Digite o numero da opicao desejada \n"); scanf("%d",&opicao); system("CLS"); switch(opicao){ case 1: novoProduto=leDados(); break; case 2: buscar(); break; case 3: alterar(); break; case 4: remover(); break; case 5: printf("Obrigado!\n"); break; default: printf("Opcao invalida!\nTente novamente:\n"); break; } }while(opicao!=5); system("PAUSE"); return 0; }
Sobre o Clube do Hardware
No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais
Direitos autorais
Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais