Ir para conteúdo
Fórum Script Brasil

Ark

Membros
  • Total de itens

    31
  • Registro em

  • Última visita

Tudo que Ark postou

  1. Aew lobão cara, beleza? cara, se você ainda não sabe C recomendo fortemente você estudar C primeiro pra depois encarar C++. É mais uma questão de bom senso. ;) Se você já souber C, procure entender as diferenças entre ela e C++, veja se alguma coisa que você usava antes é usada da mesma forma em C++, se não, tente se adaptar às mudanças. Pra te indicar apostilas fica difícil sem saber o que você já sabe. Diga suas experiencias, você já sabe C?
  2. Ark

    (Resolvido) clock()

    Aew galera, consegui resolver o problema! Obrigado a todos, um abraço =]
  3. Ark

    Achar porcentagem

    Só tenha cuidado com a precedência de operadores nas expressões aritméticas. Alí no exemplo deu certo porque os operadores * e / tem a mesma precedencia, assim são avaliados da esquerda pra direita. Na dúvida é só separar por parênteses. ;D []'s
  4. Recomendo como IDE o Code::Blocks que além de ser open-source e multiplataforma, não tem tantos bugs quando o DevC++ e/ou wxDevC++. Aliás, há 2 meses uso o CodeBlcoks e nunca vi um bug =] []'s
  5. Ark

    (Resolvido) clock()

    Galera, o que tá acontecendo é que o tempo inicial e o final retornados pela clock() tem valores iguais, o que é IMPOSSÍVEL, já que esse pedaço de código for(count = 0; count < n; count++){ num = rand() % ( 2 * n ) + 1; while(ExisteNoVetor(vetor, num, count)) num = rand() % ( 2 * n ) + 1; vetor[count] = num; } Cria o vetor e ainda por cima chama outra função pra garantir que os números serão distintos, como esse pedaço de código cria o vetor de forma consideravelmente lenta, isso impossibilita que o tempo inical seja igual ao tempo final. Os tempos iniciais e finais estão sendo impressos antes e depois do pedaço de código acima. Testei o código usando a função GetTickCount() da api do windows em vez da clock() e o comportamento estranho persiste. Alguém, por favor, me ajude a "exorcisar" esse programa...hehehehe... cara, ele tá fazendo em ms mesmo. E quanto ao segundo comentário, nem me preocupei em tentar o cast porque os tempos inicial e final nem são diferentes. O problema é justamente o tempo inicial ser igual ao final, eu até coloquei o algoritmo pra gerar vetores maiores, com mais de 1000 elementos, mas isso continua. Espero ter sido claro, obrigado pela atenção, []'s
  6. Aew Kazaraki, Tem esse tutorial aqui: http://www.ic.uff.br/~hcgl/tutorial.html Essa apostila aqui também é muito boa: www.inf.ufrgs.br/~binsely/tutorialc.pdf E tem também esse site aqui que tem todas as funções da biblioteca do C e C++: http://www.cplusplus.com/reference/clibrary/ E um tutorial C++ do mesmo site, inlcusive: http://www.cplusplus.com/doc/tutorial/ Se precisar de ajuda ou mais alguma coisa me disponho a te ajudar cara. Se quiser manter contato: email: adeon7r[at]gmail[dot]com MSN: adeon7r[at]hotmail[dot]com Espero ter ajudado, []'s
  7. Ark

    calcular peso ideal

    Isso porque você tá lendo uma caractere em vez de string. Desse modo o primeiro scanf() lê apenas o primeiro dos caracteres digitados pelo usurário, o segundo scanf() lê o segundo e o resto se o usuário digitar "fica esperando" outro comando que leia caracteres. você devia ter declarado seu nome como vetor de caracteres: #include <stdio.h> main() { char nome[15], sexo; float h; printf("Qual seu nome? "); scanf("%s", nome); // e não esqueca de mudar o código de formato do scanf para %s (string) // o operador de endereço que seguia "nome" some, pois agora nome é um vetor de chars e o nome do vetor sem índice é o endereço inicial do vetor. printf("Digite seu sexo (M/F)\n"); scanf("%c", &sexo); printf("Qual sua altura? \n"); scanf("%f", &h); system("PAUSE"); } Espero ter ajudado, []'s.
  8. Ark

    (Resolvido) clock()

    Aew galera, beleza? estou tentando fazer um trabalho da faculdade pra gerar um vetor com números aleatórios distintos e ordenar esse vetor pelos tres algorítmos básicos de ordenação: seleção, inserção e bolha. Também faz parte do trabalho "pegar" o tempo que cada um gasta para os mais diversos tamanhos de vetor. Agora o problema é justamente com a função clock() do time.h que tá funcionando de forma inesperada, ela simplesmente dá o mesmo tempo final e inicial, sendo que entre uma chamada e outra da função clock() o meu algorítmo faz uma das ordenações acima. No fim das contas o printf abaixo do meu código só imprime zero(final-inicial). Antes de implementar esse programa, eu já tinha feito um teste com a clock() só pra ver como funciona e tal e ela funcionou direitinho pra um programa bem pequeno, alguém pode me dar uma luz? O algorítmo que TENTA calcular o tempo da geração do vetor, sem sucesso: #include <stdio.h> #include <stdlib.h> #include <time.h> int main(){ clock_t n, tFim, tInicio, tDecorrido; srand(time(NULL)); printf("Digite o tamanho do vetor a ser gerado: "); scanf("%d", &n); int vetor[n]; tInicio = clock(); printf("Tempo inicial: %d\n", tInicio); int count, num; for(count = 0; count < n; count++){ num = rand() % ( 2 * n ) + 1; while(ExisteNoVetor(vetor, num, count)) num = rand() % ( 2 * n ) + 1; vetor[count] = num; } tFim = clock(); printf("Tempo final: %d\n", tFim); tDecorrido = tFim - tInicio; printf("Vetor gerado em %d milisegundos:\n", tDecorrido); Imprime(vetor, n); return 0; } E aqui o algorítmo que, não sei porque, é mais especial que o outro, roda: #include <stdio.h> #include <time.h> int main(){ int count, duracao, begin, end; begin = clock(); for(count = 0; count < 10000; count++) printf("%d ", count); end = clock(); duracao = end - begin; printf("O laco for demorou %dms ...", duracao); system("pause"); return 0; } Agradeço pela atenção, []'s.
  9. Ark

    grupo de estudo

    Excelente idéia! Parabéns pela iniciativa. Eu andava meio sumido do fórum, tava meio ocupado com algumas coisas da faculdade, mas agora toh voltando a postar no fórum e me deparei com esse tópico e com o subfórum de c. Devo dizer que toh tão empolgado quanto todos vocês e vou me esforçar pra participar ativamente e postar sempre que puder alguma coisa legal. Abraço.
  10. Ark

    Erro no linker?

    Valeu pela ajuda cara, deu certo aqui! Obrigado pela paciência também. :lol: Abraço.
  11. Ark

    Erro no linker?

    Entendi, mas como o meu header vai saber que é pra "buscar" o código das funções no stack.c? Eu tenho que estabelecer algum vinculo entre os dois ou o compilador já vai saber? Eu vou "dizer" pro compilador que o código fonte das funções tá no stack.c se eu colocar no mesmo dir da stack.h que é o include?
  12. Ark

    Ajuda em programa!

    Gostei dessa Beraldo! :D Desculpe a ignorancia, mas o que funções tem o header iostream.h, e ele é do C++, certo? :huh:
  13. Ark

    método da bolha.

    Dá uma olhada nesse código que eu fiz, adicionei comentários pra ficar mais legível: #include <stdio.h> #include <string.h> // vai retornar o código da menor(a que vem primeiro) string, 0 para a primeira, 1 para a segunda. int strcomp(char *string1, char *string2){ char *p1, *p2; p1 = string1; p2 = string2; while(*p1 && *p2){ if(*p1 == *p2){ // vai varrer as duas strings até que encontre um caractere direfente p1++; p2++; } else if(*p1 > *p2) // quando encontrar vai retornar a string que vem primeiro return 1; // segunda vem primeiro else return 0; // primeira vem primeiro } if(*p1) return 1; // se o laço parar num instante e houver uma string com mais caracteres que a outra else if(*p2) return 0; // vai retornar a mais curta para colocar na frente em relação à ordem } // vai ordenar comparando n-1 vezes, onde n é o número de strings no array - demonio das trocas(bolha) // vai usar a função acima para comparar a strings e consequentemente realizar a troca void sort_str_array(char array[][15]){ char straux[15]; // string auxiliar que vai conter o valor temporário da string a ser trocada pela outra register int cont=0, cont2=0; // inicio da comparação for(cont=1; cont<15; cont++) for(cont2=0; cont2<14; cont2++){ // vai parar no penúltimo pra evitar comparar com o inexistente if(strcomp(array[cont2], array[cont2+1])){ strcpy(straux, array[cont2+1]); // vai realizar a troca de strings strcpy(array[cont2+1], array[cont2]); // colocando assim em ordem alfabética strcpy(array[cont2], straux); } } } void main(void){ char string_array[15][15]; int cont=1; while(cont<=15){ printf("Digite a %d palavra: ", cont); scanf("%15s", string_array[cont-1]); cont++; } sort_str_array(string_array); // chamada da função de ordenação cont=1; while(cont<=15){ printf("string_array[%d] = %s\n", cont, string_array[cont-1]); cont++; } getch(); } strlen(str1) você usa pra "pegar" o tamanho da str1 e strcpy(str1, str2) copia o conteudo de str2 em str1 e ainda tem a strcmp(str1, str2) compara duas strings e retorna um inteiro baseado no resultado: zero se as duas são iguais, < 0 se str1 é menor que str2 e > 0 caso contrário. Lembrando que pra usar essas e mais funções de manipulação de string você tem que incluir o header string.h. Se você preferir, aqui tá o código fonte pra baixar: http://www.4shared.com/file/73840546/f8c01...na_strings.html Saiba mais sobre essas e as outras funções do string.h aqui: http://www.cplusplus.com/reference/clibrary/cstring/ Espero ter ajudado, Abraço.
  14. Ark

    Erro no linker?

    No meu caso como eu faria? Pra incluir o meu stack.c no header que ia conter só os protótipos? Se não for pedir muito gostaria que você explicasse melhor essa parte. Obrigado pela ajuda. Abraço.
  15. Ark

    Erro no linker?

    Galera é o seguinte, toh começando a estudar estrutura de dados. Com isso, tava queredo criar um arquivo de cabeçalho pra ter minhas funções de retirada e inserção de elemento e etc. Mas quando eu compilo dá uns erros chatos: "[Linker error] undefined reference to `display_stack' [Linker error] undefined reference to `push_stack' [Linker error] undefined reference to `pop_stack'" Vou colocar o cabeçalho aqui: stack.h void push(int *stack, int *top, int *tam); void pop(int *stack, int *top); void display_stack(int *stack, int *tam); void push_stack(int *stack, int *top, int tam){ if(top<tam){ printf("Elemento a ser inserido: "); scanf("%d", &stack[top]); top+=1; } else printf("A pilha tah cheia.\n"); } void pop_stack(int *stack, int *top){ if(top>0){ top-=1; stack[*top] = 0; } else printf("A pilha tah vazia.\n"); } void display_stack(int *stack, int tam){ int x; for(x=tam-1;x>=0;x--) printf("%d\n", stack[x]); } pilha.c #include <stdio.h> #include <stack.h> #define tam 15 main(){ int stack[tam], op, top=0; do{ system("cls"); printf("Digite uma opcao: "); printf("1. Mostrar pilha;\n2. Adicionar elemento.\n3.Retirar elemento;\n4. Sair."); scanf("%d", &op); switch(op){ case 1: display_stack(stack, tam); break; case 2: push_stack(stack, &top, tam); break; case 3: pop_stack(stack, &top); } } while(op!=4); getch(); } Por quê do erro? Obrigado pela atenção. Abraço.
  16. Ark

    Aprender sobre wxwidgets

    cara tem esse aqui em português, mas é só introdutório: http://www.vconrado.com/wx/ Abraço.
  17. cara tenta trocar os printf da linha 63 à 80 pela tua função escrevexy(); Pelo que eu percebi tua função escrevexy recebe as coodenadas onde o gotoxy() vai escrever a string que você passa como argumento, então você trocou, onde era pra colocar escrevexy(), você colocou printf();
  18. Ark

    Interface

    Voce disse que queria criar menus, interface e tal. wxwidgets é uma API - aplication programming interface. Só estudando uma API que você consegue criar os botões, menus, tudo bonitinho. Abraço.
  19. Ark

    Matriz int x Matriz char

    Valeu pelas respostas galera, superei meu trauma de ponteiros para int hehehe Abraço.
  20. Recomendo esse: C++ Como Programar - Harvey M. Deitel, Paul J. Deitel http://www.americanas.com.br/AcomProd/1472/368784 Tem também esse: C++: The Complete Reference Herbert Schildt http://www.google.com.br/search?hl=pt-BR&a...ta=lr%3Dlang_pt Abraço.
  21. Ark

    Matriz int x Matriz char

    cara, peço desculpas se eu não fui tão claro. Hum, é que eu achava que o compilador meio que tratava strings de uma forma mais especial que matrizes de outros tipos, até pelo fato de ter funções pra manipular strings tão bem como se fossem tipos de dados string mesmo. Acho que eu viajei, no fundo é só char mesmo, hehehe Aproveitando o tópico sobre matrizes, eu queria que alguém me ajudasse numa coisa, eu não sei se dá, mas eu posso trabalhar a aritimética de ponteiros com um ponteiro apontando pra matriz inteira? Tipo, eu posso fazer isso: #include <stdio.h> main(){ int *p1, x, mat[15]; p1 = mat; for(x=0;x<15;x++) scanf("%d", &mat[x]); while(*p1){ printf("%d ", *p1); p1+=sizeof(int); } getch(); } Com char eu incremento o ponteiro em 1 mas e com int faz assim mesmo, porque aqui tá dando erro na hora que eu executo o código, na hora de imprimir aparece só "lixo", uns numeros enormes. Abraço.
  22. O da velha como você já deve saber vai ter uma matriz [3][3] na qual o seu jogo vai ficar registrado, você pode fazer a movimentação entre as células da matriz de duas formas, pedindo as coordenadas da jogada ou fazendo a movimentação mais interativa mesmo. Tipo, quando ele vai movimentar via teclado com o auxílio do gotoxy você vai movimentando também na matriz ao mesmo tempo, daí quando ele apertar tal tecla você vai preencher a posicião atual da matriz e vai escrever na tela a jogada dele. Prefiro a segunda maneira, embora a primeira seja mais simples. Na primeira maneira você só ia ter que ficar atualizando o estado do jogo após cada jogada. você ia precisar também obviamente de uma função pra checar se há vencedor e se houver retornar o código, por exempo 1 para jogador 1 vence, 2 para jogador 2 vence e -1 ou 0 para empate, fica a seu critério. Sem mencionar é claro as funções das jogadas do player 1 e do player 2.
  23. Ark

    Interface

    Em se tratando de API's eu recomendo o wxwidgets, tem vários tutoriais no site oficial: http://www.wxwidgets.org/docs/tutorials.htm Esses aqui também são bons, também e wxwidgets: http://www.zetcode.com/tutorials/wxwidgetstutorial/ Esses tutoriais introdutórios da profa. Isabel Harb Manssour sobre OpenGL são excelentes: http://www.inf.pucrs.br/~manssour/OpenGL/Tutorial.html Abraço.
  24. hehehe, desculpa pelo pascal cara, mas o lado bom é que é bem compreenssível, já que pascal seria como um portugol, espero que dê pra ajudar em alguma coisa, mas você já sabe como fazer pra pegar os resultados? O seu jogo de velha vai ser Humano x Humano? Abraço.
  25. cara, eu já fiz um jogo da velha desse quando eu tava estudando lógica de programação, mas tá em pascal... :rolleyes: Eu sei que essa não é seção de Pascal, mas já que você pediu: Program jogodavelha; uses crt; VAR campo: array[1..3, 1..3] of integer; vencedor: integer; empate: boolean; tecla: char; Procedure tela; VAR lin,col: integer; Begin for lin:=13 to 19 do begin gotoxy(35,lin); write(#177); gotoxy(37,lin); write(#177); gotoxy(39,lin); write(#177); gotoxy(41,lin); write(#177); end; for col:=35 to 41 do begin gotoxy(col,13); write(#177); gotoxy(col,15); write(#177); gotoxy(col,17); write(#177); gotoxy(col,19); write(#177); end; End; Procedure joga; VAR lin, lin2, lin3, col, col2, col3: integer; para: boolean; Begin lin:=16; {linha da tela} col:=38; {coluna da tela} lin2:=2; {linha da matriz} col2:=2; {coluna da matriz} gotoxy(col,lin); repeat tecla:=readkey; if (tecla='w') and (lin>14){limitacao de linhas pra matriz} then begin lin:=lin-2; lin2:=lin2-1; end; if (tecla='a') and (col>36){limita coluna esq} then begin col:=col-2; col2:=col2-1; end; if (tecla='d') and (col<40){limite coluna dir} then begin col:=col+2; col2:=col2+1; end; if (tecla='s') and (lin<18){limita lin baixo} then begin lin:=lin+2; lin2:=lin2+1; end; if (tecla='b') AND (campo[lin2,col2]=0) {tem que tar zerado pra preencher}then begin campo[lin2,col2]:=2; {2 por convencao} gotoxy(col,lin); write('o'); end; if (tecla='x') AND (campo[lin2,col2]=0){mesma coisa} then { e campo[lin2,col2]=0 para só preencher uma vez, pra não trapacear XD } begin campo[lin2,col2]:=1; {1 por convencao} gotoxy(col,lin); write('x'); end; gotoxy(col,lin); if (campo[1,1]<>0) AND (campo[1,1]=campo[1,2]) AND (campo[1,2]=campo[1,3]) then vencedor:=campo[1,1]; if (campo[1,1]<>0) and (campo[1,1]=campo[2,1]) AND (campo[2,1]=campo[3,1]) then vencedor:=campo[1,1]; if (campo[3,1]<>0) and (campo[3,1]=campo[3,2]) AND (campo[3,2]=campo[3,3]) then vencedor:=campo[3,1]; if (campo[1,3]<>0) and (campo[1,3]=campo[2,3]) AND (campo[2,3]=campo[3,3]) then vencedor:=campo[1,3]; if (campo[1,1]<>0) and (campo[1,1]=campo[2,2]) AND (campo[2,2]=campo[3,3]) then vencedor:=campo[1,1]; if (campo[1,3]<>0) and (campo[3,1]=campo[2,2]) AND (campo[2,2]=campo[1,3]) then vencedor:=campo[1,3]; if (campo[1,2]<>0) and (campo[1,2]=campo[2,2]) and (campo[2,2]=campo[3,2]) then vencedor:=campo[1,2]; if (campo[2,1]<>0)and(campo[2,1]=campo[2,2])and(campo[2,2]=campo[2,3]) then vencedor:=campo[2,1]; para:=True; lin3:=1; while lin3<=3 do begin col3:=1; while col3<=3 do begin if (campo[lin3,col3]<>0) then para:=True else begin para:=False; col3:=3; lin3:=3; end; col3:=col3+1; end; lin3:=lin3+1; end; until (tecla=#27) OR (vencedor<>0) OR (para); End; Begin repeat clrscr; tela; joga; if vencedor<>0 then begin if vencedor=1 then begin gotoxy(40,23); write('O jogador X venceu!'); end; if vencedor=2 then begin gotoxy(40,23); write('O jogador O venceu!'); end; end; if (tecla<>#27) and (vencedor=0) then begin gotoxy(40,23); write('DEU EMPATE!!!'); end; readkey; until tecla<>#27; readkey; End. Se você precisar de mais alguma ajuda com o algorítmo e/ou como implementar em C, ficarei grato em ajudar. Abraço.
×
×
  • Criar Novo...