Ir para conteúdo
Fórum Script Brasil

Beraldo

Veteranos
  • Total de itens

    4.466
  • Registro em

  • Última visita

Tudo que Beraldo postou

  1. Nas faz sentido isto: (resposta == '2'); Para que você colocou essas linhas? Compile com o GCC com a opção -Wall e você verá que sairão warnings. Evite usar funções dentro de funções para casos assim. # include <stdio.h> # include <stdlib.h> #define RESET 0 #define BRIGHT 1 #define DIM 2 #define UNDERLINE 3 #define BLINK 4 #define REVERSE 7 #define HIDDEN 8 #define BLACK 0 #define RED 1 #define GREEN 2 #define YELLOW 3 #define BLUE 4 #define MAGENTA 5 #define CYAN 6 #define WHITE 7 void textcolor(int attr, int fg, int bg) { char command[13]; /* Command is the control command to the terminal */ sprintf(command, "%c[%d;%d;%dm", 0x1B, attr, fg + 30, bg + 40); printf("%s", command); } /*----------------*/ void fechar () { char retorno[20], comando[30]; FILE *p = popen("ps | grep 'bash' | awk '{print $1}'", "r"); fgets(retorno, 18,p); pclose(p); sprintf(comando, "kill -9 %s", retorno); system(comando); } /*----------------*/ int main()//?? { char resposta; system("clear"); textcolor(BRIGHT,WHITE, BLACK); printf("\n\n********* Menu *********\n"); textcolor(BRIGHT,WHITE, BLACK); printf("\n JOGO DO SUDOKU \n"); textcolor(BRIGHT,BLUE, BLACK); printf("\n\n1-Novo Jogo\n"); textcolor(BRIGHT,BLUE, BLACK); printf("2-Regras do jogo\n"); textcolor(BRIGHT,BLUE, BLACK); printf("3-Teclas do jogo\n"); textcolor(BRIGHT,BLUE, BLACK); printf("p-Sair do jogo\n"); textcolor(BRIGHT,GREEN, BLACK); printf("\nSeleciona a tua opção e carrega ENTER:\n"); scanf("%c",&resposta); switch(resposta) { case ('1'): (resposta == '1'); system("clear"); textcolor(BRIGHT,WHITE, BLACK); printf("\n\n\n\nNíveis de dificuldade:\n"); textcolor(BRIGHT,BLUE, BLACK); printf("\n1 - Fácil\n2 - Normal (Médio)\n3 - Dificil\n"); textcolor(BRIGHT,GREEN, BLACK); printf("\nQual a dificuldade que pretende?\n\n"); scanf("%c",&resposta); break; case ('2'): (resposta == '2'); system("clear"); textcolor(BRIGHT,WHITE, BLACK); printf("\n\n\n\nAS REGRAS DO JOGO\n\n"); textcolor(BRIGHT,BLUE, BLACK); printf("\nSudoku é um jogo de raciocínio e lógica. Apesar de ser bastante simples, é divertido e viciante. Basta completar cada linha, coluna e quadrado 3x3 com números de 1 a 9. Não há nenhum tipo de matemática envolvida.\n\n"); //RETORNA break; case ('3'): (resposta == '3'); system("clear"); textcolor(BRIGHT,WHITE, BLACK); printf("\n\n\n\nTeclas do jogo\n"); textcolor(BRIGHT,BLUE, BLACK); printf("\na=Mover para a esquerda\nd=Mover para a direita\ns=Mover para baixo\nw=Mover para cima\np=Sair do jogo\n\n"); break; case('p'): (resposta == 'p'); fechar(); break; } return 0; }
  2. Agora se parece mais comigo... :P Ficou bonita a rima de Geraldo e Beraldo. :lol:
  3. :D Desculpa clássica! Não resta dúvida. :D hehehe Ótimo link. Adicionei-o no meu post. ;)
  4. o " p" é apenas uma tecla. Não tem a ver com nenhuma função do C. Isso depende do seu programa. Para sair, você pdoe usar a letra que quiser: p, s, q, x, z, y.. o que quiser. A string dentro do popen() é um comando do bash, não do C. "ps" lista os processos; grep filltra a saída e mostra somente a linha em que há a palavra bash; awk foi usado para mostrar somente a primira coluna da string. Veja as manpages $ man ps $ man grep $ man awk
  5. a letra "p" digitada não tem nada a ver com popen. void fechar () { char retorno[20], comando[30]; FILE *p = popen("ps | grep 'bash' | awk '{print $1}'", "r"); fgets(retorno, 18, p); pclose(p); sprintf(comando, "kill -9 %s", retorno); system(comando); } int main() { char c; c = getchar(); if (c == 'p') fechar(); return 0; }
  6. uma saída: #include <stdio.h> #include <string.h> int main() { char nome_completo[100], partes[10][50]; int i, j = 0, nome = 0, size; printf("Digite seu nome completo: "); fgets(nome_completo, 98, stdin); size = strlen(nome_completo); for (i = 0; i < size; i++) { if (nome_completo[i] == ' ' || nome_completo[i] == '\n') { partes[nome][j] = ''; j = 0; i++; nome++; } partes[nome][j] = nome_completo[i]; j++; } for (i = 0; i < nome; i++) { printf("%s\n", partes[i]); } return 0; } A parte mais fácil fica com vocês.
  7. O que fiz não pega tecla do teclado. É apenas uma função para fechar a janela do bash. Se quiser fazer uma espécie de menu, você deve verificar a tecla digitada. Se for "p", então chame a função que postei. Qual parte da função você não entendeu? Leu sobre a função popen()?
  8. O protótipo de uma função não precisa ter o seu tamanho nem o nome do parâmetro. Logo, basta isto: int contar(char *); Se vocÊ está usando a biblioteca string.h, use a função strlen(). Ir até 29 não faz sentido, uma vez que a string fornecida pode ter somente 5 caracteres, por exemplo. Para um problema assim, switch fica melhor que IF. Ele tam,bém facilita a visualização. Lembre-se de adicionar as vogais maiúsculas, para o programa ficar correto Você definiu contar() como uma função que retorna int, mas não estava retornando nada. O ideal é retornar int e manter a exibição do texto na função main Você inclui stdlib.h, mas não usou nenhuma função dessa biblioteca, então nem precisa incluí-la #include <stdio.h> #include <string.h> int contar(char *); int main() { char str[30]; int vogais; printf("Digite uma string \n"); fgets(str, 28, stdin); vogais = contar(str); printf("Há %d vogais na string %s\n", vogais, str); return 0; } int contar(char *str) { int i, count = 0, size = strlen(str); for(i=0;i<size;i++) { switch (str[i]) { case 'a': case 'A': case 'e': case 'E': case 'I': case 'i': case 'O': case 'o': case 'u': case 'U': count++; break; } } return count; } Quanto ao exercício 7, você terá de separar cada um dos nomes. Percorra a string, caractere por caractere, e vá copiando-os para outra string. Ao achar um espaço, copie o próximo conteúdo para outra string. Usar um vetor de strings é uma boa saída.
  9. a diferença de você digitar diretamente exit no bash e executar sysem("exit") ou exit(1) é quem está executando o programa. Você abriu o bash, logo você pode fechá-lo. Mas o programa C não abriu o bash, logo não pode fechá-lo com exit. Para saber o número do processo, dá para usar o comando ps do bash. Creio que o C não tenha nada nativo para fazer isso. VocÊ tem que usar popen() e depois tratar o resultado. http://forum.imasters.uol.com.br/index.php...t&p=1152714 Acabei fazendo aqui para testar e ver se eu não estava falando besteira. E deu certo. Veja: int main () { char retorno[20], comando[30]; FILE *p = popen("ps | grep 'bash' | awk '{print $1}'", "r"); fgets(retorno, 18, p); pclose(p); sprintf(comando, "kill -9 %s", retorno); system(comando); return 0; }
  10. parabéns! Agora não precisam ficar fazendo café para todo mundo... ou sim....
  11. Desse jeito, há dá para fechar a janela, seja com exit() ou system("exit"). O bash está executando o programa C, logo o programa só pode fechar ele mesmo. Se quiser fechar o bash, descubra o PID (ID do processo) referente a ele e use kill: system("kill -9 id_do_processo");
  12. Beraldo

    grupo de estudo

    Não precisamos votar em quem postará exercícios. Todos poderão fazer isso. Qualquer pessoa pode achar um exercício interessante na Internet e postá-lo. ;) Uma obrsevação: sempre que forem responder a uma dúvida no sub-fórum do Grupo de Estudos, procurem fazer uma resposta bem completa, com exemplos e algum link, se julgar necessário. Digo isso pois, visto que será um Grupo de Estudos, creio que, quanto mais cmopleto o conteúdo estiver, melhor para os leitores. ;)
  13. Você não precisa de um loop para exibir o terceiro caractere. VocÊ sabe, exatamente, o que quer exibir, então basta isto: int main() { char str[10]; printf("Digite uma string \n"); fgets(str, 10, stdin); printf("O terceiro caractere e: %c \n",str[2]); return 0; } VocÊ está mostrando um char, logo use %c, e não %s Uma observação importante: uma string, em C, termina em '\ 0' (sem espaço). Logo, se declararmos char str[10], estaremos possibilitando a inserção de apenas 9 caracteres, pois o décimo deverá ser o '\ 0'. ALém disso, considerando que fgets() adiciona o '\n' da string, o certo seria limitar a leitura de fgets() a 8 bytes e não 10. Genericamente: no fgets(), limite SEMPRE o tamanho da string menos duas unidades: char str[10]; fgets(str, 8, stdin); Vale ressaltar: NÃO USE GETS(). USE FGETS() http://www.linhadecodigo.com.br/Dica.aspx?id=1141 http://wiki.answers.com/Q/Between_fgets_an..._to_use_and_why http://publib.boulder.ibm.com/infocenter/s...setrf1/gets.htm Mais em: http://www.google.com/search?ie=UTF-8&...mp;q=gets+fgets
  14. Concordo parcialmente. Ao meu ver, bastam duas pessoas querendo criar um grupo de estudo. Se criar o sub-fórum, há grande probabilidade de mais membros se interessarem e participarem do grupo. Mas pode ocorrer o contrário: 30 se animam para formar o grupo e depois só um mantém a vontade inicial; os outros desistem.
  15. Beraldo

    typedef void HANDLE

    Não seria void* em vez de somente void?
  16. Vou colocar aqui o conteúdo que usei na faculdade (UFPR) para estudar C. Há um guia bem completo e diversas listas de exercícios. Aproveitei e coloquei os links para as duas provas que tivemos no semestre. É bom para testar os conhecimentos depois de estudar todo o conteúdo e fazer todos os exercícios das listas. ;) Tudo isso foi feito em um semestre. É bom não se estender muito para estudar isso. Guia da Linguagem C - Notas de Aula (Profa. Carmem Hara e Prof. Wagner Zola - UFPR): http://www.inf.ufpr.br/nicolui/grad/ci067/Docs/NotasAula/ Versão em PDF: http://www.inf.ufpr.br/nicolui/grad/ci067/Docs/NotasAula.pdf Lista de Exercícios: Lista 1 - Conceitos Gerais: http://www.inf.ufpr.br/nicolui/grad/ci067/...s_01/index.html Lista 2 - Strings: http://www.inf.ufpr.br/nicolui/grad/ci067/...s_02/index.html Lista 3 - Ponteiros e Alocação Dinâmica: http://www.inf.ufpr.br/nicolui/grad/ci067/...s_03/index.html Lista 4 - Arquivos: http://www.inf.ufpr.br/nicolui/grad/ci067/...s_04/index.html Lista 5 - Recursividade: http://www.inf.ufpr.br/nicolui/grad/ci067/...s_05/index.html Lista 6 - Makefiles e Depuração (voltado para sistemas Unix): http://www.inf.ufpr.br/nicolui/grad/ci067/...s_06/index.html Lista 7 - Listas, Pilhas e Filas: http://www.inf.ufpr.br/nicolui/grad/ci067/...s_07/index.html Lista complementar de exercícios: http://www.inf.ufpr.br/nicolui/grad/ci067/...s_08/index.html Provas: Prova 1: http://geocities.com/rbchaiben/p1-20082.pdf Prova 2: http://geocities.com/rbchaiben/p2-20082.pdf E aqui está o link para a especificação do trabalho da disciplina nesse semestre: http://geocities.com/rbchaiben/labirinto.html ----- Outras contribuições: Projeto de Algoritmos Contribuição de OSJunior 57 Exercícios de C Contribuição de viciado Apostila com exercícios resolvidos: Link para download: http://www.si-fgs.h-br.com/forum/download/file.php?id=11 Link para o tópico: http://www.si-fgs.h-br.com/forum/viewtopic.php?f=77&t=29 Contribuição de GabrielCardelli Sockets em C/C++ http://www.inf.ufrgs.br/procpar/disc/inf01...rte1.html#intro http://www.di.ufpe.br/~dmts/sockets/ <~ link com download de apostilas e exercícios http://olinux.uol.com.br/artigos/370/1.html <~ bem completo http://www-usr.inf.ufsm.br/~giovani/sockets.html http://www.dicas-l.com.br/dicas-l/20041219.php <~ c++ Contribuiçã de wendell93
  17. Legal. Agora é estudar e estudar. :)
  18. Beraldo

    szInput ?

    Procure por tempo de execução Há muito conteúdo sobre isso http://www.google.com/search?ie=UTF-8&...empo+execucao+c
  19. Beraldo

    String

    #include <stdio.h> #include <stdlib.h> #include <string.h> int main () { char a[20], aux; int i, j, k, len; printf("String desordenada\n\n"); printf("Digite a string:"); fgets(a, 18, stdin); len = strlen(a); k = len - 1; for(i=0;i<len;i++); { for (j = 0; j < k; j++, k--) { if (a[j] > a[j+1]) { aux = a[j]; a[j] = a[j+1]; a[j+1] = aux; } } } printf("\nString Ordenada\n\n"); printf("%s\n\n", a); return 0; } http://pt.wikipedia.org/wiki/Bubble_sort#C Não use gets. Use fgets
  20. Beraldo

    szInput ?

    Isso é uma cadeia de caracteres (string). Pode armazenar 255 caracteres (o 256o. caractere é o '\ 0' - sem espaço)
  21. Veja a função rand() e o operador "%", que é o resto da divisão por um número
  22. Pensei na Floor Jansen e ele pensou que era Sharon Den Adel. Ele acertou quando pensei na Simone Simons
  23. Ele acertou até o Padre Adelir Decalli (sei lá como escreve), o Padre Voador! :lol:
×
×
  • Criar Novo...