Ark
Membros-
Total de itens
31 -
Registro em
-
Última visita
Sobre Ark
- Data de Nascimento 18/05/1989
Contatos
-
MSN
adeon7r@hotmail.com
-
Website URL
http://
-
ICQ
0
Perfil
-
Location
Sobral - CE
Ark's Achievements
0
Reputação
-
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?
-
Aew galera, consegui resolver o problema! Obrigado a todos, um abraço =]
-
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
-
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
-
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
-
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
-
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.
-
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.
-
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.
-
Valeu pela ajuda cara, deu certo aqui! Obrigado pela paciência também. :lol: Abraço.
-
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?
-
Gostei dessa Beraldo! :D Desculpe a ignorancia, mas o que funções tem o header iostream.h, e ele é do C++, certo? :huh:
-
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.
-
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.
-
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.