Ir para conteúdo
Fórum Script Brasil

Claudio Marques

Membros
  • Total de itens

    5
  • Registro em

  • Última visita

1 Seguidor

Sobre Claudio Marques

Últimos Visitantes

O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.

Claudio Marques's Achievements

0

Reputação

  1. /*----Apenas um esqueleto de como pode ser feito o programa, ainda a escrever as opcoes do menu 5 e 6, tambem ainda sem controles de entrada de dados errada, etc, mas é um bom norte para terminar e refinar o programa---*/ #include<stdio.h> #include<stdlib.h> #include<math.h> //struct formatando input de dados e armazenagem struct volume_cilindros { int id_volume, altura_cilindro, raio_cilindro; float volume_cilindro; }; //ponteiro para manusear lista de volume_cilindros struct volume_cilindros *sequencia_vol_cilindros; void adicionarelementolista(struct volume_cilindros *sequencia_vol_cilindros, int *tamanho_lista, int novo_id_volume, int nova_altura_cilindro, int novo_raio_cilindro, float novo_volume_cilindro) { if(*tamanho_lista == 0) { struct volume_cilindros *novalista; novalista = (struct volume_cilindros*) malloc(1 * sizeof(struct volume_cilindros)); //novos dados salvo em nova lista (novalista[0]).id_volume = novo_id_volume; (novalista[0]).volume_cilindro = novo_volume_cilindro; (novalista[0]).altura_cilindro = nova_altura_cilindro; (novalista[0]).raio_cilindro = novo_raio_cilindro; //inserindo dados lista original (sequencia_vol_cilindros[0]).id_volume = (novalista[0]).id_volume; (sequencia_vol_cilindros[0]).volume_cilindro = (novalista[0]).volume_cilindro; (sequencia_vol_cilindros[0]).altura_cilindro = (novalista[0]).altura_cilindro; (sequencia_vol_cilindros[0]).raio_cilindro = (novalista[0]).raio_cilindro; free(novalista); }else { struct volume_cilindros *copialista; copialista = (struct volume_cilindros*) malloc((*tamanho_lista + 1) * sizeof(struct volume_cilindros)); //novos dados salvos em copialista (copialista[0]).id_volume = novo_id_volume; (copialista[0]).volume_cilindro = novo_volume_cilindro; (copialista[0]).altura_cilindro = nova_altura_cilindro; (copialista[0]).raio_cilindro = novo_raio_cilindro; //Passa os elementos da lista antiga para a nova uma posicao a frente int cont; for(cont = 0; cont < *tamanho_lista; cont++) { (copialista[cont + 1]).id_volume = (sequencia_vol_cilindros[cont]).id_volume; (copialista[cont + 1]).volume_cilindro = (sequencia_vol_cilindros[cont]).volume_cilindro; (copialista[cont + 1]).altura_cilindro = (sequencia_vol_cilindros[cont]).altura_cilindro; (copialista[cont + 1]).raio_cilindro = (sequencia_vol_cilindros[cont]).raio_cilindro; } //salva tudo na lista original for(cont = 0; cont < *tamanho_lista + 1; cont++) { (sequencia_vol_cilindros[cont]).id_volume = (copialista[cont]).id_volume; (sequencia_vol_cilindros[cont]).volume_cilindro = (copialista[cont]).volume_cilindro; (sequencia_vol_cilindros[cont]).altura_cilindro = (copialista[cont]).altura_cilindro; (sequencia_vol_cilindros[cont]).raio_cilindro = (copialista[cont]).raio_cilindro; } free(copialista); } *tamanho_lista = *tamanho_lista + 1; } void removeelemento(struct volume_cilindros *sequencia_vol_cilindros, int *tamanho_lista, int posicao) { struct volume_cilindros *copialista; copialista = (struct volume_cilindros*) malloc((*tamanho_lista - 1) * sizeof(struct volume_cilindros)); if(posicao == 0) { int cont; //despreza o primeiro elemento for(cont = 1; cont < *tamanho_lista; cont++) { (copialista[cont - 1]).id_volume = (sequencia_vol_cilindros[cont]).id_volume; (copialista[cont - 1]).volume_cilindro = (sequencia_vol_cilindros[cont]).volume_cilindro; (copialista[cont - 1]).altura_cilindro = (sequencia_vol_cilindros[cont]).altura_cilindro; (copialista[cont - 1]).raio_cilindro = (sequencia_vol_cilindros[cont]).raio_cilindro; } //salva na lista original for(cont = 0; cont < *tamanho_lista - 1; cont++) { (sequencia_vol_cilindros[cont]).id_volume = (copialista[cont]).id_volume; (sequencia_vol_cilindros[cont]).volume_cilindro = (copialista[cont]).volume_cilindro; (sequencia_vol_cilindros[cont]).altura_cilindro = (copialista[cont]).altura_cilindro; (sequencia_vol_cilindros[cont]).raio_cilindro = (copialista[cont]).raio_cilindro; } }else { //Passa os elementos da lista antiga para a nova ate o elemento desejado int cont; for(cont = 0; cont < *tamanho_lista - 1; cont++) { if(cont < posicao) { //Faz uma copia dos elementos ate a posicao (copialista[cont]).id_volume = (sequencia_vol_cilindros[cont]).id_volume; (copialista[cont]).volume_cilindro = (sequencia_vol_cilindros[cont]).volume_cilindro; (copialista[cont]).altura_cilindro = (sequencia_vol_cilindros[cont]).altura_cilindro; (copialista[cont]).raio_cilindro = (sequencia_vol_cilindros[cont]).raio_cilindro; }else if(posicao < *tamanho_lista - 1) { //Faz uma copia dos elementos apos a posicao, se ela não for a ultima (copialista[cont]).id_volume = (sequencia_vol_cilindros[cont + 1]).id_volume; (copialista[cont]).volume_cilindro = (sequencia_vol_cilindros[cont + 1]).volume_cilindro; (copialista[cont]).altura_cilindro = (sequencia_vol_cilindros[cont+ 1]).altura_cilindro; (copialista[cont]).raio_cilindro = (sequencia_vol_cilindros[cont + 1]).raio_cilindro; } } //salva lista original for(cont = 0; cont < *tamanho_lista - 1; cont++) { (sequencia_vol_cilindros[cont]).id_volume = (copialista[cont]).id_volume; (sequencia_vol_cilindros[cont]).volume_cilindro = (copialista[cont]).volume_cilindro; (sequencia_vol_cilindros[cont]).altura_cilindro = (copialista[cont]).altura_cilindro; (sequencia_vol_cilindros[cont]).raio_cilindro = (copialista[cont]).raio_cilindro; } } free(copialista); *tamanho_lista = *tamanho_lista - 1; } float retornavolume(struct volume_cilindros *sequencia_vol_cilindros, int *tamanho_lista, int novo_id_volume, int *posicao) { int cont, aux; for(cont = 0; cont < *tamanho_lista; cont++) { //Se encontrar alguém com o id_volume procurado if((sequencia_vol_cilindros[cont]).id_volume == novo_id_volume) { printf("Encontrado na posicao %d\n", cont); aux = cont; } } return ((sequencia_vol_cilindros[aux]).volume_cilindro); } void imprimesequencia(struct volume_cilindros *sequencia_vol_cilindros, int tamanho_lista) { int cont; for(cont = 0; cont < tamanho_lista ; cont++) { printf("\ntamanho_lista %d |", tamanho_lista); printf("%d |", cont); printf("%d |", (sequencia_vol_cilindros[cont]).id_volume); printf("%.2f |", (sequencia_vol_cilindros[cont]).volume_cilindro); printf("%d |", (sequencia_vol_cilindros[cont]).altura_cilindro); printf("%d |", (sequencia_vol_cilindros[cont]).raio_cilindro); } } int main(void) { //ponteiro para manusear lista de volume_cilindros struct volume_cilindros *sequencia_vol_cilindros; int tamanho_lista = 0, operador = 0, posicao; while(operador < 7 && operador >= 0) { printf("\nTamanho atual da lista: %d", tamanho_lista); printf("\nOpcoes"); printf("\n1 - Insercao de elemento na lista\n"); printf("\n2 - Retirada de elemento da lista na posicao N\n"); printf("\n3 - Procurar um elemento na lista com o campo id_volume\n"); printf("\n4 - Imprimir lista\n"); printf("\n5 - Gravar lista\n"); printf("\n6 - Abrir lista\n"); printf("\n7 - Sair\n"); fflush(stdin); scanf("%d", &operador); getchar(); //variaveis para inclusao de elementos int novo_id_volume, nova_altura_cilindro, novo_raio_cilindro; float novo_volume_cilindro; switch(operador) { case 1: printf("\nDigite o id_volume do novo elemnto da lista\n"); fflush(stdin); scanf("%d", &novo_id_volume); printf("\nDigite a altura do cilindro em mm\n"); fflush(stdin); scanf("%d", &nova_altura_cilindro); printf("\nDigite o raio do cilindro em mm\n"); fflush(stdin); scanf("%d", &novo_raio_cilindro); novo_volume_cilindro = 3.1416 * (float)pow(novo_raio_cilindro, 2) * (float)nova_altura_cilindro; adicionarelementolista(&sequencia_vol_cilindros, &tamanho_lista, novo_id_volume, nova_altura_cilindro, novo_raio_cilindro, novo_volume_cilindro); break; case 2: printf("\nDigite a Posicao: "); fflush(stdin); scanf("%d", &posicao); removeelemento(&sequencia_vol_cilindros, &tamanho_lista, posicao); break; case 3: printf("\nDigite o id_volume"); fflush(stdin); scanf("%d", &novo_id_volume); printf("\%.2f", retornavolume(&sequencia_vol_cilindros, &tamanho_lista, novo_id_volume, &posicao)); break; case 4: imprimesequencia(&sequencia_vol_cilindros, tamanho_lista); break; case 5: //a desenvolver break; case 6: //a desenvolver break; } } return 0; }
  2. /*---------Alocacao dinamica é o peso especifico para resolvar esta questoa----*/ #include<stdio.h> #include<stdlib.h> int main (void) { int op = 1; do { int *p;//criando um ponteiro para o vetor int i, quantidade; //recebendo a quantidade de elementos printf("Digite a quantidade de elementos do vetor: "); scanf("%d", &quantidade); //Alocando a memoria para o vetor de acordo com a quantidade //de elementos do vetor p = (int*)(malloc(quantidade * sizeof(int))); //caso não seja possível alocar memória suficiente envia mensagem //e sair do programa com exit(1) if(p==NULL) { printf("\nErro da alocação de memoria"); system("pause"); exit(1); } printf("\n"); //recebendo os dados para o vetor for(i = 0;i < quantidade; i++) { printf("Digite o numero para o indice [%d]", i); scanf("%d", &p[i]); } printf("\n"); //percorre o vetor mostarndo os valores armazenados for( i = 0; i < quantidade; i++) { printf("Valor armazenado no elemento de indice [%d] = %d\n", i, p[i]); } printf("\n"); //liberando a memoria que foi alocada free(p); printf("\n0 - para sair, 1 - para continuar."); scanf("%d", &op); }while(op != 0); return 0; }
  3. /**Abaixo alguns printf's adicionais com operações pos e preincremento para tentar eslarecer os resultados---*/ #include <stdio.h> #include <string.h> int main() { float a=15; float b=3; b/=a; //neste ptintf b é o resultado da operacao acima printf("%.2f %.2f \n", a, b); //nesta operacao o valor de b estah no valor da primeira operacao acima, que estah sendo atribuido a a e depois //da atribucao é que soma 1 ao proprio b, por isso que só na funcao printf é que aparece o valor adicionado +1 a=b++; printf("%.2f %.2f \n", a, b); //alguns exemplos para entender melhor, diminui 1 do proprio b primeiro e depois atribui valor a a a=--b; printf("%.2f %.2f \n", a, b); //primeiro soma 1 ao proprio b e depois atribui a a a=++b; printf("%.2f %.2f \n", a, b); return 0; }
  4. /*---Achei o enunciado inapropriado e de certa maneira impreciso, mas aqui vai um codigo que resolve a questao sob a otica que entendi ser possivel diante dos dados colocados*/ #include<stdio.h> int main(void) { //definicao de variaveis int seq1[18] = {2,2,2,2,3,3,3,3,3,3,2,2,1,1,3,3,1,1}; //sequencias para verificacao de repeticao de int seq2[18] = {2,2,2,2,3,3,3,3,3,3,2,2,1,1,3,3,1,1}; //cada numero na sequencia //variaveis pata loops for e auxiliares para armazenar numero e numero de vezes que repetiu int i, j, k = 0, aux = 0, aux2 = 0, aux3 = 0, aux4 = 0; int num1[10] = {0}, aux1[10] = {0}; //loop's for para verificar cada numero quanto repete na serie e armazenamento destes dados for(i = 0; i < 18; i++) { aux = 0; for(j = 0; j < 18; j++) { //primeira passagem no loop com i == 0 if(i == 0) { if(seq1[i] == seq2[j]) { num1[k] = seq1[i]; aux++; aux1[k] = aux; aux2 = 1; } } //demais passagens no loop com i > 0 if( i > 0) { //verificacao se numero é novo ou não aux4 = 0; aux3 = k; while(aux3 >= 0) { if(seq1[i] == num1[aux3 - 1]) aux4 = 1; aux3--; } if(seq1[i] == seq2[j] && !aux4) { num1[k] = seq1[i]; aux++; aux1[k] = aux; aux2 = 1; } } } //incremento de k para prosseguir as verificacoes de repeticao e armazenamento apropriado de dados if(i < 17) { aux4 = 0; aux3 = k; while(aux3 >= 0) { if(seq1[i + 1] == num1[aux3]) aux4 = 1; aux3--; } if(!aux4) k = aux2 + k; } } //Que numero mais repetiu e quantas vezes for(i = 0; i <= k; i++) { if( i == 0) aux4 = i; if( i > 0) { if(num1[i] > num1[i - 1]) aux4 = i; } } printf("\nO numero que mais se repete é %d e %d vezes", num1[aux4], aux1[aux4]); return 0; }
  5. /* O numero par é determinado quando na primeira divisão por 2 o resto é zero, multiplos de 2 é que pode ser dividido por 2 sucessivamente com resto sempre 0. Ou seja, seu enunciado ficou meio confuso e talvez o codigo a seguir ajude a esclarecer a questao*/ #include<stdio.h> int main (void) { //definindo variáveis int a, b, c = 0; //entrada numero a verificar se é par ou impar printf("Digite um numero:"); scanf("%d", &b); //verificaçao se o numero é multiplo de 2 for(a = 0; b > 1; a++) { c = c + b % 2; b = b / 2; // mostra variaveis, c, b e a acada passagem pelo loop fot printf("\nc = %d, b = %d, a = %d", c, b, a); } //reconstituicao do numero digitado multiplicando-se por 2 for( a; a > 0; a--) { b = b * 2; } //mostra o numero reconstituido multiplo de 2 if(c == 0) printf("\nB = %d", b); else printf("\nO numero digitado não é multiplo de 2"); return 0; }
×
×
  • Criar Novo...