Ir ao conteúdo
  • Cadastre-se

jcgs98

Membro Pleno
  • Posts

    90
  • Cadastrado em

  • Última visita

Tudo que jcgs98 postou

  1. @arfneto // 50% recursiva... tentando ainda! int comparaString (char str1[100],char str2[100]) { int i,j,cont=0; for(i=0;str1[i]!=NULL;i++) { cont=cont+comparaString2(str1[i],str2); } return cont; } int comparaString2(char str1,char str2[]) { if (!str2[0]) { return 0; } if (str2[0]==str1) { return (1+comparaString2(str1,++str2)); } else { return comparaString2(str1,++str2); } }
  2. @arfneto Não, a forma iterativa está certa. Retorna a quantidade de caracteres em comum. Comparando Paulo com Paula, retorna 4: P->P, a->a, u->u e l->l.
  3. @arfneto Vou tentar entender os código... não consigo pensar recursivamente. @arfneto "imagino que pretendesse retornar false quando as strings fossem diferentes, zero no popular. E 1 quando forem iguais, mas está contando e retornando apenas o número de letras iguais. Ou pretendia apenas retornar o número de vezes que alguma letra de str1 aparece em str2 ou algo assim? Acho que te qualquer maneira não está certo porque está comparando todas as letras de str2 com cada letra de str1 e isso pode não ter um significado objetivo, já que as strings podem ter letras repetidas... Escreva explicando o que pretende se não é comparar as strings apenas." Não, retornar a quantidade de letras em comum.
  4. #include <string.h> #include <strings.h> #include <stdio.h> #include <conio.h> #include <stdlib.h> int comparaString (char str1[100],char str2[100]); int main(void) { int cont=0; char str1[100],str2[100]; system("cls"); fflush(stdin); printf("\nString1...:\n"); gets(str1); system("cls"); fflush(stdin); printf("\nString2...:\n"); gets(str2); cont=comparaString (str1,str2); printf("\nExistem %i caracteres comuns entre as duas strings\n",cont); return 0; } int comparaString (char str1[100],char str2[100]) { int i,j,cont=0; for(i=0;str1[i]!=NULL;i++) { for(j=0;str2[j]!=NULL;j++) { if(str1[i]==str2[j]) { cont++; } } } return cont; } Como fazer de forma totalmente recursiva?
  5. @Anthony1104 Oi. Nos diga o que você quer fazer em tópicos. Vou te ajudar didaticamente sem "blá blá blá" ou crítica. Primeiro: O programa tem que fazer o que? Dica para quem quer ajudar, as pessoas que pedem ajuda a querem para problemas pontuais. Geralmente estudantes de faculdade querendo resolver tarefas. Ao invés de usarem funções prontas, criem códigos com passo a passo. Vai ajudar nos estudos destas pessoas.
  6. @Midori Não muito fácil de entender para ele que está começando... melhor ser bem didático para ele entender os conceitos.
  7. @GordinhoCoreano Bem didático e sem blá blá blá; se quiser um código mais enxuto e elegante pode perguntar. #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct{ char letra[2]; int numero; }Tnumerologia; int procuraletra(char *letra); int main(void) { char letra[2]; int resultado=0, aux=0, aux2=0; while(procuraletra(letra)!=0) { printf("\nDigite Cada Letra do Seu Nome Seguido De Enter('&' para terminar)...: "); gets(letra); printf("\nLetra %s -> %i",letra,procuraletra(letra)); aux=aux+procuraletra(letra); } system("cls"); printf("\nSoma de todas a letras....: %i\n\n\n",aux); while(aux>=10) { aux2=(aux/10)+(aux%10); aux=aux2; } printf("\nSeu Numero Pessoal: %i",aux); return 0; } int procuraletra(char *letra){ int i; Tnumerologia vetorComDados[27]={{"A",1},{"J",1},{"S",1}, {"B",2},{"K",2},{"T",2}, {"C",3},{"L",3},{"U",3}, {"D",4},{"M",4},{"V",4}, {"E",5},{"N",5},{"W",5}, {"F",6},{"O",6},{"X",6}, {"G",7},{"P",7},{"Y",7}, {"H",8},{"Q",8},{"Z",8}, {"I",9},{"R",9},{"&",0}}; for(i=0;i<27;i++) { if(!(strcasecmp(letra,vetorComDados[i].letra))) { return vetorComDados[i].numero; } } }
  8. @KXSY nem todos conseguem usar essa biblioteca: #include "genlist.h" Sugiro adaptar sem o seu uso; seu código vai alcançar mais pessoas
  9. @KXSYentendi, mas estou ensinando com simplesmente encadeada.
  10. #include <stdio.h> #include <stdlib.h> void ordenaSemRepetir(char *nomeA, char *nomeB); int main(void) { char origem[50]; char destino[50]; printf("\nArquivo de entrada.......:\n"); gets(origem); printf("\nArquivo de saida.........:\n"); gets(destino); ordenaSemRepetir(origem, destino); return(0); } void ordenaSemRepetir(char *nomeA, char *nomeB) { FILE *binarioOrigem, *binarioResultado; int I=0,J=1,i=0,j=0,iI,jJ,aux,auxI,auxJ,txtBin,TAM=0; binarioOrigem=fopen(nomeA, "rb"); while (!feof(binarioOrigem)) { TAM++; fread(&txtBin,sizeof(int),1,binarioOrigem); } fclose(binarioOrigem); binarioOrigem=fopen(nomeA, "w+b"); for (i=0;i<TAM;i++) { for (j=0;j<TAM;j++) { fseek (binarioOrigem, i*sizeof (int), SEEK_SET);fread(&iI, sizeof(int),1,binarioOrigem); fseek (binarioOrigem, j*sizeof (int), SEEK_SET);fread(&jJ, sizeof(int),1,binarioOrigem); if (iI>jJ) { fseek (binarioOrigem, i*sizeof (int), SEEK_SET);fread(&iI, sizeof(int),1,binarioOrigem); fseek (binarioOrigem, j*sizeof (int), SEEK_SET);fread(&jJ, sizeof(int),1,binarioOrigem); fseek (binarioOrigem, i*sizeof (int), SEEK_SET);fwrite(&jJ, sizeof(int),1,binarioOrigem); fseek (binarioOrigem, j*sizeof (int), SEEK_SET);fwrite(&iI, sizeof(int),1,binarioOrigem); } } } fclose (binarioOrigem); binarioResultado=fopen(nomeA, "wb"); while (!TAM) { TAM--; fscanf(textoA,"%i",&aux); fseek (binario, (I-1)*sizeof (int), SEEK_SET); fread(&auxI, sizeof(int),1,binarioOrigem); fseek (binario, I*sizeof (int), SEEK_SET); fread(&auxJ, sizeof(int),1,binarioOrigem); if(auxI!=auxJ) { fwrite(&auxJ, sizeof(int),1,binarioResultado); } I++; } fclose (binarioOrigem); fclose (binarioResultado); }
  11. @devair1010 Conitnue fazendo do meu jeito; é mais didático. As pessoas esquecem que vocês vem aqui para aprender. Sempre me irritei com algumas respostas que nada ajudam quem vem aqui pedir auxílio. Isso tudo acabou com minha chegada. Mesmo que digam que o post é inútil (se ensina é bem útil). Vou ver seu problema e tentar te explicar. @devair1010 "ele diz que não tem a função main nesse código" Sim, não tem: é "só" uma função. Vou postar com a main para fins didáticos. Primeiro você deve construir a estrutura que vai criar os nós: //ESTRUTRA DO NÓ typedef struct No { int valor; struct No *prox; }TNo; //SERVER PARA VOCÊ NÃO TER QUE FAZER PONTEIRO DE PONTEIRO (**) E SE CONFUNDIR typedef TNo* TLista; #include <locale.h> #include <stdio.h> #include <stdlib.h> typedef struct No { int valor; struct No *prox; } TNo; typedef TNo* TLista; int insereNaPosicao (TLista *Lista,int inserido,int posicao); int colocarElementosNaLista (TLista *Lista, int elemento); void exibirElementosDaLista (TLista Lista); int main (void) { TLista Lista = NULL; int opcao, num1, num2; setlocale(LC_ALL,""); do { system ("cls"); printf ("Opções:\n\n"); printf ("(1)\tInserir na Lista\n(2)\tInserir Em Determinada Posição\n"); printf ("(3)\tExibir Lista Criada\n(4)\tSair\n\n"); printf ("Entre com a sua opção: "); scanf ("%d", &op); switch (op) { case 1: printf ("Entre com o número a ser inserido: "); scanf ("%d", &num1); if (colocarElementosNaLista (&Lista, num1)) { printf ("Elemento inserido!\n"); } else { printf ("ERRO: Elemento não inserido!\n"); } break; case 2: printf ("Entre com o número a ser inserido: "); scanf ("%d", &num1); printf ("Entre com o posição: "); scanf ("%d", &num2); if (insereNaPosicao (&Lista,num1, num2)) { printf ("Elemento %i inserido na %ia. posição da lista!\n",num1,num2); } else { printf ("ERRO: Elemento não inserido na lista!\n"); } break; case 3: exibirElementosDaLista (Lista); break; case 4: printf ("Fim do programa!\n"); break; default: printf ("Opção inválida! Tente novamente.\n"); } system ("pause"); } while (opcao != 4); } int insereNaPosicao (TLista *Lista,int inserido,int posicao) { int con=0,CON=0; TLista AUX, aux, novo, tam; AUX=*Lista; tam=*Lista; posicao=posicao-1; novo=(TLista) malloc (sizeof(TNo)); novo->valor = inserido; while (tam!=NULL) { tam=tam->prox; CON++; } if (posicao>CON||posicao<0) { return 0; } while (con<posicao-1) { AUX=AUX->prox; con++; } aux=AUX->prox; AUX->prox=novo; novo->prox=aux; return 1; } int colocarElementosNaLista (TLista *Lista, int numero) { TLista aux = (TLista) malloc (sizeof(TNo)); if (!aux) //(aux == NULL) { return 0; } else { aux->valor = numero; aux->prox = *Lista; *Lista = aux; return 1; } } void exibirElementosDaLista (TLista Lista) { TLista i; if (!Lista)//if (Lista == NULL) { printf ("Lista vazia!\n"); } else { printf ("Elementos: "); i = Lista; while (i) //while (i != NULL) { printf ("%d ", i->valor); i = i->prox; } printf ("\n"); } } @devair1010 código completo
  12. void BUBBLEemBINARIO()//PODE ADAPTAR AS ENTRADAS SE OS ARQUIVOS NÃO FOREM CONHECIDOS { FILE *binario, *textoA; int I=0,J=1,i=0,j=0,iI,jJ,TAM=0; binario=fopen("Arquivo.bin", "w+b"); textoA=fopen("dados.txt","r"); // JA EXISTENTE COM OS DADOS while (!feof(textoA)) // COLOCAR OS DADOS NO ARQUIVO BINÁRIO { TAM++; // IMPORTANTE FICAR AQUI fscanf(textoA,"%i",&txtBin); fwrite(&txtBin,sizeof(int),1,binario); } fclose(textoA); //BUBBLE for (i=0;i<TAM;i++) { for (j=0;j<TAM;j++) { fseek (binario, i*sizeof (int), SEEK_SET); fread(&iI, sizeof(int),1,binario); fseek (binario, j*sizeof (int), SEEK_SET); fread(&jJ, sizeof(int),1,binario); if (iI<jJ) { fseek (binario, i*sizeof (int), SEEK_SET); fread(&iI, sizeof(int),1,binario); fseek (binario, j*sizeof (int), SEEK_SET); fread(&jJ, sizeof(int),1,binario); fseek (binario, i*sizeof (int), SEEK_SET); fwrite(&jJ, sizeof(int),1,binario); fseek (binario, j*sizeof (int), SEEK_SET); fwrite(&iI, sizeof(int),1,binario); } } } fclose (binario); }
  13. @devair1010 vê se ajuda: https://www.clubedohardware.com.br/forums/topic/1498676-exibir-lista-encadeada-linguagem-c/?tab=comments#comment-7998143 Se não tiver no mínimo metade das visualizações em curtidas, posto mais nada!
  14. #include <stdio.h> #include <stdlib.h> typedef struct No { int valor ; struct No *prox ; } TNo ; typedef TNo* TLista ; int insereNaPosicao (TLista *L,int inserido,int posicao) { int con=0,CON=0; TLista AUX, aux, novo, tam; AUX=*L; tam=*L; posicao=posicao-1; novo=(TLista) malloc (sizeof(TNo)); novo->valor = inserido; while (tam!=NULL) { tam=tam->prox; CON++; } if (posicao>CON||posicao<0) { return 0; } while (con<posicao-1) { AUX=AUX->prox; con++; } aux=AUX->prox; AUX->prox=novo; novo->prox=aux; return 1; }
  15. Digamos que você saiba como fazer uma lista encadeada e esteja querendo saber como Verificar Se Ela Está Ordenada? Não. Não. Sim.
  16. Serve para "Verificar Se Lista Encadeada Está Ordenada".
  17. #include <stdio.h> #include <stdlib.h> typedef struct No { int valor ; struct No *prox ; } TNo ; typedef TNo* TLista ; void inverter (TLista *L, TLista L2) { while(L2) { TLista aux = (TLista) malloc (sizeof(TNo)); aux->valor = L2->valor; aux->prox = *L; *L = aux; L2=L2->prox; } }
  18. #include <stdio.h> #include <stdlib.h> typedef struct No { int valor ; struct No *prox ; } TNo ; typedef TNo* TLista ; void criarPA (TLista *L,int N,int A1,int R) { TLista fim; int i=0,aux2=A1; while(i<N) { TLista aux = (TLista) malloc (sizeof(TNo)); aux->valor = A1; aux->prox = NULL; A1=A1+R; if(*L==NULL) { *L=aux; } else { fim->prox=aux; } fim=aux; i++; } }
  19. #include <stdio.h> #include <stdlib.h> typedef struct No { int valor ; struct No *prox ; } TNo ; typedef TNo* TLista ; int estaOrdenada(TLista L) { if (L != NULL) { while (L->prox != NULL) { if (L->valor > L->prox->valor) return 0; L = L->prox; } } return 1; }
  20. #include <stdio.h> #include <stdlib.h> typedef struct No { int valor; struct No *prox; } TNo; typedef TNo* TLista; void exibir (TLista L) { TLista i; printf("\nMostrando a lista:\t"); if(L) for (i=L;L!=NULL;L=L->prox) { printf("%d\t", i->valor); i=i->prox; } else printf("Lista vazia."); printf("\n"); }
  21. //STRUCT DA LISTA #include <stdio.h> #include <stdlib.h> typedef struct No { int valor ; struct No *prox ; } TNo ; typedef TNo* TLista ; void clonar (TLista *L, TLista L2) { TLista fim; while(L2) { TLista aux = (TLista) malloc (sizeof(TNo)); aux->valor = L2->valor; aux->prox = NULL; if(*L==NULL) { *L=aux; } else { fim->prox=aux; } fim=aux; L2=L2->prox; } }
  22. #include <string.h> #include <strings.h> #include <stdio.h> #include <conio.h> #include <stdlib.h> typedef struct No { int nConteudo; struct No *prox; }TNo; typedef TNo* TLista; void liberar_memoria(TLista p); void verificaPar(TLista p1, TLista p2); void mostraLista(TLista p1, TLista p2); int main(void) { TLista pNo1 = NULL; TLista pNo2 = NULL; TLista pNo3 = NULL; TLista pNo4 = NULL; TLista pNo5 = NULL; TLista pNo6 = NULL; pNo1 = (TLista) malloc(sizeof(TLista)); pNo1->nConteudo = 110; pNo2 = (TLista) malloc(sizeof(TLista)); pNo2->nConteudo = 210; pNo3 = (TLista) malloc(sizeof(TLista)); pNo3->nConteudo = 310; pNo4 = (TLista) malloc(sizeof(TLista)); pNo4->nConteudo = 110; pNo5 = (TLista) malloc(sizeof(TLista)); pNo5->nConteudo = 210; pNo6 = (TLista) malloc(sizeof(TLista)); pNo6->nConteudo = 310; pNo1->prox = pNo2; pNo2->prox = pNo3; pNo3->prox = NULL; pNo4->prox = pNo5; pNo5->prox = pNo6; pNo6->prox = NULL; mostraLista(pNo1,pNo4); verificaPar(pNo1, pNo4); liberar_memoria(pNo1); liberar_memoria(pNo4); return 0; } void liberar_memoria(TLista p) { TLista atual = p; while (atual != NULL) { TLista proximo = atual->prox; free(atual); atual = proximo; } } void mostraLista(TLista p1, TLista p2) { TLista i,j; printf("\nMostrando a lista:\n"); if((p1)&&(p2)) for (i=p1,j=p2; p1!=NULL;p2=p2->prox,p1=p1->prox) { printf("\n%d\t", i->nConteudo); printf("- %d\n", j->nConteudo); i=i->prox; j=j->prox; } else printf("Lista vazia."); printf("\n\n"); } void verificaPar(TLista p1, TLista p2) { TLista i,j, cont=0; if((p1)&&(p2)) { for (i=p1,j=p2; p1!=NULL;p2=p2->prox,p1=p1->prox) { if (i->nConteudo!=j->nConteudo) { printf("NAO SAO IGUAIS - LISTAS DIFERENTES!\n"); cont=0; break; } else { cont++; } i=i->prox; j=j->prox; } if (cont) { printf("AS LISTAS SAO IDENTICAS\n"); } } else printf("LISTAS IDENTICAS PORQUE AMBAS SAO VAZIAS."); }
  23. @AnsiC vários operadores que não aprendi: "- -" antes da variável. "? a :" Vou pesquisar. Parece que ficou bem mais econômico mesmo.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!