Jump to content

Search the Community

Showing results for tags 'ponteiros'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Q&A Desenvolvimento
    • Perguntas e respostas rápidas
  • Web Development
    • HTML e CSS
    • Javascript
    • PHP
    • Ruby
    • Python
    • Java
    • .NET
    • Docker, Kubernets and other environments
    • WordPress
    • Mobile
    • Agile
    • Desenvolvimento de Games
    • Banco de Dados
    • Design and UX
    • Algoritmos & Outras Tecnologias
  • Entretenimento e uso pessoal
    • Segurança & Malwares
    • Geral
    • iMasters's pub

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Google+


Hangouts


Skype


Twitter


deviantART


Github


Flickr


LinkedIn


Pinterest


Facebook


Site Pessoal


Localização


Interesses

Found 7 results

  1. Eu estive fazendo um programa em C que lia a string1 e apagava a primeira ocorrência da string2. Na string1:"O Rato Roeu a Roupa" se eu colocar "Ra" na string2, o programa apaga corretamente, sem erros. Mas se eu colocar "Ro" na string2, ele dá erro e fecha. Segue abaixo o código comentado: #include <stdio.h> #include <string.h> char *StrDelStr(char *s1, char *s2);//essa função deve apagar a primeira ocorrencia de s2 em s1 int main(void) { char string1[60], string2[30]; printf("digite uma string\n> "); gets(string1); fflush(stdin); //pega a primeira string printf("digite uma outra string menor\n> "); gets(string2); fflush(stdin); //pega a segunda string printf("\nstring ja transformada\n> %s\n", StrDelStr(string1, string2)); return 0; } char *StrDelStr(char *s1, char *s2) { int ocorrencia, i, j, tamanho_s2=strlen(s2), concordancia_s1_s2; char *ptr1=s1, *ptr2=s2; //*ptr1 vai ser equivalente a s1 e *ptr2 vai ser equivalente a s2 for(ocorrencia=i=j=concordancia_s1_s2=0;*ptr1!='\0';*ptr1++, ptr2=s2)//ao invés de usar o s1[i]!='\0' eu usei o *ptr1!='0' para percorrer a { //string, pq depois tenho que apagar os caracteres e o ptr2 é sempre zerado if(ocorrencia==0&&*ptr1==*ptr2)//aqui verifica se eu já apaguei algo antes e se *ptr1 é igual a *ptr2 { while(*ptr1==*ptr2)//se o if for atendido vai inciar o while com a condição de *ptr1==*ptr2 { j++; //o j vai ser adicionado concordancia_s1_s2++; //tanto como o inteiro concordancia_s1_s2 *ptr1++; *ptr2++; //aqui os ponteiros avançam uma posição char } if(concordancia_s1_s2==tamanho_s2) //quando o while for quebrado, esse if verifica se o concordancia_s1_s2 é igual ao tamnho de s2 ocorrencia++; //se for, ocorrencia é adicionado impedindo o acesso à esse if else ptr1-=j; //caso não seja do mesmo temaznho, significa que não era s2 por completo dentro de s1, logo, *ptr regride } //à posição que estava antes de entrar nesse if s1[i++]=*ptr1;//*ptr é escrito em i, que logo depois é adicionado } s1[i]='\0'; //após tudo, é colocado um delimitador no final da string return s1; //e s1 é retornado }
  2. Dougg_Ghost

    Ajuda em Ponteiros e funções

    Basicamente, tenho esse exercício (que foi passado em duas provas de C na faculdade), e nas duas acabei deixando em branco por não ter ideia de como fazer (nem como começar), não queria pedir resolução, mas sim explicação e se possível uma ajuda com código. Realmente não tenho ideia do que fazer por isso não coloquei meu código. Segue enunciado: Escreva uma função remove_dup(floatv[],int n) que receba o vetor e verifique a existência de elementos duplicados. Caso não existam elementos duplicados retorne 0. Caso existam, remova estes elementos (deixando apenas um) e retorne o número de elementos removidos.
  3. Tenho um trabalho da faculdade e não consigo fazer rodar o programa corretamente. Quando eu coloco o cpf, na hora de imprimir sai um número aleatório. Creio que possa ser por falta de memória pois se coloco um número menor ele sai certo, porém não consigo adicionar memória em cpf. Obs: ainda não fiz a parte dos menores e da medial do grupo e a parte de imprimir em tabela pois não consegui fazer funcionar nem um básico mas se alguém souber essa parte também e puder me ajudar agradeço!! #include <stdio.h> #include <stdlib.h> main(){ struct funcionarios{ int *cpf; char nome[30]; int nascimento; float salario; }; int aux=0; //para testar se for 0 antes de armazenar o cpf struct funcionarios *func; int qtdLeitura=0, i=0, cont=0; func = ((struct funcionarios *) (malloc(sizeof(struct funcionarios) * 1))); while(1){ printf("Digite o cpf %d: ", i+1); scanf("%d", &aux); if(aux!= 0){ func.cpf = aux; fflush(stdin); } else{ break; } if(func != NULL){ qtdLeitura++; func = ((struct funcionarios *) realloc(func, sizeof(struct funcionarios) *(qtdLeitura+1))); } printf("Digite o nome %d: ", i+1); scanf("%s", func.nome); printf("Digite o nascimento %d: ",i+1); scanf("%d", &func.nascimento); printf("Digite o salario %d: ",i+1); scanf("%f", &func.salario); cont++; i++; } printf("\n\n"); for(i=0;i<cont;i++){ printf("Cpf %d:%d \n",i+1, func.cpf); printf("Nome %d: %s\n",i+1, func.nome); printf("Nascimento %d: %d\n",i+1, func.nascimento); printf("Salario %d: %.2f\n",i+1, func.salario); } }
  4. Boa tarde Senhores(as)! O código-fonte a seguir é a miniaturização de um problema maior no qual estou trabalhando. Preciso imprimir os valores do vetor gerado pela função "fazVetor", na função "main". Porém, para que o código se assemelhe ao problema real no qual estou trabalhando, existem duas restrições que devem ser respeitadas. Estas estão comentadas no código a seguir. #include <stdio.h> #include <stdlib.h> #define TAM 3 int fazVetor(int **vet){ int *array = malloc(sizeof(int) * TAM); array[0] = 4; array[1] = 7; array[2] = 8; /* nesta função somente a linha a seguir pode ser alterada. */ *vet = array; } int main() { int **qq; /* Na função main, somente a linha a seguir NÃO PODE ser alterada. */ fazVetor(&qq); printf("\n--==[Valores do Vetor]==--\n\n"); for(int i = 0; i < TAM; i++){ printf(" %d", (qq[i])); } printf("\n\n"); return 0; } O único objetivo é a impressão dos valores do vetor na função "main". Respeitadas as devidas restrições. De antemão, muito obrigado! Edwar Saliba Jr.
  5. mauricio lanner

    Alocação dinâmica

    Bom dia pessoal, estou com um probleminha, preciso entregar hoje um trabalho de faculdade em algoritimos computacionais, mas to me batendo muito. A questão é assim: Faça um programa que leia números do teclado e os armazene em um vetor alocado dinamicamente. O usuario irá digitar uma sequência de números, sem limite de quantidade. Os números serão digitados um a um e, sendo que caso ele deseje encerrar a entrada de dados, ele irá digitar o numero ZERO. Os dados devem ser armazenados na memória deste modo: • Inicie com um vetor de tamanho 10 alocado dinamicamente; • Apos, caso o vetor alocado esteja cheio, aloque um novo vetor do tamanho do vetor anterior adicionado espaço para mais 10 valores (tamanho N+10, onde N inicia com 10); • Copie os valores já digitados da área inicial para esta área maior e libere a memória da área inicial; • Repita este procedimento de expandir dinamicamente com mais 10 valores o vetor alocado cada vez que o mesmo estiver cheio. Assim o vetor ira ser ’expandido’ de 10 em 10 valores. O grande problema que estou tendo é que não consigo fazer o while repetir da forma que preciso. iniciei o programa assim: #include <stdio.h> #include <stdlib.h> main(){ int *vetor,tam=10,i=0; vetor = malloc(sizeof(int)*tam); while (vetor!=0 || i<tam){ scanf("%d",vetor+i); printf("%d i \n",i); i++; } for(i=0;i<tam;i++){ printf("indice %d vetor %d\n",i,vetor+i); } } mas o ||(ou) não quer funcionar, ou ele usa um como parametro ou usa a outra regra. Alguem consegue me ajudar a resolver isso?
  6. relampagomarquinhos

    Erro de ponteiros

    Como resolver?
  7. Olá galera, bom dia ! Estou desenvolvendo um trabalho para faculdade onde armazeno e exibo os resultados de ordenação de diversos algoritmos, sendo numero de comparações, trocas e tempo. Tenho tudo pronto e escrito, ou seja, o escopo do trabalho esta Ok, falta implementar o resto dos algoritmos. Consegui quase tudo com a ajuda de colegas de outro fórum, porém estou com um erro que não consigo soluciona-lo, se alguém puder me dar uma ideia do que esta acontecendo fico grato. 1- Aqui eu tenho minha lista global de registros que ira armazenar os resultados de ordenação: typedef struct{ int numcomp; int numtrocas = 0; }ESTATISTICAS; 2- Como exemplo o algoritmo bubble sort recebendo os valores por referencia: void bubbleSort(int vet[], int num, ESTATISTICAS* estatisticas){ int i, continua, aux, fim = num; do{ continua = 0; for(i = 0; i < fim -1; i++ ){ estatisticas->numcomp++; if(vet > vet[i+1]){ aux = vet; vet = vet[i+1]; vet[i+1] = aux; estatisticas->numtrocas++; continua = 1; } } fim--; }while(continua != 0); } 3- e aqui a declaração da lista e a chamada da função de ordenação com a exibição dos valores armazenados: int *ptr; ptr = geraVetor(vetor1); //imprimeVetor(ptr, vetor1); ESTATISTICAS* estatisticas = (ESTATISTICAS*) malloc(sizeof(ESTATISTICAS)); clock_t start, end; start = clock(); bubbleSort(ptr,vetor1, estatisticas); end = clock(); printf("\n\nTROCAS: %d", estatisticas->numcomp); printf("\n\nTROCAS: %d", estatisticas->numtrocas); 4- O erro consiste em: quando compilo meu programa tudo esta ok, porém o valor retornado pela variável numcomp esta muito além do numero de comparações, se parecendo mais com um endereço de memoria. algo do tipo: 348219. Já a variável numtrocas o valor é retornado normalmente apos os incrementos ++; Aguardo ajuda, de já agradeço.
×

Important Information

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