void inserir(Par **inicio,Par **fim,int x,int y){ if(*inicio == NULL){ *inicio = *fim = criar(x,y); }else{ Par *novo = criar(x,y); (*fim)->prox = novo; novo->ant = *fim; *fim = novo; } }
//---------------------- main() { menu(); int quant; criar(); do { printf ("Informe o numero de identificação da peça: "); scanf ("%d",&quant); fflush(stdin); if (quant == 0) {system ("cls");break;} reg.id= quant; fflush(stdin); printf ("Informe a descrição da peça: "); gets (reg.desc); fflush(stdin); printf ("Informe o fabricante: "); gets (reg.fabricante); fflush(stdin); printf ("Informe o ano de fabricação: "); scanf ("%d",®.ano); fflush(stdin); printf ("Informe o Preço Unitario: "); scanf ("%d",®.preco); fflush(stdin); printf ("Informea quantidade disponivel: "); scanf ("%d",®.quantidade); fflush(stdin); printf ("----------------------------------------\n"); getch (); system ("cls"); menu(); fwrite (®,sizeof(reg),1,arquivo); } while (quant != 0); fechar(); abrir(); int fab_2009=0,mais_1000=0,somatorio=0,cara=0,barata; barata= reg.preco; while (fread(®,sizeof(reg),1,arquivo)) { if (reg.ano == 2009) {++fab_2009;} if (reg.preco > 1000) {++mais_1000;} if (((reg.id % 2)== 1) || (reg.preco > 30)) {somatorio= somatorio + reg.preco;} if (reg.preco > cara) {cara= reg.preco;} if (reg.preco < barata) {barata= reg.preco;} } fechar(); printf ("- Foram fabricadas %d peças em 2009\n\n",fab_2009); printf ("- Contem %d peças mais caras que 1000 reias\n\n",mais_1000); printf ("- A soma dos preços de peças com 'Id' impar\n\n"); printf ("ou mais caro que 30 reais é %d\n\n",somatorio); printf ("- %d é o presço mais caro\n\n",cara); printf ("- %d é o preço mais barato\n\n",barata); getch (); }
main() { char letra; int num_as; tipopilha *ponteiro; ponteiro = criar(); fflush(stdin); printf("Digite uma letra (X finaliza)\n"); scanf("%c", &letra); letra = toupper(letra); while (letra != 'X') { push(ponteiro, letra); fflush(stdin); printf("Digite uma letra (X finaliza)\n"); scanf("%c", &letra); letra = toupper(letra); } printf("\n"); num_as = conta_letras_as(ponteiro); printf("Quantidade de letras As -> %d", num_as); getch(); }
main() { int num; tipo_pilha *pilha; system("cls"); pilha = criar(); printf("Digite um numero (0 finaliza)\n"); scanf("%d", &num); while (num != 0) { push(pilha, num); printf("Digite um numero (0 finaliza)\n"); scanf("%d", &num); } printf("\n"); imprimir_pilha(pilha); getch(); printf("\n"); pop(pilha); printf("\n"); imprimir_pilha(pilha); getch(); }
int main() { int i; //criar a lista LISTA_LIGADA_CIRCULAR lista; criar(&lista); //inserir itens na &lista for (i = 0; i < 10; i++) { ITEM item; item.chave = i; item.valor = rand(); inserir_fim(&lista, &item); } imprimir(&lista); ITEM item1; if (buscar(&lista, 9, &item1)) { printf("encontrado: %d - %d\n---\n", item1.chave, item1.valor); } remover_posicao(&lista, 9); ITEM item2; item2.chave = 111; item2.valor = 333; inserir_fim(&lista, &item2); imprimir(&lista); apagar_lista(&lista); return 0; }
Lista * somar(Lista *operando1, Lista *operando2) //funcionando perfeitamente { int i; int valor = 0; int tam1 = tamanho(operando1); int tam2 = tamanho(operando2); Lista *resultadoSoma = criar(); // caso os operandos sejam de tamanhos distintos, completa-se com zeros no inicio. if(tam1 > tam2){ for(i = 0; i < tam1-tam2; i++) inserir_primeiro(operando2, 0); } // caso os operandos sejam de tamanhos distintos, completa-se com zeros no inicio. if(tam2 > tam1){ for(i = 0; i < tam2-tam1; i++) inserir_primeiro(operando1, 0); } // soma do ultimo algarismo até o primeiro // colocando as unidades no resultado e somando a dezena na proxima soma. tam1 = tamanho(operando1); while(tam1 > 0){ valor = ler_pos(operando1, tam1-1) + ler_pos(operando2, tam1-1) + valor/10 ; inserir_primeiro(resultadoSoma, valor%10); tam1--; } // caso sobre uma dezena da soma do primeiro algarismo, ela é adicionada no inicio do numero. if(valor/10 > 0) inserir_primeiro(resultadoSoma, valor/10); return resultadoSoma; }
main() { char expressao[100]; tipo_pilha *pilha; system("cls"); pilha = criar(); printf("Digite uma frase:\n"); gets(expressao); int tamanho=strlen(expressao)-1,i=0; for (i;i<=tamanho;i++){ if(expressao[i]=='('){ push(pilha,expressao[i]); } else if((expressao[i]==')')& !(pilha_vazia(pilha))){ pop(pilha); } } if (pilha_vazia(pilha)){ puts("EXPRESSAO CORRETA"); } else{ puts("EXPRESSAO INCORRETA LEK"); } getch(); }
int main(int argc, char *argv[]) { char *entrada=argv[1], *saida=argv[2]; //Obtendo o nome dos arquivos passados por parametro ao executar o programa int instancias,aux; FILE *input= fopen (entrada,"r"); //Abertura do arquivo de leitura de dados. FILE *out= fopen (saida,"w+a"); //Abertura do arquivo para gravação dos dados de saida. Matriz *MAT; if(input == NULL ) //Verificar se o arquivo de entrada não pode ser aberto. { fprintf(out,"ERRO 01: Houve algum problema ao abrir o seu arquivo de texto, verifique se o arquivo existe ou se o nome digitado esta correto"); fclose(input); fclose(out); return 0; } fscanf(input,"%d ",&instancias); if(instancias <= 0) //Verifica se o número de instãncias lido é permitido. { fprintf(out,"ERRO 02: Número de instâncias insuficiente"); fclose(out); fclose(input); return 0; } while(instancias > 0)//Loop para executar as leituras e operações das matrizes de acordo com o número de instâncias. { MAT = criar(MAT,input,out); MAT = carregar(MAT,input); MAT = verificar(MAT,input,out); imprimir(MAT,out,instancias); liberar(MAT); instancias--; } fclose(out); //fechamento dos arquivos utilizados durante o programa fclose(input); return 0; }
car *inserir(car**inicio,car**fim ){ int placa,cont=0; car *p; printf("Informe um numero "); scanf("%d",&cont); if(*inicio==NULL){ *fim=*inicio=criar(&*inicio,cont); }else{ p=criar(&*inicio,cont); p->prox=*inicio; *inicio=p; p=p->prox; *fim=p; } }
//ADICIONAR AO HEADER Lista* preparar_lista(){ Lista* a = criar(); a = inserir(a, 0, RAM_VAL_2GB, HD_VAL_500GB, PROC_CLOCK_VAL_428); a = inserir(a, 1, RAM_VAL_8GB, HD_VAL_1000GB, PROC_CLOCK_VAL_828); a = inserir(a, 2, RAM_VAL_8GB, HD_VAL_250GB, PROC_CLOCK_VAL_423); a = inserir(a, 3, RAM_VAL_4GB, HD_VAL_500GB, PROC_CLOCK_VAL_823); a = inserir(a, 4, RAM_VAL_1GB, HD_VAL_750GB, PROC_CLOCK_VAL_423); a = inserir(a, 5, RAM_VAL_1GB, HD_VAL_250GB, PROC_CLOCK_VAL_423); a = inserir(a, 6, RAM_VAL_2GB, HD_VAL_750GB, PROC_CLOCK_VAL_428); return a; }
int main() { int estado = 1; unsigned int discos = 0; Pilha * A = criar(); Pilha * B = criar(); Pilha * C = criar(); while(estado != 1000){ switch(estado){ case 1 : system("cls"); estado = inicializar(A, &discos); break; case 2 : system("cls"); mostrarPinos(A,B,C); case 3 : mostrarPossibilidades(A,B,C); case 4 : estado = movimentar(A, B, C); break; case 5 : if(tamanho(C) == discos){ estado = 6; } else{ estado = 2; } break; case 6 : terminar(A, B, C); estado = 1000; break; } } printf("Jogo finalizado!!"); }
int main(){ int op; FILE *arquivo; criar(arquivo); do{ printf("***********************************\n"); printf("* MENU *\n"); printf("***********************************\n"); printf("* 1 - Cadastrar Banda *\n"); printf("* 2 - Listar Bandas *\n"); printf("* 3 - Pesquisar Banda *\n"); printf("* 4 - Alterar Banda *\n");//falta printf("* 5 - Remover Bandas *\n");//falta printf("* 6 - Creditos *\n"); printf("* 7 - Sair *\n"); printf("***********************************\n"); printf("\nDigite sua opcao: "); scanf("%d",&op); switch(op){ case 1: system("cls"); inserir(arquivo); break; case 2: system("cls"); exibir(arquivo); break; case 3: system("cls"); pesquisar(arquivo); break; case 4: //falta break; case 5: //falta break; case 6: system("cls"); creditos(); break; default: printf("Saindo!\n"); } }while(op != 7); system("pause"); }
inserir2(car **ini, car **fim2,car **inicio){ car *p,*aux=*inicio; int cont=0; cont=aux->cont; if(*ini==0){ *ini=criar2(&*ini,cont); }else{ p=criar(&*ini,cont); p->prox=*ini; *ini=p; p=p->prox; *fim2=p; } }
Lista * numero_para_lista(int n) // funcionando perfeitamente { Lista *resultado = criar(); if(n == 0) inserir_primeiro(resultado,0); else { while(n>0) { inserir_primeiro(resultado,n%10); n = n/10; } } return resultado; }
int main() { struct pilha *minha_pilha; int tamanho; minha_pilha = criar(); empilhar(minha_pilha, 'a'); empilhar(minha_pilha, 'b'); empilhar(minha_pilha, 'c'); tamanho = tamanho_pilha(minha_pilha); printf("Desempilhando elementos \n"); for (int i = 0; i < tamanho; i++) { printf("%c \n", desempilhar(minha_pilha)); } destruir(minha_pilha); return 0; }
main() { char palavra[50]; int i=0; tipo_pilha *pilha; system("cls"); pilha = criar(); printf("Digite uma palavra \n"); fflush(stdin); strupr(gets(palavra)); int tamanho = strlen(palavra); for (i=0;i<tamanho;i++){ push(pilha,palavra[i]); } printf("\n"); imprimir_pilha(pilha); getch(); }
Lista * listaXnum(Lista * l, int n) // funcionando perfeitamente { Lista * resultadoMult = criar(); int valor = 0; // resultado da multiplicação de 'n' por um valor da lista int tam; // multiplica 'n' por toda a lista 'l' for(tam = tamanho(l); tam > 0; tam--) { valor = n*ler_pos(l, tam-1) + valor/10; //valor é um numero de dois digitos inserir_primeiro(resultadoMult, valor%10); // insere a unidade no final } // ao terminar a multiplicacao, insere o "vai um", que é a dezena, no inicio do numero; if(valor/10 > 0) inserir_primeiro(resultadoMult, valor/10); return resultadoMult; }
int main(int argc, char const *argv[]) { printf("antes\n"); system("free"); BigNum *big = criar(); int i = 0; for(i=0; i < 100; i++){ adicionarNumero(i, big); } //for(i=0; i < 10; i++){ // adicionarNumero(i, big); //} getchar(); printf("depois alocado\n"); system("free"); destruir(big); getchar(); printf("depois desalocado\n"); system("free"); return 0; }
//------------------------------------------------------------------------------------------ main() { char frase[50],frase2[50]; int pos; tipo_pilha *pilha; system("cls"); pilha = criar(); printf("Digite uma frase\n"); gets(frase); for (pos = 0; pos <= strlen(frase) - 1; ++pos) { push(pilha, frase[pos]); } printf("\n"); imprimir_pilha(pilha,frase2); verificacao(frase,frase2); }
//------------------------------ main() { char letra; int numero_de_vezes=0; tipo_pilha *pilha; pilha = criar(); printf ("Informe a letra: "); scanf ("%c",&letra); while (toupper(letra) != 'X') { push(pilha,letra); fflush (stdin); printf ("Informe a letra: "); scanf ("%c",&letra); } verificacao(pilha); printf ("O numero de vezes que aparece a letra A é %d",verificacao(pilha)); getch (); }
int main(){ ARVORE_BINARIA arv1; criar(&arv1); NO *node; INFO item; item.chave = 1; item.valor = '+'; node = criar_raiz(&arv1, &item); item.chave = 2; item.valor = 'A'; inserir_esquerda(node, &item); item.chave = 3; item.valor = '*'; node = inserir_direita(node, &item); item.chave = 4; item.valor = 'B'; inserir_esquerda(node, &item); item.chave = 5; item.valor = 'C'; node = inserir_direita(node, &item); emordem(&arv1); printf("\n"); preordem(&arv1); printf("\n"); posordem(&arv1); printf("\n"); return 0; }
Lista * listaXlista(Lista *operando1, Lista *operando2) // funcionando perfeitamente { int tam2 = tamanho(operando2); int i,j; Lista *resultado1 = criar(); Lista *resultado2; Lista *lixo; for(j = 0; tam2 > 0; j++, tam2--) { resultado2 = listaXnum(operando1, ler_pos(operando2, tam2-1)); for(i = 0; i<j ;i++) { inserir_ultimo(resultado2, 0); } // como o resultado1 sempre vai pegar um valor de soma e vai perder o caminho para a lista original // a variavel "lixo" sempre pega os endereços perdidos e destrói. lixo = resultado1; resultado1 = somar(resultado1, resultado2); destruir(lixo); } return resultado1; }
int main() { int i; //criar a &lista LISTA_DUPLAMENTE_LIGADA lista; criar(&lista); //inserir itens na &lista for (i = 0; i < 10; i++) { ITEM item; item.chave = i; item.valor = rand(); if (i%2==0) { inserir_inicio(&lista, &item); } else { inserir_fim(&lista, &item); } } imprimir(&lista); printf("---\n"); imprimir_inverso(&lista); printf("---\n"); { ITEM item; if (buscar(&lista, 8, &item)) { printf("encontrado: %d - %d\n---\n", item.chave, item.valor); } for (i = 0; i < 3; i++) { remover_inicio(&lista); } } // tenta inserir novo ITEM em posicao invalida ITEM item; item.chave = rand(); item.valor = 111; inserir_posicao(&lista, 9, &item); imprimir(&lista); printf("---\n"); // insere 5 itens no final da lista for (i = 0; i < 5; i++) { ITEM item; item.chave = rand(); item.valor = i; inserir_fim(&lista, &item); } imprimir(&lista); printf("---\n"); // remove 3 ultimos itens da lista for (i = 0; i < 3; i++) { remover_fim(&lista); } // remove o primeiro no remover_posicao(&lista, 0); imprimir(&lista); printf("---\n"); apagar_lista(&lista); return 0; }
void main(){ clrscr; criar(); menu();}
int main() { FILE *arquivoSimetrico; FILE *arquivoPreOrdem; FILE *arquivoPosOrdem; FILE *arquivoEntrada; arquivoSimetrico = fopen("imprimirSimetrico.txt","w"); arquivoPreOrdem = fopen("imprimirPreOrdem.txt","w"); arquivoPosOrdem = fopen("imprimirPosOrdem.txt","w"); NoArv *arvore = criar(); int opcao; int numero; char *letra= (char*) malloc(sizeof(char)*40); char *nomeArquivo = (char*) malloc(sizeof(char)*40); do{ printf("\n 0-Sair \n 1-Inserir \n 2- Remover \n 3-Buscar \n 4- imprimirSimetrico \n 5- imprimirPreOrdem \n 6- imprimirPosOrdem \n 7- Ler de Arquivo de Entrada"); scanf("%d",&opcao); switch (opcao){ case 1: printf("\n Digite o a informação do nó \n "); scanf("%d",&numero); printf("\n Digite o a letra do nó \n "); scanf(" %[^\n]",letra); arvore = inserir(arvore,numero,letra); break; case 3: printf("\n Digite o a informação do nó \n "); scanf("%d",&numero); buscar(arvore,numero); break; case 4: printf("\n Imprimindo Simetrico \n"); imprimirSimetrico(arvore,arquivoSimetrico); break; case 5: printf("\n Imprimindo Pré Ordem \n"); imprimirPreOrdem(arvore,arquivoPreOrdem); break; case 6: printf("\n Imprimindo Pós Ordem \n"); imprimirPosOrdem(arvore,arquivoPosOrdem); break; case 7: printf("Digite um nome do arquivo \n"); scanf(" %40[^\n]",nomeArquivo); arquivoEntrada = fopen(nomeArquivo,"r"); while( (fscanf(arquivoEntrada,"%d %c",&numero,letra)) != EOF ){ arvore = inserir(arvore,numero,letra); } break; default: printf("\n Ok Saindo...\n "); } }while( opcao != 0 ); fclose(arquivoSimetrico); fclose(arquivoPreOrdem); fclose(arquivoPosOrdem); fclose(arquivoEntrada); free(nomeArquivo); return 0; }