-
Total de itens
884 -
Registro em
-
Última visita
Tudo que vangodp postou
-
Dúvida em uso de Struct em C, usando mais de uma struct
pergunta respondeu ao adrianoasg de vangodp em C, C++
depois de construir a lista de produtos você deve perguntar ao usuário que quer comprar e enviar ao carro. não tem misterio -
Se explicar um pouco o que quer fazer que não somos videntes talvez seja possível lhe ajudar.
-
Como remover elementos de um vetor em C?
pergunta respondeu ao Bruno Kaike de vangodp em Grupo de Estudos
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <locale.h> int main() { setlocale(LC_ALL,"portuguese-brazilian"); char nome[5][50]={ {"Amanda"}, {"Bruno"}, {"Caio"}, {"David"}, {"Emily"} }; char buscado[50]; printf("Digite o nome da pessoa a ser excluida: "); scanf("%s", buscado); int i=0; while( i<5 ) { if( !strcmp( nome[i], buscado ) ){ printf("Encontrado!\n\n"); memset (nome[i],'\0',50); break; }else if( i == 4 ){ printf("Não está na lista\n\n"); } i++; } for (i=0; i<5; i++) { printf("%s\n", nome[i]); } } -
1º a função exp está esperando uma direção(ponteiro) você deve passar uma direção: exp(&x). 2º exp não retorna nada(void), não pode ser usada como parâmetro em printf, nesse caso você tem 2 opções. -A primeira opção é você tirar essa função dos parâmetros do printf e colocar x no seu lugar, a função exp ficaria entre o scanf e o printf, ou seja antes de ser chamada em printf. -A segunda opção seria você declarar a função como int e retornar *p. 3ºO compilador pode indicar que exp já existe e que da conflito com o tipo de retorno da exp original, mude o nome dessa função para outra coisa, expo, exp2, _exp, coxinha, mortadela ou o que te der vontade por exemplo. >_<
-
Isso é uma pergunta muito generalizada, e por tanto muito difícil de responder. Seria possível explicar-se melhor? Com algum suposto caso se for possível.
-
#include <iostream> #include <locale> using namespace std; int main(void){ setlocale(LC_ALL, "portuguese-brazilian"); float sal, q1, q2, q3; q1 = 0; q2 = 0; q3 = 0; bool sair = false; do { cout << "Informe os salário:"; cin >> sal; if ( sal == (float)0) { sair = true; } else if ( sal > 1500 ) { q1 = q1 + 1; } else if ( sal < 150 ) { q2 = q2 + 1; } else { q3 = q3 + 1; } } while ( sair != true ); cout << "salários superiores a R$ 1.500,00: " << q1 << endl; cout << "salários inferiores a R$ 150,00: " << q2 << endl; cout << "salários intermediários: " << q3 << endl; } Falha sua lógica. você não explicou o que quer assim que se não tiver correto sinto muito. Ao parecer você quer que o usuário entre com um X numero de salários para saber quantos são maior que 1500 quantos são menor a 150 e quantos estão entre esses dois valores. Quando for decidir se necesitas a if ou if/else if primeiro você deve se auto perguntar se o programa tem mais de uma resposta ou somente deveria ter mais respostas. Me explico... você quer saber se um salário é maior que 1500 e menor que 150 e ainda quer saber si sal é igual a zero? Ou você só quer saber se um salário é maior que 1500, ou saber se um salário é menor que 150 ou se o salário é diferente de 0? Nesse ultimo caso você deve usar if-if else. No primeiro caso você deve usar if. Por quê? O if else só pode haver uma das respostas, ao momento que o programa encontrar a resposta correta ele não vai avaliar as outras, e como se trata de averiguar uma das coisas e não todas essa alternativa é a melhor, porque um salário só pode ser uma coisa e não muitas. E tem mais... se o usuário escolher zero para sair isso vai contar como menor que 150, pois 0 obviamente é menor que 150. Então para esse caso acho que existem melhores mecanismos para deter isso, como o que você pode ver no código. O programa também deve saber primeiro se o salário é ==0 porque si não vai cair antes no <150 dai não vai sair entendeu? Para esse caso só pode haver uma resposta, está claro que a melhor alternativa é if/else if e não ifs separados.
-
não! Tem um botão que serve para por o código que tem o tal aspecto <>. Praticamente em todos os fóruns.
-
você deveria usar strftime para obter uma string livre de erros: /* strftime example */ #include <stdio.h> /* puts */ #include <locale.h> /*setlocale*/ #include <time.h> /* time_t, struct tm, time, localtime, strftime */ int main () { time_t rawtime; struct tm * timeinfo; char buffer [80]; time ( &rawtime ); timeinfo = localtime ( &rawtime ); setlocale(LC_ALL, "portuguese-brazilian"); // Importante por isso se não em vez de quarta-feira sai Wednesday(ingles) >_< strftime ( buffer, 80, "Agora é %I:%M%p %A", timeinfo ); //Agora buffer possui 09:49 quarta-feira, você pode concatenar a outras strings usando por exemplo strcat puts ( buffer ); return 0; }
-
Ok.. perdão. Não sei se falei asctime te faz certos calculos para lhe mostrar os dados da struct tm corretamente. Se for um momento para a pagina de referencia sobre struct tm, poderá ver que lá a referencia sobre o dado membro tm_year dice algo tal como "years since 1900" que traduzido quer dizer anos desde 1900. O que quer dizer isso? Quer dizer que vai imprimir quantos anos passou desde 1900, que é mais ou menos 2016-1900=116. Como você estamos fazendo a mão isso devemos ter cuidado pois pode sair algo mal. Para corregir isso é questão de somar 1900 a timeinfo->tm_year ficando a linha do printf assim: printf("Dia: %d/%d/%d", timeinfo->tm_mday, timeinfo->tm_mon, timeinfo->tm_year+1900 ); Tente ler a referencia vei. Tudo o que você precisa saber está lá.
-
No windows a Sleep vai com S maiúscula y deveria incluir windows.h; e se não lembro mal, recebia um valor DWORD como parametros. No linux era com s minúscula https://linux.die.net/man/3/sleep se deveria incluir <unistd.h>; e se deveria usar um inteiro sem sinal como parâmetro.
-
isso não é um forun de pyton.
-
porque você não usa o tag <> para postar código vei? Isso é regra em quase todos os fóruns de programação. ¬_¬
-
não será sal == 0?
-
use a função Sleep(2000); Mil é igual a 1 segundo, 2000 == 2 segundos. Capiche? você precisa incluir windows.h
-
primeiro você precisa saber o que é o Era Unix porque tudo o que é relacionado com datas, cronometro etc provem do Era unix. basicamente é um "checkpoint" cravado em uma data. Se você por exemplo medir o tempo desde ontem a meia noite, mas o fizer em segundos depois de 24 horas você vai obter um X valor que é o numero em segundos que passou de ontem para hoje. O valor de que contem X em segundos que foi medido desde ontem a meia noite a hoje a meia noite é de 86400, é dizer, ontem a meia noite o tempo era X = 0, e depois de ir contando cada segundo que passou, hoje a meia noite X = 86400, esse 86400 é o tempo que passou em segundos. Se eu pegar e dividir 86400 por 60 obtenho o numero de minutos que passou, e se eu voltar a dividir novamente por 60 vou obter a quantidade de horas. Posso saber que se passaram 24 horas na realidade passou 1 dia. Isso é tudo teoria, não é nada importante ao nosso caso ainda mas essa teoria se aplica ao seu caso. O tempo inicial que usamos para medir foi ontem a meia noite, o problema é que cada pessoa pode querer medir desde uma data especial e não daria certo querer medir o tempo, por isso existe o Era Unix que nada mais é que um tempo que foi tomado como referencia no tempo. Sabemos que dia era, sabemos que hora foi, ano, minutos, resumindo tudo. Então se você quer trabalhar com datas você precisa saber o que é o Era Unix. Por que devemos saber o que é o era unix? Imagina que hoje é segunda feira ao meio dia, agora imagina 3 dias depois. Que teríamos que fazer para saber que dia seria 3 dias depois? Simples... teríamos que somar 3 vezes 86400 segundos. Fácil né? Tá... talvez não seja tanto kkk. vamos com exemplo. Em c/c++ temos uma função chamada time que aceita um parâmetro por referencia do tipo time_t que nada mais será que um define de um inteiro sem signo super bombado tipo long long ou sei lá e nem me importa muito(buscar você kkk). O caso é que a função time guarda em segundos o tempo que passou desde o Era Unix até esse exato momento na variável time_t que aplicando as divisões que indiquei anteriormente dizem a quantidade de minutos que passou. E como vimos podemos saber tudo... podemos saber quantos minutos passou, ou dias, ou meses ou anos décadas etc, aplicando um algoritmo apropriado de divisão. Por sorte não precisamos fazer isso, pois C/C++ já possuem funções para isso. C por exemplo proporciona uma estrutura chamada struct tm que guarda os o resultado dessas divises que proporciona outra função chamada localtime . Resumindo a função time pega e guarda em uma variável do tipo time_t os segundos que passaram desde Era Unix(Buscar informação para saber qual é), dai a função localtime pega essa variável que possui os segundos e transforma em dados(horas, segundos, anos tec), esses dados é a hora exata do sistema, foi conseguida aplicando um complexo algoritmo de divisões dos segundos desde Era Unix até o exato momento que foi invocado a função time. Em todos esses links que estou passando existe exemplos porem vou lhe proporcionar um com tudo. #include<stdio.h> #include <time.h> int main(){ time_t segundos; // vai guradar os segundos que passou desde Era Unix. O tipo é time_t é um define de long int time(&segundos); //medimos o tempo que passou desde Era unix e guardamos em 'segundos'. printf("Passaram %ld segundos desde o dia 1 de janeiro de 1970 a 00:00:00 horas(Era Unix)\n\n", segundos); //Podemos ver quantos segundos passaram. struct tm * timeinfo; //Ponteiro que vai apontar aos dados tipo struct tm. Para ver o que vai guardar essa estrutura olhe aqui-> http://www.cplusplus.com/reference/ctime/tm/ timeinfo = localtime (&segundos); // Local time pega os segundos e aplica um algoritmo de divisão peculiar tendo em conta coisas como ano bisexto, etc, para retornar uma data que nada mais é que o numero em segundos que passou desde era unix dividido por X valores para obter numero de anos, meses, dias, horas, minutos, segundos que que nada mais é que uma data. //agora vamos imprimir os dados da estrutura com ajuda da função asctime que transforma em tudo o que está na estrutura em uma string printf ("Data e hora Atual: %s\n\n", asctime(timeinfo)); //Mas podemos usar diretamente os dados se quiser para imprimir algo mais amigavel. printf("Dia: %d Hora: %d:%d\n\n", timeinfo->tm_mday, timeinfo->tm_hour, timeinfo->tm_min ); return 0; } Acho que mais ou menos da para pegar o conceito e saber trabalhar com horas. Agora você pode usar também clock_t e a função clock para fazer cronômetros. Também pode usar diftime para saber quanto tempo passou em segundos desde uma data até outra. Se quiser montar strings com toda essa informação de forma mais contundente deveria dar uma olhada também em strftime que nada mais é que permite você montar uma bonita string com formato usando logicamente uma gama de especificadores de formato para criar strings ou imprimir corretamente tudo o relacionado com datas. Lhe recomendo dar uma boa estudada em todas as funções da time.h Sorte.
-
Comece vendo vídeos e busque um bom livro. Tente buscar um livro atualizado... pelo menos de 2011 a 2013, ou mais novo se for possível, que inclua o novo padrão c++11, não compre o ultimo livro que saiu, se não compre aquele que for o melhor mesmo, existe muitos bons livros dando volta em pdf, pode baixar uns quantos não tenha medo de dar uma olhada neles, em breve você saberá fazer distinção daqueles que são bons ou ruins, aquele que seja direto, que não enrole o leitor com teorias infladas pois o que você necessita é um livro bem pratico. Infelizmente não lhe posso indicar livros pois meu material de estudo está na integra em español. Algumas paginas em inglês são indispensáveis. http://www.cplusplus.com/reference/ para mim a melhor. http://en.cppreference.com/w/ Essa permite mudar o idioma para língua portuguesa, mas cuidado, é uma tradução tipo Google Translator, ou seja, não é fiel, algumas coisas podem ser difícil de entender a causa de uma má tradução. Para duvidas use o google, e como ultima alternativa use os fóruns. você pode usar os fóruns para ir vendo as duvidas dos usuários, tipo "sua duvida é minha duvida", isso é o que mais lhe vai ajudar a melhorar, pois muitos são alunos que trazem duvidas aos fóruns, de certa forma você estará tendo acesso a material oficial de estudo através de outros usuários. Acredite se lhe digo que escrever códigos é a melhor forma de avançar na programação, ponha em pratica tudo o que for aprendendo, tente prever os resultados, ler códigos tem que ser natural como ler livros, modifique o que você já fez, você pode fazer melhor, um programa nunca está 100% acabado, sempre podemos adicionar mais funções e melhorar o programa. Eu não tive um manual de estudos, eu aprendi assim, com tudo o que continha na internet. Hoje em dia está muito mais fácil aprender a programar. Busque se puder alguns companheiros para trocar ideias sobre programação, programar é uma coisa muito chata e solitária, mas se fizer tipo um grupo com uns quantos colegas pode ser muito frutuoso. Isso que lhe estou passando é simples referencia, não há um caminho predefinido para ser programador, programar é como tocar um instrumento... não existe dois músicos iguais, porem existem muitos grandes músicos cada um dentro do seu estilo, porem todos e cada um deles foi influenciado por uno anterior. Resumindo... tudo depende de você e o quanto você quer ser programador. Estás disposto a passar horas e horas adiante do seu computador para aprender a programar? Eu levo já 4 ou 5 anos, levo a diário umas 10 a vezes mais horas. Claro que não todos os dias, mas a grande maioria sim, sempre que posso. Com todo esse tempo que levo estou sempre aprendendo, nunca se sabe tudo sobre programação.
-
Compra 1 Produto 1 Produto 2 Produto 3 Total a Pagar ler linha por linha buscando por "compra 2". Quando encontrar, dai você deve começar a ler produtos até encontrar "Total a Pagar ".
-
A media qual é? A soma de ambas dividido por 2?
-
#include<stdio.h> #include<string.h> #include <windows.h> #define NALUNOS 2 struct aluno { //define tipo de dados da estrutura aluno char str1[100]; int matricula; float nota1, nota2, media; }; void receberCadastro ( struct aluno *lista ); //chamada da função receberCadastro de Alunos void mediaCadstro ( struct aluno *lista ); void printfCadastro ( struct aluno *lista ); //chamada da função printfCadastro de Alunos int main ( void ) { struct aluno listaCadastro[NALUNOS]; receberCadastro ( listaCadastro ); mediaCadstro( listaCadastro ); printfCadastro ( listaCadastro ); system ( "pause" ); return 0; } void receberCadastro ( struct aluno lista [NALUNOS] ) { //função da entrada de dados para a estrutura int i; for ( i = 0; i < NALUNOS; ++i ) { printf ( "aluno[%d] nome matricula nota1 nota2\n", i + 1 ); scanf ( "%s\n %i\n %f\n %f", lista[i].str1, &lista[i].matricula, &lista[i].nota1, &lista[i].nota2 ); } } void mediaCadstro ( struct aluno *lista ) { //função para cálculo de media individual int i; for ( i = 0; i < NALUNOS; ++i ) lista[i].media = ( ( lista[i].nota1 * 1 ) + ( lista[i].nota2 * 2 ) / 3 ); } void printfCadastro ( struct aluno lista[NALUNOS] ) { //função da saída de dados da estrutura int i; for ( i = 0; i < NALUNOS; ++i ) { printf ( "Aluno %i\n Nome = %s\n Matricula = %i\n Nota1 = %f\n Nota2 = %f\n Media = %f\n", i + 1, lista[i].str1, lista[i].matricula, lista[i].nota1, lista[i].nota2, lista[i].media ); } } Passe a estrutura por referencia.
-
Sem mostrar seu código fica difícil entender. Mas Lista *L[10] é uma array de ponteiros, ou seja, você tem 10 vezes isso: Lista *L. É estranho que você diga que está funcionando no lugar de Lista L[10].
-
Em C contamos desde zero, você pode averiguar que i = 0. A condição é que o programa conte desde i=0 até i<5, ou seja 0, 1, 2, 3 e 4, pois o 4 é o menor numero antes do 5, se percebeu são 5 números de 0 a 4, se quer 4 mude i < 5 para i<4 e você terá o que está buscando.
-
use o botão <> para por o código. Se você não notou faltam coisas no seu código devido a que o código da pagina considera por exemplo [+i+] como outras coisas como por exemplo icones etc. pondo o código dentro do <> seu código fica identado e suas chances de receber resposta aumentam.
-
O nome disso é Lambda ou também conhecida como "funções anônimas" e faz parte do padrão C++11. Aqui você pode ler ao respeito http://cppmoderno.blogspot.com.es/2012/04/funcoes-lambda-em-c-mais-fundo.html
-
Depois de imprimir: printf("%s", "O cliente XXXXXX deve - R$ 9999.99 - " ); imprima printf("%c%c%c", '\b','\b', ' ' ); ou seja.. você volta 2 espaços e sobrescreve com um espaço Também podemos usar: printf("%s", "\b\b " );