Ir para conteúdo
Fórum Script Brasil

jrsilvamg

Membros
  • Total de itens

    37
  • Registro em

  • Última visita

Tudo que jrsilvamg postou

  1. jrsilvamg

    Erro codigo C

    Como você quer pegar um nome deve se usar uma STRING(%s) e não um CHAR(%c) seu codigo #include <stdio.h> char nome; printf("\n Digite o Nome: "); scanf("%c",&nome); printf("\n Nome: %c", nome); } Correto #include <stdio.h> char nome[50]; printf("\n Digite o Nome: "); scanf("%s",&nome); printf("\n Nome: %s", nome); } Espero que ajude.
  2. E só utilizar uma laço FOR e imprimir os * acrescentado 2 a cada laço. Pode procurar ai no Forum que tem vários POST sobre este exercício. Um exemplo = http://scriptbrasil.com.br/forum/index.php...amp;hl=piramide
  3. jrsilvamg

    menus com switch

    você não está informado a variavel "ser", qual valor dela? scanf ("%c", &serv); switch (serv) { case 'a': printf ("a");break; case 'b': printf ("b");break; case 'c': printf ("c");break; case 'd': printf ("d");break; }
  4. Eu fiz um trabalho na faculdade sobre arvore B e so você adaptar para suas necessidades ai. #include <stdio.h> #include <stdlib.h> #define max 10 typedef long TipoChave; typedef struct Registro { TipoChave Chave; /* outros componentes */ } Registro; typedef struct No * Apontador; typedef struct No { Registro Reg; Apontador Esq, Dir; } No; typedef Apontador TipoDicionario; //chamadas de funcoes void Inicializa(Apontador *p); void Permut( TipoChave A[], int n); void Insere(Registro x, Apontador *p); void TestaI(No *p, int pai); void Testa(No *p); void Cabecalho(); void OrdemCrescente(No *p); void OrdemDecrescente(No *p); void ImprimeArvore(int camada, No *p); void MaiorNumero(No *p); void MenorNumero(No *p); void NoFolhas(No *p); void ProcuraNumeroDir(No *p, int numero); void ProcuraNumeroEsq(No *p, int numero); int MenuOpcao(int opcao); double rand0a1(); int main(int argc, char *argv[]){ int opcao, //variavel para indicar as opcoes p/ usuario i, //contador numero; //recebe o numero que o usuario quer inserir na arvore No *Dicionario; Registro x; TipoChave vetor[max]; srand(time(NULL)); //faz gerar números diferentes a cada execução. só precisa ser chamada UMA vez */ //inicializa o dicionario com NULL Inicializa(&Dicionario); //cria um vetor ordenado for (i = 0; i < max; i++) vetor[i] = i+1; //embaralha os numeros no vetor Permut(vetor,max-1); //insere cada chave na arvore e testa sua integridade apos cada insercao for (i = 0; i < max; i++){ x.Chave = vetor[i]; Insere(x, &Dicionario); Testa(Dicionario); } while(opcao!=0){ // enquanto o usuario não digitar 0 o programa não ira finalizar //funcao onde mostra o Menu de opcoes para usuario opcao = MenuOpcao(opcao); //imprime na tela a funcao que o usuario selecionou switch(opcao){ case 1 : { //CASE 1 = Insere um numero na arvore Cabecalho(); printf("Opcao [1] - Insere numero na arvore\n\n"); printf("Digite -1 para sair\n\n"); do{ printf("Inserir o numero: "); scanf("%d", &numero); if(numero!=-1){ x.Chave = numero; Insere(x, &Dicionario); } }while (numero!=-1); break; } case 2 : {//CASE 2 = Imprime na tela a ordem crescente da arvore Cabecalho(); printf("Opcao [2] - Imprime em ordem crescente\n\n"); OrdemCrescente(Dicionario); break; } case 3 : {//CASE 3 = Imprime na tela a ordem decrescente da arvore Cabecalho(); printf("Opcao [3] - Imprime em ordem decrescente\n\n"); OrdemDecrescente(Dicionario); break; } case 4 : {//CASE 4 = Imprime o maior numero na tela Cabecalho(); printf("Opcao [4] - Imprime do maior numero da arvore\n\n"); MaiorNumero(Dicionario); break; } case 5 : {//CASE 5 = Imprime o menor numero na tela Cabecalho(); printf("Opcao [5] - Imprime do maior numero da arvore\n\n"); MenorNumero(Dicionario); break; } case 6 : {//CASE 6 = Imprime na tela os nos folhas Cabecalho(); printf("Opcao [6] - Imprime do nos folhas\n\n"); NoFolhas(Dicionario); break; } case 7 : {//CASE 7 = Imprime na tela os numero a direita do numero informado pelo usuario Cabecalho(); printf("Opcao [7] - Imprime sub-arvore direita de um no\n\n"); printf("\n\nDigite um numero: "); scanf("%d",&numero); ProcuraNumeroDir(Dicionario, numero); break; } case 8 : {//CASE 8 = Imprime na tela os numero a esquerda do numero informado pelo usuario Cabecalho(); printf("Opcao [8]\n\n"); printf("\n\nDigite um numero: "); scanf("%d",&numero); ProcuraNumeroEsq(Dicionario, numero); break; } case 9 : {//CASE 9 = Imprime na tela a arvore binaria Cabecalho(); printf("Opcao [9] - Imprime a arvore binaria\n\n"); ImprimeArvore(0, Dicionario); break; } case 0 : {//CASE 9 = Imprime na tela a arvore binaria exit (0); break; } default : Cabecalho(); printf(">>> ERRO <<<\n"); printf("\n\nOpcao invalida.\n\n"); } printf("\nPresione ENTER para voltar ao MENU\n\n"); system("PAUSE"); } } // funcoes // Inicializa a arvore void Inicializa(Apontador *p){ *p = NULL; } double rand0a1(){ double resultado = (double) rand()/ RAND_MAX; /* Dividir pelo maior inteiro */ if(resultado>1.0) resultado = 1.0; return resultado; } // faz o embaralhamento dos numeros void Permut( TipoChave A[], int n) { int i,j; TipoChave b; for(i = n; i>0; i --){ j = (i * rand0a1()); b = A[i]; A[i] = A[j]; A[j] = b; } } // insere na arove os dados informados void Insere(Registro x, Apontador *p){ if (*p == NULL){ *p = (Apontador)malloc(sizeof(No)); (*p)->Reg = x; (*p)->Esq = NULL; (*p)->Dir = NULL; return; } if (x.Chave < (*p)->Reg.Chave){ Insere(x, &(*p)->Esq); return; } if (x.Chave > (*p)->Reg.Chave) Insere(x, &(*p)->Dir); else printf("Erro : Registro já existe na arvore\n"); } void TestaI(No *p, int pai){ if (p == NULL) return; if (p->Esq != NULL){ if (p->Reg.Chave < p->Esq->Reg.Chave){ printf("Erro: Pai %ld menor que filho a esquerda %ld\n", p->Reg.Chave, p->Esq->Reg.Chave); exit(1); } } if (p->Dir != NULL){ if (p->Reg.Chave > p->Dir->Reg.Chave){ printf("Erro: Pai %ld maior que filho a direita %ld\n", p->Reg.Chave, p->Dir->Reg.Chave); exit(1); } } TestaI(p->Esq, p->Reg.Chave); TestaI(p->Dir, p->Reg.Chave); } void Testa(No *p){ if (p != NULL) TestaI(p, p->Reg.Chave); } //-------------- Cabecalho ------------------------------------------- void Cabecalho(){ system("cls"); printf("#################################################\n"); printf("#\t\t AEDIII\t\t\t#\n"); printf("#-----------------------------------------------#\n"); printf("#\t\tArvore Binaria\t\t\t#\n"); printf("#################################################\n\n"); } //-------------- Menu de opcao ------------------------------------------- int MenuOpcao(int opcao){ Cabecalho(); printf(">> Menu - Escolha umas das opcoes abaixo\n\n"); printf("1 -> Inserir numero\n"); printf("2 -> Imprime ordem crescente\n"); printf("3 -> Imprime ordem decrescente\n"); printf("4 -> Imprime maior numero\n"); printf("5 -> Imprime menor numero\n"); printf("6 -> Imprime nos folhas\n"); printf("7 -> Imprime sub-arvore direita de um no\n"); printf("8 -> Imprime sub-arvore esquerda de um no\n"); printf("9 -> Imprime arvore\n"); printf("0 -> Finalizar o programa\n\n"); printf("Digite uma opcao: "); scanf("%d", &opcao); return opcao; } //-------------- Imprime a ordem crescente da arvore ------------------- void OrdemCrescente(No *p){ if (p == NULL) return; OrdemCrescente(p->Esq); printf("> %d\n", p->Reg.Chave); OrdemCrescente(p->Dir); } //-------------- Imprime a ordem decrescente da arvore ------------------- void OrdemDecrescente(No *p){ if (p == NULL) return; OrdemDecrescente(p->Dir); printf("> %d\n", p->Reg.Chave); OrdemDecrescente(p->Esq); } //--------------Imprime a arvore na tela --------------------------------- void ImprimeArvore(int camada, No *p){ int i; if(p == NULL) return; ImprimeArvore(camada+1, p->Dir); for(i=0;i<camada;i++) printf(" "); printf("%d\n",p->Reg.Chave); ImprimeArvore(camada+1, p->Esq); } //--------------Procura o maior numero da arvore-------------------------- void MaiorNumero(No *p){ if((p->Dir != NULL) && (p->Dir->Reg.Chave > p->Reg.Chave)) MaiorNumero(p->Dir); else printf("Maior numero encontrado foi: %d\n\n", p->Reg.Chave); } //--------------Procura o menor numero da arvore-------------------------- void MenorNumero(No* p){ if((p->Esq != NULL) && (p->Esq->Reg.Chave < p->Reg.Chave)) MenorNumero(p->Esq); else printf("Menor numero encontrado foi: %d\n\n", p->Reg.Chave); } //-----------------Procura os nos folhas da arvore------------------------ void NoFolhas(No *p){ if(p == NULL) return; NoFolhas(p->Dir); if(p->Esq == NULL && p->Dir == NULL) printf("%d\n",p->Reg.Chave); NoFolhas(p->Esq); } //--------------Procura os nos a Direita de numero selecionado------------ void ProcuraNumeroDir(No *p, int numero){ if (p == NULL) return; if (numero == p->Reg.Chave) OrdemCrescente(p->Dir); if (numero < p->Reg.Chave) return ProcuraNumeroDir(p->Esq, numero); else return ProcuraNumeroDir(p->Dir, numero); } //--------------Procura os nos a Esquerda de numero selecionado------------ void ProcuraNumeroEsq(No *p, int numero){ if (p == NULL) return; if (numero == p->Reg.Chave) OrdemDecrescente(p->Esq); if (numero < p->Reg.Chave) return ProcuraNumeroEsq(p->Esq, numero); else return ProcuraNumeroEsq(p->Dir, numero); } Espere que ajude
  5. jrsilvamg

    (Resolvido) Vetores em C

    Programas em C são executados sequencialmente uma linha de cada vez Então você precisa primeiro pegar as variáveis e depois executar os cálculos. e em seguida os resultados. #include <stdio.h> #include <stdlib.h> #include <math.h> main(){ float v[3]; float a; printf ("Escolha um valor para x:"); scanf ("%f",&v[0]); printf ("\nEscolha um valor para y:"); scanf ("%f",&v[1]); printf ("\nEscolha um valor para z:"); scanf ("%f",&v[2]); a=abs(pow(v[0],2)+pow(v[1],2)+pow(v[2],2)); printf ("\nA norma desse vetor é:%.3f",a); system("pause"); } Espere que ajude
  6. jrsilvamg

    Ajuda no SQRT

    #include <stdlib.h> #include <stdio.h> #include <string.h> int main(){ int num, res; printf("Digite Um Numero: "); scanf("%d", &num); if (num < 0 ) printf("Numero não tem rais quadrada \n"); else if (num == 0) printf("numero nulo \n"); else if (num > 0){ res = sqrt(num); printf("numero maior que zero \n"); printf("Rais quadrada: %d \n" , res); } system("pause"); return 0; }
  7. Eu fiz um jogo da velha aqui e as casa eu coloquei um numero (1-9) de acordo com a escolha do usuário eu marcava X O.
  8. jrsilvamg

    Ajuda com Vetores

    #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]){ int i, j; float media[8], n[10]; for (i=0; i<10; i++){ printf("Digite o valor: "); scanf("%f", &n[i]); } for ( j = 0; j<8; j++){ media[j] = (n[j]+n[j+1]+n[j+2])/3; printf("A %d media = %.2f\n", j, media[j]); } system("PAUSE"); return 0; } Para inserir com TAG CODEBOX utilize o ultimo icone (Localizado abaixo da FONTE) INSERIR CODE
  9. você precisa de uma matriz [i-j] [0-0][0-1][0-2] [1-0][1-1][1-2] [2-0][2-1][2-2] na diagonal i = j e só você usar dois laços FOR e um IF para resolver Ex.: for (i = 0; i < x; i++) for (j = 0; j < x; j++){ if( i == j) printf(...); else printf(...); }
  10. você precisa de ordenar qts palavras? você pode usar laço FOR para comparar todas as palavras Comparações 1 - 2 1 - 3 1 - 4 2 - 3 2 - 4 3 - 4
  11. O compilador está acusando problema nessa linha de código... O erro é Alguém sabe dizer o porque o compilador acusa tal erro? NO dev aqui funcionou beleza int hora = 10; int i=((hora-3)%1); printf("%d", i);
  12. jrsilvamg

    Ajuda em c++

    problema 01 A função strcoll(string[0], string[1]) compara uma cadeia de caracter retorna -1 string[1] vir primeiro string[0] retorna 0 string[1] for igual string[0] retorna 1 string[1] vir primeiro string[0] Exemplo de um codigo #include <stdio.h> #include <stdlib.h> int main(){ char palavra1[10] = "Pera"; char palavra2[10] = "Maca"; int retorno; retorno = strcoll(palavra2, palavra1); printf("Retorno das %s e %s = %d\n", palavra1, palavra2, retorno); retorno = strcoll(palavra1, palavra2); printf("Retorno das %s e %s = %d\n", palavra2, palavra1, retorno); retorno = strcoll(palavra1, palavra1); printf("Retorno das %s e %s = %d\n", palavra1, palavra1, retorno); system("pause"); } problema 02 são todos os pais do mundo ou só alguns? você precisa colocar no seu codigo os paises possivel e sua capital e com if ou swtich você procura o pais e informa a capital ou no arquivo txt. Espero q ajude.
  13. Primeiramente utilize as tag CODE quando for inserir código, assim fica melhor para visualizar seu código. #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]){ float maior, menor, media = 0, soma = 0; int cont = 0; do{ system("cls"); printf("Digite sua media: "); scanf("%f",&media); //finaliza o programa de o valor digitado for negativo if (media < 0){ printf("Programa finalizado\n"); system("PAUSE"); break; } //inicializa os valores maior e menor if (cont == 0){ maior = media; menor = media; } //verifica se valor e maior ou menor if(maior <= media){ maior = media; cont++; } else if( menor > media){ menor = media; cont++; } //faz a media soma += media; media = soma/cont; //imprime os resultados printf("Maior media = %.2f\n", maior); printf("Menor media = %.2f\n", menor); printf("Media = %.2f\n", media); system("PAUSE"); }while (1); } Espero que ajude
  14. #include <stdio.h> #include <stdlib.h> int main(){ float num = 2.1; int num2; num2 = num; // variavel inteira somente recebe valor inteiro num = num - num2; // valor inteiro menos o valor decimal resulta em somente a parte decimal printf("Valor Inteiro %d\n", num2); printf("Valor Decimal %f\n", num); system("pause"); }
  15. A função strcoll(string[0], string[1]) compara uma cadeia de caracter retorna -1 string[1] vir primeiro string[0] retorna 0 string[1] for igual string[0] retorna 1 string[1] vir primeiro string[0] Exemplo de um codigo #include <stdio.h> #include <stdlib.h> int main(){ char palavra1[10] = "Pera"; char palavra2[10] = "Maca"; int retorno; retorno = strcoll(palavra2, palavra1); printf("Retorno das %s e %s = %d\n", palavra1, palavra2, retorno); retorno = strcoll(palavra1, palavra2); printf("Retorno das %s e %s = %d\n", palavra2, palavra1, retorno); retorno = strcoll(palavra1, palavra1); printf("Retorno das %s e %s = %d\n", palavra1, palavra1, retorno); system("pause"); }
  16. você declarou o nl? porque eu não vi nesta parte do codigo o nl sendo declarado.
  17. Você nem alterou o que o Willian te indicou. você deve usar apenas um = para que o g recebe o valor d g+1 Isto é do próprio C ele tem um limite para mostrar na tela. Você pode salvar este arquivo em txt e depois abrir e ver Eu fiz um programa parecido com o seu mais foi pra LotoFacil onde ele imprime todos os cartões (caso você queria). mais tem uma funcao que retira os cartoes que tem numeros em sequencia, onde você pode limitar as sequencia. Mais o programa é em C #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int y, r1, r2, pts; int n[15]; //matriz onde fica os numeros possiveis para marcar os cartoes int r[15] = { 1, 2, 4, 6, 7, 12, 13, 14, 17, 18, 20, 22, 23, 24, 25}; // resultado para conferir int c = 1, c1 = 1, i, pts15 = 0, pts14 = 0, pts13 = 0, pts12 = 0 , pts11 = 0; //alguns contadores e resultados com 15, 14, 13, 12, 11 pontos for (n[0 ]= 1 ; n[0 ]<12; n[0 ]++) for (n[1 ]= n[0 ]+1; n[1 ]<13; n[1 ]++) for (n[2 ]= n[1 ]+1; n[2 ]<14; n[2 ]++) for (n[3 ]= n[2 ]+1; n[3 ]<15; n[3 ]++) for (n[4 ]= n[3 ]+1; n[4 ]<16; n[4 ]++) for (n[5 ]= n[4 ]+1; n[5 ]<17; n[5 ]++) for (n[6 ]= n[5 ]+1; n[6 ]<18; n[6 ]++) for (n[7 ]= n[6 ]+1; n[7 ]<19; n[7 ]++) for (n[8 ]= n[7 ]+1; n[8 ]<20; n[8 ]++) for (n[9 ]= n[8 ]+1; n[9 ]<21; n[9 ]++) for (n[10]= n[9 ]+1; n[10]<22; n[10]++) for (n[11]= n[10]+1; n[11]<23; n[11]++) for (n[12]= n[11]+1; n[12]<24; n[12]++) for (n[13]= n[12]+1; n[13]<25; n[13]++) for (n[14]= n[13]+1; n[14]<26; n[14]++) { y = verificaSequencia(n); if (y == 1){ for (i = 0; i < 15; i++) printf("%d-", n[i]); printf(" [%d]\n", c); c++; pts = 0; for (r1 = 0; r1 < 15; r1++){ for(r2 = 0; r2 < 15; r2++){ if (n[r1] == r[r2]) pts++; } } if ( pts == 15 ) pts15++; if ( pts == 14 ) pts14++; if ( pts == 13 ) pts13++; if ( pts == 12 ) pts12++; if ( pts == 11 ) pts11++; } } printf("15 [%d] - 14 [%d] - 13 [%d] - 12 [%d] - 11 [%d]\n", pts15, pts14, pts13, pts12, pts11); printf("Premio Total %d\n", pts=(pts11*2.5+pts12*5+pts13*12.5)); system("PAUSE"); return 0; } //Verificador de sequencia de numero /* Verifica se o cartao existe um sequencia de numero Ex.: v = 3 se o cartao tiver uma sequencia de 3 numeros ele não vai ser impresso [1 - 2 - 3] sequencia não imprime [1 - 2 - 4] não tem sequencia cartao impresso na tela */ int verificaSequencia(int n[]){ int v = 3, qtdverificacao, j, i = 0, seq, x; qtdverificacao = (15 - v)+1; x = (i+v-1); for (j = 0; j < qtdverificacao; j++){ seq = 0; for (i; i < x; i++){ if (n[i+1] == n[i]+1)seq++; } if(seq == v-1) return 0; i = j+1; x++; //system("Pause"); } return 1; } Espero q ajude. Qualquer duvida sobre o codigo pode postar ai que lhe explico.
  18. jrsilvamg

    duvida sobre vetores

    Post o código que você já fez, que ajudamos você a tirar sua duvidas.
  19. Criando os vetoresint a[10]; int b[10]; int c[20]; for (i=0; 1 < 10; i++){ printf("Digite o numero A[%d]: ") scanf("%d", &i); } for (i=0; i < 10; i++){printf("Digite o numero B[%d]: ") scanf("%d", &i); } c) Contar a quantidade de conflitos (valores iguais) entre A e B; for(i=0; i<10; i++) for(j =0; j<10; j++){ if(a == b[j]) cont++; } printf("Quantidade de conflitos e = %d\n", cont); for(i=0; i<10; i++) c = a; for(i=10, j=0; j<10; i++, j++) c = b[j];
  20. Para trabalhar com JAVA você vai precisar: JDK - Maquina Virtual Java NetBeans ou Eclipse - Compilador Este programas você vai precisar se for trabalhar com JAVA MySQL - banco de dados IReport - gerar relatorios DBDesigner - Visualização e criação de banco de dados o Forum Script Brasil tem uma parte sobre java tmb e tmb o javafree.uol.com.br
  21. jrsilvamg

    c++ iniciante

    Posta o código para que possamos ajudar.
  22. #include <stdio.h> #include <stdlib.h> #define TAMANHO 5 // e qtd de remedio que deseja inserir no struct typedef struct registro{ int code; char nome[50]; char unidade[50]; int quant; float preço; }remedeio; remedeio remedio[TAMANHO]; //Não sei porque desse ED2=VETOR e o que tem a ver com o ED1 //declara seu struct como um vetor int main(int argc, char *argv[]){ int opcao1, opcao2, i, codigo; //Remedios com o codigo -1 não existem for (i = 0; i < TAMANHO; i++) remedio[i].code = -1; do{ //Opcoes para o programa system("cls"); printf("1 -> Inserir\n"); printf("2 -> Excluir\n"); printf("3 -> Alterar\n"); printf("4 -> Consultar\n"); printf("5 -> Sair\n\n"); printf("Escolha uma da opcao: "); scanf("%d", &opcao1); switch (opcao1){ case 1: // Inseri printf("Inserir\n"); for (i = 0; i < TAMANHO; i++){ if (remedio[i].code == -1){ printf("\n----Remedio------\n"); printf("Code: %d\n", i); remedio[i].code = i; printf("Nome: "); scanf("%s", &remedio[i].nome); printf("Unidade: "); scanf("%s", &remedio[i].unidade); printf("Qtd: "); scanf("%d", &remedio[i].quant); printf("preço: "); scanf("%f", &remedio[i].preço); break; } } system("Pause"); break; case 2: // Exclui printf("Excluir\n"); printf("Excluir o codigo: "); scanf("%d", &codigo); remedio[codigo].code = -1; // o codigo -1 significa que o remedio não existe system("Pause"); break; case 3: // Altera printf("Alterar\n"); printf("Digite o codigo para alterar: "); scanf("%d", &codigo); printf("Code: %d\n", codigo); printf("Nome: %s\n", remedio[codigo].nome); printf("Alterar o nome(1= Sim - 2= não): "); scanf("%d", &i); if (i == 1){ printf("Digite o novo nome: "); scanf("%s", &remedio[codigo].nome); } printf("Unidade: %s\n", remedio[codigo].unidade); printf("Alterar a unidade(1= Sim - 2= não): "); scanf("%d", &i); if (i == 1){ printf("Digite a nova unidade: "); scanf("%s", &remedio[codigo].unidade); } printf("Qtd: %d\n", remedio[codigo].quant); printf("Alterar o qtd(1= Sim - 2= não): "); scanf("%d", &i); if (i == 1){ printf("Digite a nova qtd: "); scanf("%d", &remedio[codigo].quant); } printf("preço: %.2f\n", remedio[codigo].preço); printf("Alterar o preço(1= Sim - 2= não): "); scanf("%d", &i); if (i == 1){ printf("Digite o novo preço: "); scanf("%f", &remedio[codigo].preço); } system("Pause"); break; case 4: // Consulta printf("Consultar\n"); printf("1 -> Consultar toda a Lista de Remedio:\n"); printf("2 -> Consultar por codigo:\n"); printf("Digite a opcao: "); scanf("%d", &opcao2); switch (opcao2){ case 1: for (i = 0; i < TAMANHO; i++){ if (remedio[i].code != -1){ printf("\n---- Remedio - Cod %d -----\n", remedio[i].code); printf("Nome: %s\n", remedio[i].nome); printf("Unidade: %s\n", remedio[i].unidade); printf("Qtd: %d\n", remedio[i].quant); printf("preço: %.2f\n", remedio[i].preço); } } break; case 2: printf("Digite o codigo para consultar: "); scanf("%d", &codigo); printf("\n---- Remedio - Cod %d -----\n", remedio[codigo].code); printf("Nome: %s\n", remedio[codigo].nome); printf("Unidade: %s\n", remedio[codigo].unidade); printf("Qtd: %d\n", remedio[codigo].quant); printf("preço: %.2f\n", remedio[codigo].preço); break; } system("Pause"); break; case 5: // fecha printf("Fecha\n\n"); break; default: printf("Opcao Invalida\n\n"); system("Pause"); } // enquanto a opcao for diferente de 5 o programa e executado }while(opcao1 != 5); system("PAUSE"); return 0; } Espere que ajude... :rolleyes:
  23. printf("\nQual o nome do aluno numero %d?\n(Insira o primeiro e o ultimo nome)\n", nada); scanf("%s%s", &nome[c][c]); Para um string alocar 2 nomes (Nome e sobrenome) não se usa uma matriz[j] e sim matriz, pois o string é um conjunto de palavras. Exemplo: #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]){ char palavra[10]; strcpy(palavra, "Jose Maria"); printf("Nome : %s\n", palavra); system("PAUSE"); return 0; }
  24. jrsilvamg

    Arvores B*

    Hoje pela manhã acabei de ter uma aula sobre arvore binária e seu código onde consegui achar este código. não foi eu que fiz achei na net(google) Credito http://www.istf.com.br/showthread.php/9013...gem-C-(urgente) #include <stdio.h> #include <stdlib.h> #include <malloc.h> #define m 2 #define mm 4 #define reservado "cls" typedef int TipoChave; typedef struct { TipoChave Chave; } Registro; typedef struct Pagina_str *Apontador; typedef struct Pagina_str { int n; Registro r[mm]; Apontador p[mm + 1]; } Pagina; typedef Apontador TipoDicionario; void Inicializa(TipoDicionario *Dicionario) { *Dicionario = NULL; } /* Inicializa */ void Pesquisa(Registro *x, Apontador Ap) { int i; if (Ap == NULL) { printf("Erro: Registro não esta presente\n"); getchar(); getchar(); return; } i = 1; while (i < Ap->n && x->Chave > Ap->r[i - 1].Chave) i++; if (x->Chave == Ap->r[i - 1].Chave) { *x = Ap->r[i - 1]; return; } if (x->Chave < Ap->r[i - 1].Chave) Pesquisa(x, Ap->p[i - 1]); else Pesquisa(x, Ap->p[i]); } /* Pesquisa */ void InsereNaPagina(Apontador Ap, Registro Reg, Apontador ApDir) { int k; int NaoAchouPosicao; k = Ap->n; NaoAchouPosicao = k > 0; while (NaoAchouPosicao) { if (Reg.Chave >= Ap->r[k - 1].Chave) { NaoAchouPosicao = 0; break; } Ap->r[k] = Ap->r[k - 1]; Ap->p[k + 1] = Ap->p[k]; k--; if (k < 1) NaoAchouPosicao = 0; } Ap->r[k] = Reg; Ap->p[k + 1] = ApDir; Ap->n++; } /*InsereNaPagina*/ void Ins(Registro Reg, Apontador Ap, int *Cresceu, Registro *RegRetorno, Apontador *ApRetorno) { Apontador ApTemp; int i, j; if (Ap == NULL) { *Cresceu = 1; *RegRetorno = Reg; *ApRetorno = NULL; return; } i = 1; while (i < Ap->n && Reg.Chave > Ap->r[i - 1].Chave) i++; if (Reg.Chave == Ap->r[i - 1].Chave) { printf(" Erro: Registro já esta presente\n"); getchar(); getchar(); *Cresceu = 0; return; } if (Reg.Chave < Ap->r[i - 1].Chave) Ins(Reg, Ap->p[i - 1], Cresceu, RegRetorno, ApRetorno); else Ins(Reg, Ap->p[i], Cresceu, RegRetorno, ApRetorno); if (!*Cresceu) return; if (Ap->n < mm) { /* Pagina tem espaco */ InsereNaPagina(Ap, *RegRetorno, *ApRetorno); *Cresceu = 0; return; } /* Overflow: Pagina tem que ser dividida */ ApTemp = (Apontador) malloc(sizeof(Pagina)); ApTemp->n = 0; ApTemp->p[0] = NULL; if (i <= m + 1) { InsereNaPagina(ApTemp, Ap->r[mm - 1], Ap->p[mm]); Ap->n--; InsereNaPagina(Ap, *RegRetorno, *ApRetorno); } else InsereNaPagina(ApTemp, *RegRetorno, *ApRetorno); for (j = m + 2; j <= mm; j++) InsereNaPagina(ApTemp, Ap->r[j - 1], Ap->p[j]); Ap->n = m; ApTemp->p[0] = Ap->p[m + 1]; *RegRetorno = Ap->r[m]; *ApRetorno = ApTemp; } /*Ins*/ void Insere(Registro Reg, Apontador *Ap) { int Cresceu; Registro RegRetorno; Apontador ApRetorno; Apontador ApTemp; Ins(Reg, *Ap, &Cresceu, &RegRetorno, &ApRetorno); if (Cresceu) { /* Arvore cresce na altura pela raiz */ ApTemp = (Apontador) malloc(sizeof(Pagina)); ApTemp->n = 1; ApTemp->r[0] = RegRetorno; ApTemp->p[1] = ApRetorno; ApTemp->p[0] = *Ap; *Ap = ApTemp; } } /*Insere*/ void Reconstitui(Apontador ApPag, Apontador ApPai, int PosPai, int *Diminuiu) { Apontador Aux; int DispAux, j; if (PosPai < ApPai->n) { /* Aux = Pagina a direita de ApPag */ Aux = ApPai->p[PosPai + 1]; DispAux = (Aux->n - m + 1) / 2; ApPag->r[ApPag->n] = ApPai->r[PosPai]; ApPag->p[ApPag->n + 1] = Aux->p[0]; ApPag->n++; if (DispAux > 0) { /* Existe folga: transfere de Aux para ApPag */ for (j = 1; j < DispAux; j++) InsereNaPagina(ApPag, Aux->r[j - 1], Aux->p[j]); ApPai->r[PosPai] = Aux->r[DispAux - 1]; Aux->n -= DispAux; for (j = 0; j < Aux->n; j++) Aux->r[j] = Aux->r[j + DispAux]; for (j = 0; j <= Aux->n; j++) Aux->p[j] = Aux->p[j + DispAux]; *Diminuiu = 0; } else { /* Fusao: intercala Aux em ApPag e libera Aux */ for (j = 1; j <= m; j++) InsereNaPagina(ApPag, Aux->r[j - 1], Aux->p[j]); free(Aux); for (j = PosPai + 1; j < ApPai->n; j++) { /* Preenche vazio em ApPai */ ApPai->r[j - 1] = ApPai->r[j]; ApPai->p[j] = ApPai->p[j + 1]; } ApPai->n--; if (ApPai->n >= m) *Diminuiu = 0; } } else { /* Aux = Pagina a esquerda de ApPag */ Aux = ApPai->p[PosPai - 1]; DispAux = (Aux->n - m + 1) / 2; for (j = ApPag->n; j >= 1; j--) ApPag->r[j] = ApPag->r[j - 1]; ApPag->r[0] = ApPai->r[PosPai - 1]; for (j = ApPag->n; j >= 0; j--) ApPag->p[j + 1] = ApPag->p[j]; ApPag->n++; if (DispAux > 0) { /* Existe folga: transfere de Aux para ApPag */ for (j = 1; j < DispAux; j++) InsereNaPagina(ApPag, Aux->r[Aux->n - j], Aux->p[Aux->n - j + 1]); ApPag->p[0] = Aux->p[Aux->n - DispAux + 1]; ApPai->r[PosPai - 1] = Aux->r[Aux->n - DispAux]; Aux->n -= DispAux; *Diminuiu = 0; } else { /* Fusao: intercala ApPag em Aux e libera ApPag */ for (j = 1; j <= m; j++) InsereNaPagina(Aux, ApPag->r[j - 1], ApPag->p[j]); free(ApPag); ApPai->n--; if (ApPai->n >= m) *Diminuiu = 0; } } } /* Reconstitui */ void Antecessor(Apontador Ap, int Ind, Apontador ApPai, int *Diminuiu) { if (ApPai->p[ApPai->n] != NULL) { Antecessor(Ap, Ind, ApPai->p[ApPai->n], Diminuiu); if (*Diminuiu) Reconstitui(ApPai->p[ApPai->n], ApPai, ApPai->n, Diminuiu); return; } Ap->r[Ind - 1] = ApPai->r[ApPai->n - 1]; ApPai->n--; *Diminuiu = ApPai->n < m; } /* Antecessor */ void Ret(TipoChave Ch, Apontador *Ap, int *Diminuiu) { int Ind, j; Apontador WITH; if (*Ap == NULL) { printf("Erro: registro não esta na arvore\n"); getchar(); getchar(); *Diminuiu = 0; return; } WITH = *Ap; Ind = 1; while (Ind < WITH->n && Ch > WITH->r[Ind - 1].Chave) Ind++; if (Ch == WITH->r[Ind - 1].Chave) { if (WITH->p[Ind - 1] == NULL) { /* Pagina folha */ WITH->n--; *Diminuiu = WITH->n < m; for (j = Ind; j <= WITH->n; j++) { WITH->r[j - 1] = WITH->r[j]; WITH->p[j] = WITH->p[j + 1]; } return; } Antecessor(*Ap, Ind, WITH->p[Ind - 1], Diminuiu); if (*Diminuiu) Reconstitui(WITH->p[Ind - 1], *Ap, Ind - 1, Diminuiu); return; } if (Ch > WITH->r[Ind - 1].Chave) Ind++; Ret(Ch, &WITH->p[Ind - 1], Diminuiu); if (*Diminuiu) Reconstitui(WITH->p[Ind - 1], *Ap, Ind - 1, Diminuiu); } /* Ret */ void Retira(TipoChave Ch, Apontador *Ap) { int Diminuiu; Apontador Aux; Ret(Ch, Ap, &Diminuiu); if (Diminuiu && (*Ap)->n == 0) { /* Arvore diminui na altura */ Aux = *Ap; *Ap = Aux->p[0]; free(Aux); } } /* Retira */ void Imprime(Apontador p, int Nivel) { int i; if (p == NULL) return; for (i = 1; i <= Nivel; i++) printf(" "); for (i = 0; i < p->n; i++) printf("%4d", p->r[i].Chave); putchar('\n'); for (i = 0; i <= p->n; i++) Imprime(p->p[i], Nivel + 1); } int main() { Apontador *arv; Registro reg; char tecla; system(reservado); arv=(Apontador*) malloc(sizeof(Apontador)); Inicializa(arv); system(reservado); printf("MENU DE OPCOES\n"); printf("--------------\n"); while(1) { system(reservado); printf("MENU DE OPCOES\n"); printf("--------------\n"); printf("1. Insere\n"); printf("2. Remocao\n"); printf("3. Visualizar\n"); // printf("4. Pesquisa\n"); printf("5. Sair\n"); printf("--> "); scanf("%c", &tecla); if (tecla=='5') break; switch(tecla) { case '1': while(1) { system(reservado); printf("INSERCAO\n"); printf("--------\n"); printf("Digite o valor da chave a ser inserida: (999 para finalizar)\n--> "); scanf("%d", &reg.Chave); if (reg.Chave==999) break; Insere(reg, arv); } break; case '2': while(1) { system(reservado); printf("REMOCAO\n"); printf("-------\n"); printf("Digite o valor da chave a ser removida: (999 para finalizar)\n--> "); scanf("%d", &reg.Chave); if (reg.Chave==999) break; Retira(reg.Chave, arv); } break; case '3': system(reservado); printf("IMPRESSAO\n"); printf("---------\n"); Imprime(*arv, mm); getchar(); getchar(); break; } } getchar(); }
×
×
  • Criar Novo...