Ir ao conteúdo
  • Cadastre-se

NomeUnderground

Membro Júnior
  • Posts

    12
  • Cadastrado em

  • Última visita

Reputação

2
  1. Só um acrescimo, amigo, o seu código tem várias variáveis não usadas. adicionado 9 minutos depois Eu sei que talvez você vá colocar mais coisas no programa, mas seu programa sem as variáveis não usadas é este: https://hastebin.com/atuyinoceh.cpp Coloquei no hastebin, pois não sei é problema do meu navegador ou do fórum, mas coloca acentos no texto sozinho. Só copiar de lá.
  2. Você não usou a variável "soma3". Mas seu código está muito bom.
  3. Consertei os erros, na verdade você esqueceu de colocar as aspas, para os meses e dias da semana. Também colocou vários printf sem colocar as aspas entre %s. Não use printf(%s, ....) Use: printf("s%", ....); E você estava declarando strings sem colocar as aspas nela, aí quando isso acontece, ele vai buscar uma variável com o nome da string, ao invés de declarar a string com o nome colocado. Agora só falta colocar o main() #include<time.h> struct data { char dia; char mes; short ano; }; typedef struct data TData; int e_bissexto(int ano) { return (ano%4==0 && ano%100 != 0) || ano%400 == 0; } TData gere_data() { TData d; int ndm[] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; // d.ano = 2016+rand()%2; d.ano = 2017; if(e_bissexto(d.ano)) ndm[2] = 29; // if(d.ano == 2016) // d.mes = 1+rand()%12; // else // d.mes = 1+rand()%10; d.mes = 11 + rand()%2; d.dia = 1 + rand()%ndm[(int) d.mes]; return d; } void mostre_data(TData a) { printf("%02d/%02d/%d", a.dia, a.mes, a.ano); } void mostre_data_ext(TData d) { char nm[13][10] = {"janeiro","fevereiro","marx87o", "abril","maio","junho","julho","agosto", "setembro","outubro","novembro","dezembro"}; printf("%02d de %s de %d", d.dia, nm[(int)d.mes], d.ano); } TData passa_um_dia(TData d) { int ndm[] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; if(e_bissexto(d.ano)) ndm[2] = 29; d.dia++; if(d.dia > ndm[(int)d.mes]) { d.dia = 1; d.mes++; if(d.mes > 12) { d.mes = 1; d.ano++; } } return d; } void passa_um_dia_ref(TData *d) { int ndm[] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; if(e_bissexto(d->ano)) ndm[2] = 29; d->dia++; if(d->dia > ndm[(int)d->mes]) { d->dia = 1; d->mes++; if(d->mes > 12) { d->mes = 1; d->ano++; } } } int cmp_data(const void *a, const void *b) { TData *da = (TData *) a; TData *db = (TData *) b; if(da->ano != db->ano) return da->ano - db->ano; else if(da->mes != db->mes) return da->mes - db->mes; else return da->dia - db->dia; } TData le_data() { TData res; int d, m , a; scanf("%d/%d/%d", &d, &m, &a); res.dia = d; res.mes = m; res.ano = a; return res; } TData dat_sis() { TData res; time_t tempo = time(NULL); struct tm data = *localtime(&tempo); res.dia = data.tm_mday; res.mes = data.tm_mon+1; res.ano = data.tm_year+1900; return res; } unsigned desde_1_1_1990(TData dat) { int ndm[] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; if(e_bissexto(dat.ano)) ndm[2] = 29; unsigned res = 0; short ano = 1900; char mes = 1; while(ano < dat.ano) { if (e_bissexto(ano)) res += 366; else res += 365; ano++; } while(mes < dat.mes) { res += ndm[(int) mes]; mes++; } return res + dat.dia; } int dia_semana(TData dat) { return desde_1_1_1990(dat) % 7; } void dia_sem_ext(TData dat) { char dse[7][16] = {"domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"}; printf("%s", dse[dia_semana(dat)]); } Na verdade está ok, só depois que vi, que quando copiei foi sem os parênteses, mas só falta o main.
  4. Ok, vou alterar, e vou passar a usar o "-b", não sabia que funcionava, por isso preferi inverte-lo em uma variável. Muito Obrigado. Vou tentar implementar no código os outros casos das raízes.
  5. Sobre o B, eu sei que nem sempre vai ser negativo, pois se for negativo, quando fizer o cálculo vai ficar positivo, quanto aos comentários, alguns estão errados, pois fiz rapidamente, para dar o retorno o mais rápido possível. Muito obrigado, na verdade só usei o termo "letra", pois me pediram para explicar as variáveis. Quanto a que nem sempre o X vai ter um negativo e um positivo, também sei, só coloquei isso pois me veio na cabeça na hora. Ok, vou recolocar o if para ver se a é 0. Obrigado por me avisar do erro do 2*a, nem me liguei nisso, afinal comecei no Pascal faz um pouco mais de um dia. Vou editar o código. Muito obrigado e funcionou com esta correção do 2*a para (2*a), nem me liguei que isso não faria o que eu queria. program bhaskara; var a { constante "a" }, b{ a constante "b"}, c { a constante "c"}, delta{ o delta }, x { o valor de x }, bn{ usei para transformar o valor simétrico do b }, x1{ o primeiro x}, x2 { o segundo x} : real; begin write('Digite o valor de a: '); readln(a); { recebe o valor de a } if a = 0 then begin writeln('A não pode ser 0'); exit; end; write('Digite o valor de b: '); readln(b); { recebe o valor de b } write('Digite o valor de c: '); readln(c); { recebe o valor de c } writeln('Indo calcular delta'); delta := (b*b)-(4*a*c); { calcula o delta } writeln(delta:0:6); { mostrei o delta só por teste } writeln('Indo calcular b negativo'); bn := (-1)*b; { aqui transforma o b em negativo para calcular o bhaskara } writeln('Indo calcular x negativo'); x2 := (bn - sqrt(delta))/(2*a); { calcula um dos valores do x, no caso o negativo } writeln('Indo calcular x positivo'); x1 := (bn + sqrt(delta))/(2*a); { calcula o valor positivo do x } writeln('Duas raízes foram achadas: ', x1:0:6, ' ', x2:0:6); end.
  6. De nada, amigo, se precisar de ajuda só postar aqui no fórum.
  7. Ok, vou retirar esta parte, e explicar as variáveis em comentários: program bhaskara; var a { a letra "a" }, b{ a letra "b"}, c { a letra "c"}, delta{ o delta }, x { o valor de x }, bn{ usei para transformar o b em um número negativo }, xp{ o x pode ter dois valores, este é do x positivo }, xn { x negativo} : real; begin write('Digite o valor de a: '); readln(a); { recebe o valor de a } write('Digite o valor de b: '); readln(b); { recebe o valor de b } write('Digite o valor de c: '); readln(c); { recebe o valor de c } writeln('Indo calcular delta'); delta := (b*b)-(4*a*c); { calcula o delta } writeln(delta:0:6); { mostrei o delta só por teste } writeln('Indo calcular b negativo'); bn := (-1)*b; { aqui transforma o b em negativo para calcular o bhaskara } writeln('Indo calcular x negativo'); xn := (bn - sqrt(delta))/2*a; { calcula um dos valores do x, no caso o negativo } writeln('Indo calcular x positivo'); xp := (bn + sqrt(delta))/2*a; { calcula o valor positivo do x } writeln('Duas raízes foram achadas: ', xp:0:6, ' ', xn:0:6); end. adicionado 1 minuto depois Só depois que percebi que nem usei a variável x, desculpe. adicionado 2 minutos depois O erro é este: sempre que tento, por exemplo o 2,3,-5 dá errado, diz que é 4,-10. Mas só funciona com 1,1,-1 e alguns outros.
  8. Ok, não tem problemas, todo mundo começa sem saber muita coisa. Eu não sou também um expert em C, na verdade eu não gosto de C, prefiro outras linguagens, mas nessa vida se quisermos futura na programação, tem que saber de tudo, não é toda linguagem que dá emprego! Saberia me dizer que erro é esse? Tente copiar o erro que aparece. Tente tirar os acentos. Não sei porque sempre que colo o código aqui está indo com acento. Tipo ao invés de usar "fácil", use "fácil" "fácil" sem acento. O fórum coloca acento em tudo! adicionado 5 minutos depois Vou botar o código no hastebin, copie de lá, pois no fórum está colocando acento: https://hastebin.com/eyikucidir.cpp
  9. Compilei no Linux com GCC e acusou alguns erros, entre eles na linha 10 está reclamando que as variáveis estão com acentos, evite usar acentos nas variáveis, isso não é uma boa prática. A função gets não é recomendada, prefira usar fgets(variavel, tamanhodavariavel, stdin); E talvez seja melhor usar int main(void) Invés de main() sozinho. Vou ver se consigo resolver o outro erro. O código ficou: #include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { char resp,inicio; char cert='s'; char nome[40]; int medio=0,fácil=0,difícil=0,cont=0,nivel; int certo_1=0,errado_1=0,contp_1=1,totp_1=1; int certo_2=0,errado_2=0,contp_2=1,totp_2=1; int certo_3=0,errado_3=0,contp_3=1,totp_3=1; printf("\t\nOla Jogador Por favor informe seu nome e a seguir pressione \"Enter\".\n\n"); printf("Nome do Participante: "); fgets(nome, 40, stdin); system("cls"); dificuldade: printf("\t*==========================================================================================================*\n"); printf("\t| Seja bem-vindo \%s\ ao meu primeiro jogo espero que goste! |\n",nome); printf("\t| Este e um jogo divertido de perguntas e respostas.Em que o jogador poderá escolher o assunto desejado. |\n"); printf("\t*==========================================================================================================*\n"); printf("\t| Escolha o Assunto desejado e em seguida aperte enter. |\n"); printf("\t| 1: Anime: Tudo sobre o mundo dos animes. |\n"); printf("\t| 2: Series: 3 series especificas The Walking Dead, Grey's Anatomy e Supernatural. |\n"); printf("\t| 3: Games: Tudo sobre o universo Gamer. |\n"); printf("\t*==========================================================================================================*\n\n"); printf("\t QUAL E O SEU ASSUNTO DESEJADO? \n"); scanf("%d", &nivel); system("cls"); switch (nivel) { case 1: { system("cls"); time_t tempo; struct tm*data;time(&tempo); data =localtime(&tempo); printf("\t*===================================================================*\n"); printf("\t| _________ ___ ___ ___ ____ ____ __________ |\n"); printf("\t| XXXXXXXXX XXX_ XXX XXX XXXX_ _XXXX XXXXXXXXXX |\n"); printf("\t| XXXXXXXXX XXXX_ XXX XXX XXXXX_ _XXXXX XXXXXXXXXX |\n"); printf("\t| XXX___XXX XXXXX_XXX XXX XXXXXX_XXXXXX XXX_____ |\n"); printf("\t| XXXXXXXXX XXXXXXXXX XXX XXXXXXXXXXXXX XXXXXXXX |\n"); printf("\t| XXXXXXXXX XXX XXXXX XXX XXXXX X XXXXX XXX_______ |\n"); printf("\t| XXX XXX XXX XXXX XXX XXXXX XXXXX XXXXXXXXXX |\n"); printf("\t| XXX XXX XXX XXX XXX XXXX XXXXX XXXXXXXXXX |\n"); printf("\t| |\n"); printf("\t*===================================================================*\n\n"); printf("\t AS PERGUNTAS SOBRE \"ANIME\" VALEM 2 PONTOS CADA\n\n"); getchar();printf("Pecione \"Enter\" para continuar..."); getchar();system("cls"); printf("\t*================================*\n"); printf("\t| Pergunta de N. %.2d --- Anime |\n", contp_1++); printf("\t*================================*\n\n"); printf("\t Naruto e filho de qual dos Hokages?\n\n"); printf(" A) Sarutobi Hiruzen\n"); printf(" B) Namikaze Minato\n"); printf(" C) Senju Hashirama\n"); printf(" D) Senju Tobirama\n\n"); printf("\t QUAL E A ALTERNATIVA CORRETA: \n\n"); scanf (" %s " ,&resp); if ((resp=='B')||(resp='b')) { printf ("Resposta correta\n"); certo_1++; } else { printf ("Resposta errada\n"); printf ("Resposta correta: Letra \"B\"\n"); errado_1++; } printf("*==================================================*"); getchar(); printf("Precione a telca Enter para continuar..."); getchar(); system("cls"); printf("\t*==================================================*\n"); printf("\t| Pergunta de N. %.2d --- Anime |\n", contp_1++); printf("\t*==================================================*\n\n"); printf("\t Em Dragon Ball Z as esferas do dragao do planeta\n"); printf("\t namejuseikin consedem quantos desejos ?\n"); printf("A) 1 DESEJO\n"); printf("B) 4 DESEJO\n"); printf("C) 2 DESEJO\n"); printf("D) 3 DESEJO\n\n"); printf("\t QUAL E A ALTERNATIVA CORRETA?\n"); scanf(" %s " , &resp ); if ((resp=='D')||(resp=='d')) { printf("\tSUA RESPOSTA ESTA CORRETA...\n"); certo_1++; } else { printf("\tSUA RESPOSTA ESTA ERRADA\n..."); printf("\tA ALTERNATIVA CORRETA ERA A LETRA \"D\"\n"); errado_1++; } } } } adicionado 1 minuto depois Eu não sei porque quando eu colei continuaram os acentos, mas retire-os. adicionado 6 minutos depois Pronto, achei o erro. Não use espaços no scanf, tipo: scanf(" %s ", &variavel); Use nenhum espaço no scanf. scanf("%s", &variavel); O código ficou assim: #include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { char resp,inicio; char cert='s'; char nome[40]; int medio=0,fácil=0,difícil=0,cont=0,nivel; int certo_1=0,errado_1=0,contp_1=1,totp_1=1; int certo_2=0,errado_2=0,contp_2=1,totp_2=1; int certo_3=0,errado_3=0,contp_3=1,totp_3=1; printf("\t\nOla Jogador Por favor informe seu nome e a seguir pressione \"Enter\".\n\n"); printf("Nome do Participante: "); fgets(nome, 40, stdin); system("cls"); dificuldade: printf("\t*==========================================================================================================*\n"); printf("\t| Seja bem-vindo \%s\ ao meu primeiro jogo espero que goste! |\n",nome); printf("\t| Este e um jogo divertido de perguntas e respostas.Em que o jogador poderá escolher o assunto desejado. |\n"); printf("\t*==========================================================================================================*\n"); printf("\t| Escolha o Assunto desejado e em seguida aperte enter. |\n"); printf("\t| 1: Anime: Tudo sobre o mundo dos animes. |\n"); printf("\t| 2: Series: 3 series especificas The Walking Dead, Grey's Anatomy e Supernatural. |\n"); printf("\t| 3: Games: Tudo sobre o universo Gamer. |\n"); printf("\t*==========================================================================================================*\n\n"); printf("\t QUAL E O SEU ASSUNTO DESEJADO? \n"); scanf("%d", &nivel); system("cls"); switch (nivel) { case 1: { system("cls"); time_t tempo; struct tm*data;time(&tempo); data =localtime(&tempo); printf("\t*===================================================================*\n"); printf("\t| _________ ___ ___ ___ ____ ____ __________ |\n"); printf("\t| XXXXXXXXX XXX_ XXX XXX XXXX_ _XXXX XXXXXXXXXX |\n"); printf("\t| XXXXXXXXX XXXX_ XXX XXX XXXXX_ _XXXXX XXXXXXXXXX |\n"); printf("\t| XXX___XXX XXXXX_XXX XXX XXXXXX_XXXXXX XXX_____ |\n"); printf("\t| XXXXXXXXX XXXXXXXXX XXX XXXXXXXXXXXXX XXXXXXXX |\n"); printf("\t| XXXXXXXXX XXX XXXXX XXX XXXXX X XXXXX XXX_______ |\n"); printf("\t| XXX XXX XXX XXXX XXX XXXXX XXXXX XXXXXXXXXX |\n"); printf("\t| XXX XXX XXX XXX XXX XXXX XXXXX XXXXXXXXXX |\n"); printf("\t| |\n"); printf("\t*===================================================================*\n\n"); printf("\t AS PERGUNTAS SOBRE \"ANIME\" VALEM 2 PONTOS CADA\n\n"); getchar();printf("Pecione \"Enter\" para continuar..."); getchar();system("cls"); printf("\t*================================*\n"); printf("\t| Pergunta de N. %.2d --- Anime |\n", contp_1++); printf("\t*================================*\n\n"); printf("\t Naruto e filho de qual dos Hokages?\n\n"); printf(" A) Sarutobi Hiruzen\n"); printf(" B) Namikaze Minato\n"); printf(" C) Senju Hashirama\n"); printf(" D) Senju Tobirama\n\n"); printf("\t QUAL E A ALTERNATIVA CORRETA: \n\n"); scanf("%s" ,&resp); if ((resp=='B')||(resp='b')) { printf ("Resposta correta\n"); certo_1++; } else { printf ("Resposta errada\n"); printf ("Resposta correta: Letra \"B\"\n"); errado_1++; } printf("*==================================================*"); getchar(); printf("Precione a telca Enter para continuar..."); getchar(); system("cls"); printf("\t*==================================================*\n"); printf("\t| Pergunta de N. %.2d --- Anime |\n", contp_1++); printf("\t*==================================================*\n\n"); printf("\t Em Dragon Ball Z as esferas do dragao do planeta\n"); printf("\t namejuseikin consedem quantos desejos ?\n"); printf("A) 1 DESEJO\n"); printf("B) 4 DESEJO\n"); printf("C) 2 DESEJO\n"); printf("D) 3 DESEJO\n\n"); printf("\t QUAL E A ALTERNATIVA CORRETA?\n"); scanf("%s" , &resp ); if ((resp=='D')||(resp=='d')) { printf("\tSUA RESPOSTA ESTA CORRETA...\n"); certo_1++; } else { printf("\tSUA RESPOSTA ESTA ERRADA\n..."); printf("\tA ALTERNATIVA CORRETA ERA A LETRA \"D\"\n"); errado_1++; } } } }
  10. Boa noite, Fiz uma calculadora para equações de segundo grau, para resolver a clássica: ax²+bx+c=0 Usando a fórmula de Bhaskara para encontrar o "x". Porém quando uso valores como: a = 1 b = 1 c = -1 , funciona muito bem dando o resultado correto, porém quando uso por exemplo: a=2 b=3 c=-5 , o resultado fica: 4 e -10, que está errado. O código que fiz foi este( Compilei com o Free Pascal no Linux ): program bhaskara; var a, b, c, delta, x, bn, xp, xn : real; begin write('Digite o valor de a: '); readln(a); if a = 0 then begin writeln('A não pode ser 0'); exit; end else begin writeln('Valor de a está ok'); end; write('Digite o valor de b: '); readln(b); write('Digite o valor de c: '); readln(c); writeln('Indo calcular delta'); delta := (b*b)-(4*a*c); writeln(delta:0:6); writeln('Indo calcular b negativo'); bn := (-1)*b; writeln('Indo calcular x negativo'); xn := (bn - sqrt(delta))/2*a; writeln('Indo calcular x positivo'); xp := (bn + sqrt(delta))/2*a; writeln('Duas raízes foram achadas: ', xp:0:6, ' ', xn:0:6); end. Grato desde já.

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

×
×
  • Criar novo...