
ovatsug
Membros-
Total de itens
7 -
Registro em
-
Última visita
Sobre ovatsug

ovatsug's Achievements
0
Reputação
-
o comando gotoxy não posso usar por ser um comando que ainda não aprendi e esses exercícios exigem que se use o que conhecemos.... no caso acho que vou ter que usar pelo seu segundo metodo apontado e usar matrizes que foi o que foi recomendado, mas é justamente aí minha dúvida, que ponto do programa eu devo aproveitar, seria melhor usaur tres matrizes ou como seria melhor?? obrigado
-
esse problema já foi resolvido... ninguém me ajudou :( mas já dei um jeito e já postei outra duvida em outro tópico, essa tenho esperanças d q vao responder! xD vlw
-
Ola pessoal, eu tenho um programa em C feito que imprime o calendario do ano de 1900 em diante, porém este programa imprime o calendário de um dado ano, com os meses um em baixo do outro e eu preciso que o mesmo seja feito com os meses tres a tres um ao lado do outro, exemplo: é impresso: janeiro [caso 1] fevereiro março abril maio junho [...] e deve ser impresso: janeiro fevereiro março [caso 2] abril maio junho [...] coloquei apenas o titulo dos meses, mas deve ser impresso em baixo d cada titulo o respectivo calendario. o programa que faz o mencionado no caso 1 é o seguinte [ele só é grande, mas não tem nada complexo, rapidinho vocês leêm e entendem]: #include <stdio.h> #include <stdlib.h> /* * Constantes: * Os dias da semana são representados pelos inteiros de 0 a 6. * Os meses do ano são representados pelos inteiros de 1 a 12. */ #define domingo 0 #define segunda 1 #define terca 2 #define quarta 3 #define quinta 4 #define sexta 5 #define sabado 6 #define NMAX 100 #define VERDADEIRO 1 #define FALSO 0 /* Prototipos de funcoes */ void forneca_instrucoes(void); int obtenha_ano(void); void imprima_calendario(int ano); void imprima_calendario_do_mes(int mes, int ano); void indente_primeira_linha(int dia_da_semana); int numero_de_dias_do_mes(int mes, int ano); int primeiro_dia_do_mes(int mes, int ano); int eh_bissexto(int ano); void imprima_cabecalho(int mes, int ano); /* Programa principal */ int main() { int ano; forneca_instrucoes(); ano = obtenha_ano(); imprima_calendario(ano); system("pause"); return 0; } /* Esta função imprime uma mensagem com instruções para o usuário */ void forneca_instrucoes(void) { printf("Este programa imprime o calendario para um dado ano.\n"); printf("O ano não pode ser anterior a 1900.\n"); } /* * Esta funcao le um ano digitado pelo usuario. Se o usuario fornece * um ano anterior a 1900, a funcao avisa que o ano deve ser pelo menos 1900. * Quando um tal valor e' fornecido, a funcao devolve esse valor. */ int obtenha_ano(void) { int ano; while (VERDADEIRO) { printf("Calendario de que ano? "); scanf("%d", &ano); if (ano >= 1900){ printf("Calendario de %d\n\n", ano); return ano; } printf("O ano precisa ser pelo menos 1900.\n"); } } /* Esta funcao imprime o calendario do ano dado. */ void imprima_calendario(int ano) { int mes; for (mes = 1; mes <= 12; mes++) { imprima_calendario_do_mes(mes, ano); printf("\n"); } } /* Esta funcao imprime o calendario de um dado mes e ano. */ void imprima_calendario_do_mes(int mes, int ano) { int dia_da_semana, n_dias, dia, v[NMAX], A[NMAX][NMAX], B[NMAX][NMAX], C[NMAX][NMAX]; imprima_cabecalho(mes, ano); printf(" Do Se Te Qu Qu Se Sa\n"); n_dias = numero_de_dias_do_mes(mes, ano); dia_da_semana = primeiro_dia_do_mes(mes, ano); indente_primeira_linha(dia_da_semana); for (dia = 1; dia <= n_dias; dia++) { printf(" %2d", dia); if (dia_da_semana == sabado){ printf("\n"); } dia_da_semana = (dia_da_semana + 1) % 7; } if (dia_da_semana != domingo) printf("\n"); } /* Esta funcao imprime um cabecalho para o calendario do mes do ano dado.*/ void imprima_cabecalho(int mes, int ano) { switch(mes) { case 1: printf(" Janeiro"); break; case 2: printf(" Fevereiro"); break; case 3: printf(" Marco"); break; case 4: printf(" Abril"); break; case 5: printf(" Maio"); break; case 6: printf(" Junho"); break; case 7: printf(" Julho"); break; case 8: printf(" Agosto"); break; case 9: printf(" Setembro"); break; case 10: printf(" Outubro"); break; case 11: printf(" Novembro"); break; case 12: printf(" Dezembro"); break; default: printf("não pode acontecer!\n"); exit(0); } printf(" %d\n", ano); } /* * Esta funcao indenta a primeira linha de um calendario * de um mes, imprimindo o numero suficiente de brancos * para colocar o cursor na posicao correta para a impressao * do primeiro dia daquele mes, que cai no dia da semana * dado como parametro (dia_da_semana). */ void indente_primeira_linha(int dia_da_semana) { int i; for (i = 0; i < dia_da_semana; i++) { printf(" "); } } /* Esta funcao devolve o numero de dias do dado mes do dado ano. */ int numero_de_dias_do_mes(int mes, int ano) { switch (mes) { case 2: if (eh_bissexto(ano)) return 29; return 28; case 4: case 6: case 9: case 11: return 30; default: return 31; } } /* * Esta funcao devolve o dia da semana em que cai o dia * primeiro do mes dado do ano dado. * * O metodo usado para determinar este dia da semana * é simples: usamos o fato que 1/1/1900 foi uma * segunda-feira e contamos o numero de dias decorridos * desde então ate a data em questao. */ int primeiro_dia_do_mes(mes, ano) { int dia_da_semana, i; dia_da_semana = segunda; for (i = 1900; i < ano; i++) { dia_da_semana = (dia_da_semana + 365) % 7; if (eh_bissexto(i)) dia_da_semana = (dia_da_semana + 1) % 7; } for (i = 1; i < mes; i++) { dia_da_semana = (dia_da_semana + numero_de_dias_do_mes(i, ano)) % 7; } return dia_da_semana; } /* Esta funcao devolve VERDADEIRO se o dado ano é bissexto. */ int eh_bissexto(int ano) { return ((ano % 4 == 0) && (ano % 100 != 0)) || (ano % 400 == 0); } caso não tenha ficado claro o modo como está sendo impresso, podem colocar pra compilar esse código que está rodando direitinho. Só preciso de ajuda para a nova formataçao estipulada para impressao, sei que eu precisarei usar matrizes, mas não vi como usa-las aí, agradeço quem puder ajudar. obrigado
-
Olá pessoal, eu tenho q construir em C, um jogo de campo minado e já fiz o esboço inicial e segue os códigos que já fiz (não está acabado, por enquanto só deveria estar sorteando as minas e lendo a matri e associando os valores às minas. O exercício está no link [url=http://www.ime.usp.br/~yw/2008/mac115/eps/ep3/ep3.pdf], por ser meio grande não precisem necessariamente ler, acho q basta saber jogar o campo minado, mas se alguém disponibilizar de mais tempo, serei grato! O código já feito é o seguinte: #include <stdio.h> #include <stdlib.h> #define MINA -1 /*indica que a posição analisada está com mina*/ #define VAZIA 0 /*indica que a posição analisada está sem mina*/ #define MAX 10 /*inicialização da matriz sem as bombas, a princípio*/ void le_matriz (int a[][MAX], int p, int q){ int l,c; for(l=1; l<=p; l++){ for(c=1; c<=q; c++) a[l][c]=VAZIA; } } /*inserção de borda para observação de casas vizinhas*/ void borda(int a[][MAX], int b, int d){ int l, c; for (l=0; l<=b+1; l++){ a[l][0]=a[l][d+1]=VAZIA; } for (c=0; c<=d+1; c++){ a[0][c]=a[b+1][c]=VAZIA; } } /*impressão da matriz com o uso de marcadores*/ void imprime_matriz (int a[][MAX], int p, int q){ int l, c; for(c=0; c<=q; c++) if(c!=0)printf("%d ", c); /*inseri-se números nas bordas horizontalmente para a observação das colunas*/ else printf(" "); printf("\n"); for(l=1; l<=p; l++){ for(c=1; c<=q; c++){ if(c==1) printf("%2d * ", l); /*inseri-se números nas bordas verticalmente para a observação das linhas*/ else printf("* "); } printf("\n"); } } /*leitura do número k de vizinhos com minas para cada posição da matriz*/ void k_minas (int a[][MAX], int p, int q){ int l, c, k; for(l=1; l<=p; l++){ for(c=1; c<=q; c++){ k=0; if(a[l-1][c]==MINA) k++; if(a[l+1][c]==MINA) k++; if(a[l][c-1]==MINA) k++; if(a[l][c+1]==MINA) k++; if(a[l-1][c-1]==MINA) k++; if(a[l-1][c+1]==MINA) k++; if(a[l+1][c-1]==MINA) k++; if(a[l+1][c+1]==MINA) k++; a[l][c]=k; } } } int main(){ int m, n, z, i, a, b, aux1, aux2, v1[MAX], v2[MAX], A[MAX][MAX]; /* inicializações por parte do usuário*/ printf("\t\t\tCampo Minado\n"); printf("\nEntre com o numero de linhas da matriz do jogo (maximo 10):"); scanf("%d", &m); printf("Entre com o numero e colunas da matriz do jogo (maximo 10):"); scanf("%d", &n); printf("Entre com o numero de minas (maximo %d):", m*n); scanf("%d", &z); /*auxiliares no sorteio da mina definidas pelo usuário, para garantir maior aleatorieadade*/ printf("\nEntre com um valor auxiliar para o sorteio das linhas das minas:"); scanf("%d", &a); printf("Entre com um valor auxiliar para o sorteio das colunas das minas:"); scanf("%d", &b); /*sorteio da linha da mina*/ srand(a); for(i=0; i<z; i++) v1[i] = rand()%m; le_matriz(A, m, n); /*sorteio da coluna da mina e determinação de coordenadas não-repetidas*/ for(i=0; i<z; i++){ v2[i] = rand()%n; if (A[v1[i]][v2[i]]==VAZIA) A[v1[i]][v2[i]]=MINA; } /*impressões do jogo e chamada das funções que garantem jogabilidade*/ printf("\n\t\tJogo inicialiado!\n"); printf("\nSituacao inicial da matriz (existem %d posicoes livres de minas):\n\n", (m*n)-z); imprime_matriz(A, m, n); k_minas(A, m, n); printf("\n"); system("pause"); return 0; } Porém, os métodos que utilizei para o sorteio da matriz estão dando erro na medida que duas bombas acabam caindo na mesma posição e algo de errado ocorre que o programa quando executado, pára e não finaliza com o enter. É um exercício um pouquinho longo, mas quem se disponibilizar a me ajudar, obrigado! Ah, e caso possam avaliar o que eu já fiz do programa também, além do sorteio, seria um auxílio para não ocorrerem erros na continuação do mesmo. Agradeço!
-
vlw, é isso sim! eu já tinha olhado a reposta antes mas eu tava d saida e não tive tempo d responder, dai vim só agradecer agora mesmo xD :blush:
-
ola! ainda estou aprendendo sobre linguagem C, então alguém por favor pode me ajudar num trecho d um programa q exige o calculo do seno de um numero por formula d taylor?? deve-se calcular: sen(x) = x/1! - (x*x*x)/3! + (x*x*x*x*x)/5! + .... esse ehh o trecho de duvida do programa q fiz: fat = 1.0; num = 1.0; sinal = 1; senx = 1.0; num = num * x * x; fat = (???) termo = num/fat; sinal = -sinal; senx = x + sinal * termo; donde num ehh o numerador d um termo da soma e fat o denominador q é o fatorial do termo e o (???) ehh a duvida, pois tentei escrever de varias formas uma expressao q calculasse fat, mas sempre dava erro.... alguém pode me ajudar na determinaçao d uma expressao correta, pls??? vlw!!! PS: o programa deve ser calculado obrigatoriamente termo por termo para que se tenha uma precisão de 10^-8 em casa decimais