Jump to content

Pulse

Members
  • Content count

    71
  • Joined

  • Last visited

Community Reputation

0 Comum

2 Followers

About Pulse

Recent Profile Visitors

250 profile views
  1. Escreva uma função que receba uma lista encadeada e devolve o endereço de um nó que esteja o mais próximo possível do meio da lista. Faça isso sem contar explicitamente o número de nós da lista. Não queria o código do exercício e sim uma ideia de como resolvê-lo, pois não consegui encontrar uma lógica se resolução sem contar o número de nós na lista.
  2. Estou tentando realizar duas funções: abrir um arquivo .txt e escrever algo nele, usando diferentes procedimentos em C. Entretanto o programa trava durante a execução. Além disso, percebi que mesmo tentando "printar", no arquivo aberto em outra função, na função principal - main - o erro continua ocorrendo. #include <stdio.h> void aponta(FILE* teste) { teste = fopen("arquivo.txt", "w"); } void printa(FILE* teste) { fprintf(teste, "ola mundo"); } int main () { FILE* teste; aponta(teste); printa(teste); return 0; }
  3. Pulse

    Conveter char em int

    Escreva uma função que dado uma string contendo uma sequência de 0 e 1 representando um número binário, retorne o número em base decimal. Para converter um número binário (na base 2, com algarismos 0 ou 1) em um número na base decimal (com algarismos de 0 a 9), se multiplica cada dígito binário por sua potência e depois soma-se. Cada potência é calculada como 2n, onde 2 é a base e n é o expoente. O expoente é indicado pela posição do dígito, sendo o mais a direita posição 0, o seguinte posição 1, etc. #include <stdio.h> #include <stdlib.h> #include <math.h> int binario(char*, int); int main () { char bin[10]; printf("Digite um numero binario"); gets(bin); printf("Numero convertido em decimal = %d", binario(bin, strlen(bin))); return 0; } int binario(char bin[], int ts) { int dec=0, i, aux[ts]; for(i=0; i<ts; i++) { aux[ts] = atoi(bin[i]); dec = dec + (aux*pow(2, ts-1-i)); } return dec; } Entretanto o programa trava durante a execução, acredito que seja por conta do comando atoi, que pesquisando aqui encontrei que precisa receber um char* - string- e não apenas um caractere char. Há alguma maneira alternativa de realizar a conversão de char em int?
  4. Pulse

    Rotacionar matriz em 90 graus

    Preciso criar um algoritmo para rotacionar uma matriz em 90 graus, sem utilizar matrizes auxiliares. Tentativa: #include <stdio.h> int main () { int i, j, original = 0, linha, coluna, aux, N = 10, l, aux2, c, t; int mat[N][N]; for(i=0; i<N; i++) { for(j=0; j<N; j++) { mat[i][j] = original; original++; } } for(i=0; i<N; i++) { for(j=0; j<N; j++) { printf("%d ", mat[i][j]); } printf("\n"); } printf("\n"); printf("\n"); printf("\n"); printf("\n"); for(l=0; l<N; l++) { for(c=0; c<N; c++) { t = mat[l][c]; mat[l][c] = mat[c][N-l-1]; mat[c][N-l-1] = mat[N-l-1][N-c-1]; mat[N-l-1][N-c-1] = mat[N-c-1][l]; mat[N-c-1][l] = t; } } for(i=0; i<N; i++) { for(j=0; j<N; j++) { printf("%d ", mat[i][j]); } printf("\n"); } } Entretanto a matriz final é idêntica a matriz original: http://ideone.com/m42bK4
  5. Pulse

    Condicional com ponteiro

    Declare e inicie um vetor de strings e mostre-as, uma a uma, recorrendo simplesmente a ponteiros #include <stdio.h> #define N 3 int main () { char vetor[N][20] = {"Ola", "Bom", "Dia"}; char (*ptr)[20] = vetor; char *p; while(ptr-vetor<N) { p = ptr; while(*p) { putchar(*p++); } putchar('\n'); ptr++; } } Ao tentar fazer algumas mudanças nesse código e mudar a condição do while para, por exemplo, "p != NULL", obtenho erros no programa. O que significa a condição "while(*p)"?
  6. Pulse

    Programa em C - Somatorio Valores Multiplos.

    Não vou fazer o programa pra você, mas seguem algumas ideias básicas que você deve usar na resolução: 1) Com o comando "for", você pode inicializar uma variável, conferir uma condição e atualizar o valor desta mesma variável. Por exemplo: você declara uma variável i, no for você pode inicializar ela com 5, colocar como condição que ela seja sempre menor ou igual a 5100 e atualizar ela com 1. Dessa forma você vai percorrer todos números até 5100. 2) Se um número é divisível por 2 ou 3 então o resto da divisão dele por esses valores é 0 3) Use um condicional ("if" seria o mais indicado neste caso) aliado à ideia 2 e dentro desta condicional uma variável auxiliar na qual sejam somados os valores. Lembre-se de inicializar logo no começo do programa essa variável auxiliar com 0, para evitar problemas com lixo de memória.
  7. Pulse

    Soma máxima em vetor

    Dada uma seqüência de n números inteiros, determinar um segmento de soma máxima. Exemplo: Na seqüência 5, 2, -2, -7, 3, 14, 10, -3, 9, -6, 4, 1 , a soma do segmento é 33. #include <stdio.h> int main () { int n, i, j=0, cont=0, cont2=0, aux=0, maior=-999, cont3=0; printf("Quantos numeros estarão no seu vetor?"); scanf("%d", &n); int vetor[n]; for(i=0; i<n; i++) { printf("Digite o %d valor do seu vetor", i+1); scanf("%d", &vetor); } for(i=0; i<n; i++) { while(cont<n) { aux+=vetor[j]; cont++; j++; cont2++; if(cont2 == i+1) { if(aux>maior) { maior = aux; } aux=0; cont2=0; cont3++; j = cont3; } } cont=0; cont3=0; } printf("%d ", maior); } Sempre encontro 31 aqui, qual meu erro?
  8. Pulse

    Contabilizar vogais em string

    Faça um programa que mostre as vogais que aparece numa frase juntamente com o número de aparições #include <stdio.h> #include <string.h> int main () { char frase[30]; int i, conta = 0, conte = 0, conti = 0, conto = 0, contu = 0; puts("Digite uma frase"); fgets(frase, 30, stdin); for(i=0; i<30; i++) { switch(frase[i]) { case 'a': conta++; break; case 'A': conta++; break; case 'e': conte++; break; case 'E': conte++; break; case 'i': conti++; break; case 'I': conti++; break; case 'o': conto++; break; case 'O': conto++; break; case 'u': contu++; break; case 'U': contu++; break; default: break; } } printf("A = %d vezes \n E = %d vezes \n I = %d vezes \n O = %d vezes \n U = %d vezes", conta, conte, conti, conto, contu); return 0; } O problema é que está havendo algumas contabilizações erradas, do u por exemplo, em alguns exemplos coloquei frases como: "amanha nao tem aula" e no final é exibido que há 3 u's na string.
  9. Como proceder quando quero passar um arquivo que eu criei e abri na main pra uma outra função para que eu possa editá-lo nessa segunda?
  10. Pulse

    Erro com números/struct

    Estou fazendo alguns testes usando scruct's, ponteiros, vetores de struct's e vetores de ponteiros com o código abaixo: #include <stdio.h> typedef struct{ int idade; char sexo; int num_filhos; float salario; } dados; int main () { dados entrevistado[1]; int i; float *salarios[1]; printf("Salario:\n"); scanf("%f", &entrevistado[0].salario); salarios[0] = &entrevistado[0].salario; printf("%f", *salarios[0]); } O problema é que ao entrar com um número o que é printado depois é uma aproximação dele e não o número exato. Como no caso:
  11. Pulse

    Busca com recursividade

    Busca sequencial em um veto desordenado que retorna a posição da primeira ocorrência de um elemento procurado usando uma estratégia similar a da busca binaria. Dica: Se não é o elemento do meio, procure dos dois lados e retorne o menor dos índices encontrados. Se for o elemento do meio, continue a busca apenas do lado esquerdo, retornando a posição de lá se encontrar e o meio senão encontrar #include <stdio.h> int busca(int vetor[], int n, int posi, int inicio, int fim) { posi = (inicio+fim)/2; if(vetor[posi] == n) { return busca(vetor, n, posi, inicio, posi); } else { return busca(vetor, n, posi, posi, fim); } } int main () { int vetor={5,6,8,9}, n, inicio=0, fim=4, posi; scanf("%d", &n); printf("%d", busca(vetor, n, posi, inicio, fim)); } Isso foi o máximo que eu consegui fazer nas minhas tentativas.
  12. Pulse

    Hiperfatorial

    O hiperfatorial de um número N, escrito H(n), é definido por Faça uma função recursiva que receba um número inteiro positivo N e retorne o hiperfatorial desse número. #include <stdio.h> int hiperfatorial(int n, int cont) { if(cont==0) { cont = n; return n*hiperfatorial(n-1, cont); } else { return hiperfatorial(n, cont-1); } } int main () { int n, cont; cont = n; hiperfatorial(n, cont); } Não deu certo o que eu fiz até agora e não consegui pensar de outra forma.
  13. Pulse

    Fatorial quádruplo

    O fatorial quádruplo de um número N é dado por (2n)!/(n)! Faça uma função recursiva que receba um número inteiro positivo N e retorne o fatorial quádruplo desse número. #include <stdio.h> int fatorial(int n) { if(n>0) { return n*fatorial(n-1); } else { return 1; } } int main () { int n, fat; printf("Digite n"); scanf("%d", &n); fat = fatorial(2*n) / fatorial(n); printf("Fatorial quadruplo de %d eh: %d", n, fat); } Na verdade deste jeito que eu fiz consigo obter o resultado correto e tudo, mas acho que segue um pouco a proposta do exercício. Há alguma forma de resolver que já tenha como retorno o resultado final do fatorial quádruplo?
  14. Pulse

    Inverter vetor c/ recursividade

    Crie um programa em C que receba um vetor de números reais com 100 elementos. Escreva uma função recursiva que inverta ordem dos elementos presentes no vetor. #include <stdio.h> int inverte(int vetor[], int, int); int main() { int p=0, i; int u=99; int vetor[100]; for(i=0; i<100; i++) { scanf("%d", &vetor[i]); } if(inverte(vetor, p, u) == 0) { for(i=0; i<100; i++) { printf("%d", vetor[i]); } } } int inverte(int vetor[100], int p, int u) { int aux; if(p<50 && u<50) { return 0; } else { aux = vetor[p]; vetor[p] = vetor[u]; vetor[u] = aux; return inverte(vetor, p+1, u-1); } } Tentei fazer mas tem algo errado no código.
  15. Pulse

    Catalan - recursividade

    Os números de Catalan são definidos pela seguinte recursão: Alguns números desta sequência são: 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786... Faça uma função recursiva que receba um número N e retorne o N-ésimo número de Catalan. #include <stdio.h> float catalan(int); int main () { int n=4; printf("%.2f", catalan(n)); } float catalan(int n) { if(n==0) { return 1; } else if(n>0) { return 2*((2*n) - 1)/(n+1)*catalan(n-1); } } Consegui fazer tudo corretamente, até fiz um teste de mesa com o meu algoritmo para verificar se estava realmente correto e deu tudo certo. Contudo, quando foi compilar deu erro, os números que estão sendo calculados estão errados. Ao informar o número 4, por exemplo, o resultado informado é 8, quando na verdade deveria ser 14.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.