Ir para conteúdo

Wilkyn Fernandes Taborda

Members
  • Total de itens

    73
  • Registro em

  • Última visita

Reputação

0 Comum

Sobre Wilkyn Fernandes Taborda

Contato

  • Twitter
    @FernandesWilkyn
  1. Wilkyn Fernandes Taborda

    Preciso de Ajuda - Shift-and

    Esse programa não faz sentido por que para achar um padrão em um texto nós fazemos a comparação de igualdade entre um conjunto de caractéres e o texto e não deslocamento de bits SHIFT AND. Nesse caso eu preciso comparar caractér com caractér ou seja byte com byte e não bit com bit.
  2. Wilkyn Fernandes Taborda

    Lista simplesmente encadeada tendo como argumento outra estrutura com dados

    Fah em: while ( nome!= '\0' ){ Al-> nome= nome; i ++; } Al-> nome= NULL; Dá erro pois faltam os índices que apontam qual caractére se está a copiar. Faz-se: while ( nome[i]!= '\0' ){ Al-> nome[i]= nome[i]; i ++; } Al-> nome[i]= NULL; A função cria está errada. Ela retorna o valor do ponteiro que foi passado como argumento sem modificar o valor da região para aonde ele aponta. Isso não é erro porém redundante. O erro está em que a nova lista criada pela função se perde na memória após a função terminar e não se tem controle sobre a nova lista criada. O programa trava ao executar por que na função principal falta inicializar a variável l1 com o valor nulo para que a função de inserção ordenada saiba que a lista está vazia. É: l1=NULL; A função de inserção ordenada é redundante pois além de inserir o novo elemento na lista ainda retorna um ponteiro para essa mesma lista. Não está errado mas isso se torna desnecessário a partir da inserção do segundo elemento da lista e em diante até que se resolva adicionar algum com número de matrícula menor do que todos os outros. O programa vai travar toda vez que inserir um valor com número de matrícula menor do que todos os outros que já tem na lista. Isso por que o ponteiro próximo apontado pelo ponteiro novo na função inserção ordenada está recebendo como apontamento outro ponteiro próximo de um valor nulo que não existe e o ponteiro aux da mesma função está sendo ordenado em seu membro apontado ponteiro próximo a apontar para algo que ele não pode por o valor de aux ser nulo e seus membros apontados não existirem. Para resolver isso coloca-se uma variável contadora de elementos da lista com número de matrícula menor do que o que está sendo inserido. Se o resultado do contador for 0 aponta-se o início da lista para o novo elemento e o ponteiro próximo do novo elemento para a lista atual aonde já estarão os outros elementos consecutivos. A função imprime fica para sempre imprimindo somente a primeira matrícula repetidas vezes por que não foi colocado a linha de código que faz o ponteiro p avançar para o próximo da lista que é: p=p->prox; Nenhuma função da biblioteca string é usada. A linha que a adiciona pode ser removida. O mesmo programa porém com essas modificações que eu disse fica: #include <stdio.h> struct aluno { int matricula ; char nome [ 100 ]; float media ; }; typedef struct aluno Aluno ; struct no { Aluno * dados ; struct no * prox ; }; typedef struct no No; No* ins_ordenado ( No* l , int mat , char* nome , float nota ){ int contadora; Aluno * Al=( Aluno *)malloc ( sizeof( Aluno )); No* novo =( No*)malloc( sizeof ( No)); int i = 0 ; Al-> matricula = mat ; while ( nome[i]!= '\0' ){ Al-> nome[i]= nome[i]; i ++; } Al-> nome[i]= NULL; Al-> media = nota; novo -> dados = Al; No* p = l ; No* aux = NULL; if( l ==NULL){ novo -> prox= l ; return novo ; } contadora=0; while ( p != NULL&&p -> dados -> matricula < Al-> matricula ){ aux = p ; p = p -> prox; contadora++; } if(contadora>0){ novo -> prox= aux -> prox; aux -> prox= novo; } else{ novo->prox=l; l=novo; return l; } if( p ==NULL){ novo -> prox= NULL; } return l ; } void imprime ( No* l ){ No* p ; printf ( "turma 1:\n" ); for ( p = l ; p != NULL; p -> prox){ printf ( "Matricula: %d\t Nome: %s Nota:%f\n" , p -> dados -> matricula , p -> dados -> nome, p -> dados -> media ); p=p->prox; } printf ( "\n" ); } int vazia ( No* l ){ return( l ==NULL); } int main (){ No* l1; l1=NULL; l1 = ins_ordenado ( l1 , 1 , "Maria" , 5 ); ins_ordenado ( l1 , 2 , "Joao" , 10 ); ins_ordenado ( l1 , 3 , "Jose" , 6 ); ins_ordenado ( l1 , 5 , "Joaquim" , 7 ); ins_ordenado ( l1 , 4 , "Manoel" , 8 ); l1=ins_ordenado ( l1 , 0 , "Felipe" , 9 ); printf( "vazia? %d" , vazia ( l1 )); imprime(l1); system("pause"); return 0 ; }
  3. Wilkyn Fernandes Taborda

    Alguém consegue entender esse enunciado ?

    Na verdade ela quer que ele faça um algoritmo na linguagem C. O que pede é um programa que gera a tabela de quanto será o lucro da compania de teatro de acordo com o preço que essa resolver vender os ingressos dentro da faixa de valores especificada. int main(){ int preco,quantos; printf("Preco do ingresso quantos vai vender lucro\n"); for(preco=48,quantos=350;preco>=22;preco-=2,quantos+=17) printf("%d reais %d %d reais\n",preco,quantos,(preco*quantos)-5600); system("pause"); }
  4. Wilkyn Fernandes Taborda

    pedir dois numeros ao utilizador e meter em ordem crescente

    int main(){ int numero1,numero2,auxiliar; printf("Digite o primeiro numero:"); scanf("%d",&numero1); printf("Digite o segundo:"); scanf("%d",&numero2); if(numero1>numero2){ auxiliar=numero1; numero1=numero2; numero2=auxiliar; } printf("Os numeros em ordem crescente fica: %d %d.",numero1,numero2); }
  5. Wilkyn Fernandes Taborda

    Como fazer uma lista?

    Em uma variável do tipo struct lista o ponteiro próximo vai receber o endereço de memória de uma outra variável também do tipo struct lista para apontá-la. O elemento apontado também tem nele um ponteiro próximo que vai apontar para um outro elemento de mesmo tipo e assim consecutivamente quantos elementos quiser que tenha na lista. Esse seu código está errado por que ele está reservando memória para um elemento com tamanho em bytes 10 vezes maior do que o necessário somente para o próximo elemento da lista que daí sim vai reservar memória para o próximo e assim por diante. Isso se deve ao fato da alocação estar sendo multiplicada por 10. Ao tirar a multiplicação por 10 fica certo.
  6. Wilkyn Fernandes Taborda

    Modificar linha em FILE txt (C)

    /*Antes de executar o programa abaixo pela primeira vez crie um arquivo de texto vazio chamado "carros" na mesma pasta do executavel.*/ #include<stdio.h> int main(){ FILE *arquivo; int resposta=0,diaria,totaldecarros,contacarros,i; char nomedocarro[20],placa[8],caractere,textotemporario[1000]; while(resposta!=3){ printf("O que deseja fazer ?"); printf("\n1.Cadastrar carro"); printf("\n2.Alugar carro"); printf("\n3.Sair"); scanf("%d",&resposta); if(resposta==1){ printf("Digite o nome do carro:"); scanf("%s",nomedocarro); printf("Digite a placa:"); scanf("%s",placa); printf("Digite o valor da diaria:"); scanf("%d",&diaria); arquivo=fopen("carros.txt","a"); fprintf(arquivo,"%d ",1); fprintf(arquivo,"%s ",placa); fprintf(arquivo,"%s ",nomedocarro); fprintf(arquivo,"%d\n",diaria); fclose(arquivo); } else if(resposta==2){ arquivo=fopen("carros.txt","r"); totaldecarros=0; i=0; while(1){ caractere= fgetc(arquivo); if(caractere=='\n'){ printf(" %d",totaldecarros+1); totaldecarros++; } if(caractere!=EOF){ printf("%c",caractere); textotemporario[i]=caractere; i++; } else{ textotemporario[i]='\0'; break; } } if(!totaldecarros) printf("Nao ha carros cadastrados."); else{ printf("Digite o numero a direita do valor da diaria do carro que quer alugar:"); scanf("%d",&resposta); if((resposta<1)||(resposta>totaldecarros)){ printf("Numero invalido."); fclose(arquivo); } else{ fclose(arquivo); arquivo=fopen("carros.txt","w"); i=0; contacarros=1; while(contacarros!=resposta){ if(textotemporario[i]=='\n') contacarros++; i++; } textotemporario[i]='0'; fprintf(arquivo,"%s",textotemporario); fclose(arquivo); } if(resposta==3) resposta=0; } } } system("pause"); }
  7. Wilkyn Fernandes Taborda

    Geração de descontos C++

    O valor da diária já é estipulado em 100,00 não precisa ler ele de novo. int grupo,dias; printf ( "\t Valor da diaria: R$ 100,00 \n" ); printf ( "\t Quantos dias voce pretende ficar com o carro ? \n" ); scanf("%d",&dias); printf ( "\t Parceiros da ONG tem 5 porcento de desconto no valor total" ); printf ( "\t idosos tem 10 porcento de desconto no valor total" ); printf ( "\t informa qual grupo esse usuario se enquadra" ); printf ( "\t 1.Idoso, 2.parceiro ou 3.nenhum ?: " ); scanf("%d",&grupo); if(grupo==1) produto=(100-(0.1*100))*dias; else if(grupo==2) produto=(100-(0.05*100))*dias; else produto=100*dias; printf ( "\t Seu aluguel vai ficar vai no valor de R$%.000f \n" , produto ); printf ( "\t Deseja alugar o carro: \n" ); printf ( "\t (1) SIM \n" ); printf ( "\t (2) NAO \n" ); scanf ( "%i" ,& sn ); if ( sn == 1 ) { printf ( "\t Seu carro ja esta liberado. \n" ); printf ( "\t Volte Sempre. \n" ); } else if ( sn == 2 ) { printf ( "\t Seu carro nao esta liberado. \n" ); printf ( "\t Tenha um Bom Dia. \n" ); }
  8. Wilkyn Fernandes Taborda

    Agenda de compromissos em C

    As opções 2 e 3 fazem a mesma coisa. struct compromisso{ char descricao[100]; int dia,mes,ano; }compromissos[100]; int main(){ int opcao=1,totaldecompromissos=0,i,diatemporario,mestemporario,anotemporario,numero; while(opcao!=6){ printf("Digite a opcao:"); printf("\n1.Cadastrar compromisso"); printf("\n2.Consultar compromissos por data"); printf("\n3.Listar todos os compromissos de uma data"); printf("\n4.Listar todos os compromissos de um ano"); printf("\n5.Remover compromisso"); printf("\n6.Sair"); scanf("%d",&opcao); if(opcao==1){ printf("Digite a data do compromisso:"); printf("\nDia:"); scanf("%d",&compromissos[totaldecompromissos].dia); printf("\nMes:"); scanf("%d",&compromissos[totaldecompromissos].mes); printf("\nAno:"); scanf("%d",&compromissos[totaldecompromissos].ano); printf("\nDigite a descricao do compromisso:"); scanf("%*c%[^\n]%*c",compromissos[totaldecompromissos].descricao); totaldecompromissos++; } else if((opcao==2)||(opcao==3)){ printf("Digite a data do compromisso:"); printf("\nDia:"); scanf("%d",&diatemporario); printf("\nMes:"); scanf("%d",&mestemporario); printf("\nAno:"); scanf("%d",&anotemporario); for(i=0;i<totaldecompromissos;i++) if((diatemporario==compromissos[i].dia)&&(mestemporario==compromissos[i].mes)&&(anotemporario==compromissos[i].ano)) printf("\n%s\n",compromissos[i].descricao); } else if(opcao==4){ printf("\nDigite o ano:"); scanf("%d",&anotemporario); for(i=0;i<totaldecompromissos;i++) if(anotemporario==compromissos[i].ano){ printf("\nDia: %d\n",compromissos[i].dia); printf("Mes: %d\n",compromissos[i].mes); printf("Descricao: %s\n",compromissos[i].descricao); } } else if(opcao==5){ for(i=0;i<totaldecompromissos;i++){ printf("\nNumero: %d\n",i+1); printf("Dia: %d\n",compromissos[i].dia); printf("Mes: %d\n",compromissos[i].mes); printf("Descricao: %s\n",compromissos[i].descricao); } printf("\nDigite o numero do compromisso que deseja remover:"); scanf("%d",&numero); for(i=(numero-1);i<totaldecompromissos;i++){ compromissos[i].dia=compromissos[i+1].dia; compromissos[i].mes=compromissos[i+1].mes; compromissos[i].ano=compromissos[i+1].ano; strcpy(compromissos[i].descricao,compromissos[i+1].descricao); } totaldecompromissos--; } else if(opcao==6){ } else{ printf("Opcao invalida.\n"); } } system("pause"); }
  9. Wilkyn Fernandes Taborda

    Como adicionar pontuação em número inteiro usando sprintf

    Você pode criar uma rotina que insere os pontos entre as casas decimais na hora de mostrar na tela. void imprimecompontos(char* texto){ int tamanho=strlen(texto),i,modulo; modulo=(tamanho%3); if(!modulo) modulo+=3; for(i=0;i<tamanho;i++){ if((i==modulo)&&(i)){ printf("%c",'.'); modulo+=3; } printf("%c",texto[i]); } } int main (){ char texto[20]; int valor=10000000; sprintf(texto,"%d",valor); imprimecompontos(texto); system("pause"); }
  10. Wilkyn Fernandes Taborda

    Linguagem C - semana/dia

    A enumeração com os números dos dias da semana nesse programa é desnecessária pois no array de strings com os nomes dos dias o índice desse array já é esses números. #include<string.h> enum semana{domingo=0,segunda=1,terca=2,quarta=3,quinta=4,sexta=5,sabado=7};//Dispensavel. Pode ser retirado do programa. char nomesdosdias[7][8]; int main(){ int diadomes, diadasemana; strcpy(nomesdosdias[0],"domingo"); strcpy(nomesdosdias[1],"segunda"); strcpy(nomesdosdias[2],"terca"); strcpy(nomesdosdias[3],"quarta"); strcpy(nomesdosdias[4],"quinta"); strcpy(nomesdosdias[5],"sexta"); strcpy(nomesdosdias[6],"sabado"); printf("Digite o dia do mes:"); scanf("%d",&diadomes); printf("Digite o dia da semana:"); printf("\n1.Domingo"); printf("\n2.segunda"); printf("\n3.terca"); printf("\n4.quarta"); printf("\n5.quinta"); printf("\n6.sexta"); printf("\n7.sabado"); scanf("%d",&diadasemana); while(diadomes>1){ diadomes--; if(diadasemana>1) diadasemana--; else diadasemana=7; } printf("O primeiro dia do mes e: %s",nomesdosdias[diadasemana-1]); system("pause"); }
  11. Wilkyn Fernandes Taborda

    como fazer cadastros linguagem c

    Na rotina de leitura e armazenamento dos estilistas falta o índice do vetor de estilistas e o mesmo acontece toda vez que o programa acessa o vetor de roupas ou seja, falta o índice que indica a posição de cada roupa na memória. estilistas . nome fica: estilistas[i]. nome é roupas.codigo fica roupas[i].codigo No cadastro das roupas ao tentar cadastrar ele sempre diz "Estação/Roupa não cadastrada" por que as variáveis roupas_primavera e roupas_outono foram inicializadas e sempre serão iguais a 0 fazendo com que o teste condicional que verifica a estação digitada sempre dê falso e a variável i nunca seja incrementada entrando em um loop infinito que faz com que o programa volte sempre no mesmo menu de cadastro de roupas e nunca avance adiante não importa o valor que se digite. Nesse caso o erro não é no cadastro das estações pois essas foram cadastradas corretamente.
  12. Wilkyn Fernandes Taborda

    Ajuda em fila e pilha - linguagem c

    Tive que fazer algumas adaptações como por exemplo criar as pilhas com uma posição a mais pra sinalizar que as pilhas estão vazias por que com esses parâmetros nao há como mudar os valores dos ponteiros de pilha entre as chamadas de funções. #include<stdlib.h> typedef struct pilha{ float valor; }Pilha; void pilha_push(Pilha *p1, float valor){ p1++; p1->valor=valor; } float pilha_pop(Pilha *p1){ return p1->valor; } int pilhavazia(Pilha *p1){ if(p1->valor==-1) return 1; else return 0; } int numelementodamaior(Pilha *p1,Pilha *p2){ float pilhaauxiliar[20]; int i,contadorpilha1=0,contadorpilha2=0; while(!pilhavazia(p1)){ pilhaauxiliar[contadorpilha1]=pilha_pop(p1--); //O -- no ponteiro foi uma de minhas adaptacoes contadorpilha1++; } for(i=contadorpilha1-1;i>=0;i--) pilha_push(p1,pilhaauxiliar[i]); while(!pilhavazia(p2)){ pilhaauxiliar[contadorpilha2]=pilha_pop(p2--); contadorpilha2++; } for(i=contadorpilha2-1;i>=0;i--) pilha_push(p2,pilhaauxiliar[i]); if(contadorpilha1>contadorpilha2) return contadorpilha1; else return contadorpilha2; } int main(){ Pilha p1[11], p2[11],*p1ptr=p1,*p2ptr=p2; p1[0].valor=-1;//-1 na primeira posicao significa pilha vazia. Os valores inseridos virao a partir da segunda posicao e em diante. p2[0].valor=-1; /*Aqui se insere quantos valores quiser nas duas pilhas sempre apos isso apontando os ponteiros de pilha para as posicoes das pilhas aonde estiverem os ultimos elementos que foram inseridos*/ printf("Numero de elementos da maior pilha:%d",numelementodamaior(p1ptr,p2ptr)); system("pause"); } #include<stdlib.h> typedef struct fila{ int valor; struct fila *proximo; }Fila; Fila *fila_cria(){ return malloc(sizeof(Fila)); } int fila_retira(Fila *f){ int valor; while(f->proximo) f=f->proximo; valor=f->valor; f->proximo=NULL; return valor; } void fila_insere(Fila *f,int v){ while(f->proximo) f=f->proximo; f->proximo=malloc(sizeof(Fila)); f->proximo->valor=v; f->proximo->proximo=NULL; } void TrocaElementos(Fila *f1,Fila *f2,int n){ int i,auxiliar; for(i=0;i<n;i++) if(!f1->proximo){ i++; break; } if(n>i) printf("n e maior do que uma das filas. A troca nao pode ser feita."); else{ for(i=0;i<n;i++) if(!f2->proximo){ i++; break; } if(n>i) printf("n e maior do que uma das filas. A troca nao pode ser feita."); else for(i=0;i<n;i++){ auxiliar=f1->valor; f1->valor=f2->valor; f2->valor=auxiliar; f1=f1->proximo; f2=f2->proximo; } } } void imprimefila(Fila *f){ do{ printf("%d\n",f->valor); f=f->proximo; }while(f); } int main(){ Fila *f1=fila_cria(),*f2=fila_cria(); f1->valor=5; f1->proximo=NULL; f2->valor=10; f2->proximo=NULL; fila_insere(f1,12); fila_insere(f2,13); TrocaElementos(f1,f2,1); imprimefila(f1); system("pause"); }
  13. Wilkyn Fernandes Taborda

    Guarda de dados

    Cria uma variável para guardar o valor do último chute: int ultimo_chute; printf("digite o chute:"); scanf("%d",&chute); if(chute==ultimo_chute) printf("numero ja chutadado na ultima"); else ultimo_chute=chute;
  14. Wilkyn Fernandes Taborda

    Como avisar para o usuário que ele já jogou o mesmo número

    Exatamente. Como o número máximo de jogadas será 20 então dá para fazer o vetor de jogadas com 20 posições. Cada vez que joga um número não-repetido armazena nele para depois comparar. Adiciona na função main o novo vetor de jogadas e as novas variáveis de controle: int vetor_de_jogadas[20],jogadas_armazenadas=0,j; e depois adiciona essas linhas após ler a tentativa do jogador: if (i==1){ vetor_de_jogadas[0]=chute; jogadas_armazenadas++; } else{ for(j=0;j<jogadas_armazenadas;j++) if(chute==vetor_de_jogadas[j]){ printf("tentativa ja realizada"); break; } if(j==jogadas_armazenadas){ vetor_de_jogadas[j]=chute; jogadas_armazenadas++; } }
  15. Wilkyn Fernandes Taborda

    PROBLEMAS EM LINGUAGEM C

    int main(){ int numero,i; printf("Digite um numero para ver se e triangular:"); scanf("%d",&numero); for(i=1;i<10000;i++) if(numero!=i*(i+1)*(i+2)); else{ printf("O numero e triangular."); system("pause"); exit(0); } printf("O numero nao e triangular."); system("pause"); } int main(){ int matriz[10][10],i,j; /*Preencher os valores da matriz como quiser*/ for(i=0;i<10;i++) for(j=0;j<10;j++) printf("Elemento:%d Indices:[%d] [%d]\n",matriz[i][j],i+1,j+1); system("pause"); }
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.