Ir para conteúdo
Fórum Script Brasil

Durub

Moderadores
  • Total de itens

    788
  • Registro em

  • Última visita

Tudo que Durub postou

  1. Durub

    Ajuda em C

    Você aprendeu sobre strings nas aulas? Pois é. Você não compara strings assim, e sim com strcmp da string.h, e sigla não é uma string. Você deve declara-lá assim: char sigla[3]; Abraços.
  2. Durub

    ler arquivo txt

    Pegar o caractere? Use o fgetc. (http://www.cplusplus.com/reference/clibrar...tdio/fgetc.html) Exemplo: caractere = fgetc(arquivo); Abraços.
  3. Durub

    Deadlock

    http://pt.wikipedia.org/wiki/Deadlock http://superlogica.com/faq/00094 (Esse só o primeiro parágrafo) Abraços.
  4. Só vai precisar da string.h caso você utilize a segunda linha. Pois então, os parâmetros: str - A string que você vai receber os dados 100 - A quantidade de bytes que é para ler (como a string possui o tamanho 100, queremos ler até o final dela) stdin - A stream de entrada, o que o usuário digita vai para esta stream A segunda linha: O fgets coloca um caractere '\n' (nova linha), por isso a remoção dele é, às vezes, melhor. Tem uma explicação para isto, mas dizendo assim já da para você entender. De qualquer forma, não precisa utiliza-lâ, principalmente em um programa assim. Abraços.
  5. http://scriptbrasil.com.br/forum/index.php?showtopic=127670 Vai ter que dar uma pequena modificada, mas dá para você ter uma base. Abraços.
  6. Não utilizando scanf. Use o fgets. Não esqueça de retirar o '\n' da string. fgets(str, 100, stdin); str[strlen(str) - 1] = ''; PS: Vai precisar da string.h. Abraços.
  7. O que você já fez? Abraços.
  8. Durub

    ler arquivo txt

    Leia caractere por caractere. Quando chegar no <, leia o nome da tag, então, ao chegar ao >, comece lendo o conteúdo da tag, novamente, quando chegar ao <, leia o nome da tag até o >, caso for igual ao nome da abertura, é o fim. Exemplo: <produto>exemplo</produto> arquivo = abrir text.txt caractere = pega caractere arquivo se caractere = '<' caractere = pega caractere arquivo enquanto caractere != '>' tag = tag + caractere caractere = pega caractere arquivo final caractere = pega caractere arquivo enquanto caractere != '<' conteudo = conteudo + caractere caractere = pega caractere arquivo final final Com esse "algoritmo" dá para você ter uma base de como tem que fazer. Abraços.
  9. Durub

    Identificar setas

    Windows? http://msdn.microsoft.com/en-us/library/ms645530(VS.85).aspx Abraços.
  10. Durub

    Dúvida em Arquivo

    Você está dando return no main em um local "inapropriado" (digo inapropriado pois você não quer esse tipo de comportamento), isso irá fechar o programa. Também faltou o %f no printf. Também tire o fclose e o printf do loop. Coloque após o fechamento do while. (...) if (n <= nota) { nota=n; } (...) printf("Menor Nota: %f\n", nota); (...) Só editar. Abraços.
  11. Você não pode retornar mais de um valor por função (exemplo: return 31, 30). Você deve passar por referência o valor e então escrever no valor apontado pelo ponteiro. Exemplo: #include <stdio.h> int x(int *y) { *y = 50; } int main(void) int j; x(&j); printf("%d", j); /* Imprime 50 */ return 0; } Outra coisa, você está escrevendo código depois de um return, ele não vai executar. O compilador deveria emitir um warning de unreachable code. Abraços.
  12. Durub

    Sublinhar palavras..

    Windows: pdcurses. Linux: ncurses. Abraços.
  13. Eu gosto de C++ pela liberdade que ele oferece, você pode trabalhar tanto em baixo nível como alto nível. Depende muito do que você quer fazer. C++ dá para você poder fazer praticamente tudo, é uma linguagem rápida, porém é um pouco "difícil" de programar. Java é ótimo para programas que a velocidade não seja um fator crítico, além de oferecer uma API bem rica e a portabilidade. .NET também é bom para programas que a velocidade não seja um fator muito crítico, e está "se inserindo" um "pouco" no mercado de jogos, principalmente depois do XNA, da Microsoft. Enfim, "the right tool for the right job". Abraços.
  14. Durub

    Leitura De Arquivo C

    Sujeito a buffer overflows? fgets é uma função segura para ler input de qualquer stream, ela recebe quantos caracteres precisa ler. Causa buffer overflow somente no caso de o programador especificar erroneamente a quantidade de bytes. Abraços.
  15. Durub

    entrada em c

    O input do C é line buffered. O que você pode fazer é usar o conio.h da Borland no Windows ou ncurses no Linux. No caso, a função getch. Abraços.
  16. Durub

    Função

    Tente mudar esta linha (a do A_Minuto também): B_Minuto = (float)atoi(minuto_2.c_str())/60; Troque o operador / pelo operador %. Quando você fizer isso, os minutos nunca passaram de 60, então você pode retirar os dois if's. Abraços.
  17. Durub

    (Resolvido) Dúvidas simples

    Sim, o new cuida de toda parte "low level" da alocação. Por exemplo, em C: #include <stdio.h> #include <stdlib.h> int main(void) { float *p; p = (float *) malloc(sizeof(float) * 100); /* Para alocar 100 elementos */ return 1; } Já em C++: #include <iostream> int main(void) { float *p; p = new float[100]; /* O new sabe que float possui 4 bytes */ delete[] p; return 1; } Mas não, não é somente isso. Quando a alocação não é válida, ele joga uma exceção (std::bad_alloc) ou chama uma função. (que você escolhe pelo set_new_handler (acho que é do <new>)) Em C: #include <stdio.h> #include <stdlib.h> int main(void) { void *address; address = malloc(5000); if(address == NULL) return 1; return 0; } Em C++: #include <iostream> #include <new> void newHandler(void); int main(void) { int *p; std::set_new_handler(newHandler); /* Para usar a exceção, comente esta linha */ try { x = new int[50000]; } catch(std::bad_alloc) { std::cout << "Alocação falhou."; } return 0; } void newHandler(void) { std::cout << "Alocação falhou."; } Ainda, o C++ permite fazer um overload nos operadores new, new[], delete e delete[]. Exemplo: #include <iostream> void* operator new(unsigned int bytes); int main(void) { int *x; int *y; x = new int; y = new int; return 0; } void* operator new(unsigned int bytes) { std::cout << "Tentando alocar " << bytes << " bytes."; /* Note que aqui não vai alocar nada, só mostrar essa frase e retornar 0 */ return (void *) 0; } Output: Tentando alocar 2 bytes. Tentando alocar 2 bytes. No geral, é isso. Abraços.
  18. Durub

    (Resolvido) Dúvidas simples

    new e delete possuem menos chances de o usuário errar na chamada e uso. Se for utilizar realloc, precisa do malloc mesmo, é uma exceção no C++. (Quer dizer, não que não possa usar malloc, mas não é recomendado) widechar é uma string aonde cada valor tem 2 bytes, ao invés de 1. Abraços.
  19. Durub

    Função

    Use a função strtok do string.h e a atof (para float, ou atoi para int) do stdlib.h. E só para você saber, você não precisa do tipo float neste caso. int resolve. Abraços.
  20. Durub

    Char para inteiro

    void lerCadeia(char *szString, void (*callback)(int)) { char *pCadeia; pCadeia = strtok(szString, " "); while(pCadeia != NULL) { (*callback)(atoi(pCadeia)); pCadeia = strtok(NULL, " "); } } Escrevi esta função rapidamente aqui pois tenho que sair. Ela requere o stdlib.h e o string.h. Use-a assim: O primeiro argumento é o que você recebe do usuário. (exemplo: 80 32 10 45) O segundo é uma função (no modo void nome(int arg)), que vai ser chamada a cada elemento encontrado na string. Exemplo de execução: /* As "regras" do C não são cumpridas aqui, então este código não vai rodar em um compilador, é só para ilustração */ String = "50 30 32"; lerCadeia(String, funcao); /* O que o lerCadeia vai fazer é: */ funcao(50); funcao(30); funcao(32); Logo se você precisar fazer algum cálculo com o valor antes, escreva uma função que receba um valor int, manipule-o e então adicione-o a lista. Lembre-se: para passar a função como argumento, é só o nome dela. (exemplo: void funcao(int x); lerCadeia(string, funcao); ) Abraços.
  21. Durub

    struct dentro de vetor

    struct Livro { char titulo[20]; char categoria[20]; int paginas; float preço; public: void inserir(); void imprimir(); }; int main(void) { struct Livro exemplar[3]; exemplar[0].inserir(); exemplar[1].imprimir(); exemplar[2].paginas = 50; return 0; } Abraços.
  22. Durub

    Ponteiro

    Ou usar o algoritmo XOR swap. void xorSwap(int *x, int *y) { *x ^= *y; *y ^= *x; *x ^= *y; } Talvez, pela descrição seja exatamente isto que você quer (ou querem que você faça) fazer. Porém, isto é somente recomendado em sistemas aonde a quantidade de memória é muito restrita. (Sistemas embarcados, por exemplo) Em PC's simplesmente não vale a pena (fazer o XOR swap é mais demorado), melhor usar um buffer como o kuroi falou. Abraços.
  23. O include e o printf também estão errados. O nome correto do include é iostream. O printf deveria estar assim: printf("%s voce tem %d anos", Nome, idade) Também falta colocar a referência (&) em dois scanf's. Abraços.
  24. Durub

    Dividir arquivo .h

    Coloque um ifndef em cada header. #ifndef HEADER_XX #define HEADER_XX /* código */ #endif Abraços.
  25. Durub

    ajuda com vetores

    Poste como está seu código. Abraços.
×
×
  • Criar Novo...