jrsilvamg
-
Total de itens
37 -
Registro em
-
Última visita
Posts postados por jrsilvamg
-
-
beleza RS25
Você pode usar uma recursividade para fazer isto.
Exemplo imprimir de 1 a 10 do maior pro menor.
Código
#include <stdio.h> #include <stdlib.h> void volta(int x); int main(int argc, char *argv[]){ int x = 0; volta(x); system("PAUSE"); return 0; } void volta(int x){ if (x==10) return; if (x < 10){ x++; volta(x); } printf("[%d]\n", x); }
ok!!!! B)
-
O problema que ficou é na hora de calcular a área do círculo que é PI * raio², mas quando compilo utilizando PI, dá erro. =/
Foi mau eu esqueci do PI la na função.
Dois detalhes para rodar o programa
1. o define é sem o ; no final
#define PI 3.1415
2. eu esqueci do PI
acirc = PI * pow(c , 2);
#include <stdio.h> #include <stdlib.h> #define PI 3.1415 int main(int argc, char *argv[]){ float a, b, c, acirc, aret, atri; printf("Digite numero 1: "); scanf("%f", &a); printf("Digite numero 2: "); scanf("%f", &b); printf("Digite numero 3: "); scanf("%f", &c); acirc = PI * pow(c , 2); printf("A área do circulo é %.2f\n", acirc); //scanf("%f", a); // qual a necessidade deste scanf aqui aret = a * b; printf("A área do retangulo é %.2f\n", aret); //scanf("%f", &aret); // qual a necessidade deste scanf aqui atri = sqrt( ((a+b+c)/2) * (((a+b+c)/2) - a) * (((a+b+c)/2) - b ) * (((a+b+c)/2) - c)); printf("A área do triangulo é %.2f\n", atri); //scanf("%.2f", &atri); // qual a necessidade deste scanf aqui system("PAUSE"); return 0; }
Espero que agora resolva.
-
Então, o uso da árvore é para o seguinte: Suponha que eu tenha uma tabela hash com alguns valores inseridos. O método que estou tentando implementar vai utilizar a árvore pra encontrar uma possível alocação pra um novo valor nessa tabela, de forma que a busca nessa tabela seja a mais eficiente possível. Ainda não consegui completar o raciocinio, e por conta disso n tenho mt coisa da arvore pronta. Eu fiz as funções para a árvore e, meu problema tá sendo no main. Pensei em usar um while(*p->numero != 0) para continuar completando a árvore até encontrar uma posição da tabela que esteja vaga, MAS eu não consigo pensar em como percorrer cada nó da árvore na ordem certa pra usar a função de inserir. Entendeu? As funções que fiz são essas:
#include <stdio.h>
#include <stdlib.h>
typedef struct No{
int numero;
struct No *pEsquerda; //ponteiro apontando para o filho esquerdo
struct No *pDireita; //ponteiro apontando para o filho direito
struct No *p; //ponteiro para percorrer a arvore
}No;
void criarArvore(No **pRaiz){
*pRaiz = NULL; //inicializa a arvore
}
void inserir (No **pRaiz)
{
if (*p->pEsquerda == NULL) // Se o lado esquerdo da árvore estiver vazio, inserir
{
*p->Esqueda = hash(i) + inc(i);
}
else {
if (*p->pDireita == NULL) // Se o lado esquerdo estiver ocupado, adicionar no direito.
{
*p->pDireita = hash(i) + inc(tabela[i]);
}
}
}
[/codebox]Queria mesmo era uma idéia de como fzer... Realmente empaquei em como percorrer isso aí... Obrigado desde já!
Tem uns 15 dias que eu tive que fazer um trabalho para faculdade sobre Arvore
que pega alguns numero, faz o embaralhamento deste numero e ai insere na arvore assim que e inicializado o programa
O codigo tem as seguintes funcoes
printf("1 -> Inserir numero\n");//Insere novo numero
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");//imprime na tela no formato de arvore
printf("0 -> Finalizar o programa\n\n");
Codigo
[code]#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]; //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); }[/code]Espero que ajude!!
Também fiz um sobre tabela HASH semana passada se quiser eu posto ele aqui!!!
-
tenta assim:Saudações,É possível fazer assim:
printf("cora%c%co",135,134);
Poderia postar um exemplo de como fez? :blink: Abraços, William Rodrigues.#include<stdio.h> #include<math.h> int main(int argc, char *argv[]){ char c = 135; char a = 131; printf("Cora\%c\%co", c,a); system("Pause"); return 0; }
a letra ã eu não achei o codigo ASCII pra imprimir na tela mais os demais você encontra com este codigo aqui mostras todo os códigos ASCII em C.#include <stdio.h> #include <stdlib.h> int main() { int c = 0; do printf("[%d] %c\n", c, c); while (++c <= 255); system("Pause"); }
na verdade toda letra ou simbolo e um codigo que e lido pelo compilador.
ver em outras linguagens
-
Saudações,
Putz, não tenho o DEV aqui cara.
Mas se não me engano no DEV teria que usar a biblioteca "conio" e para saída do texto tente usar o printf, sprintf ou puts. :huh:
Abraços,
William Rodrigues.
Valeu cara
Eu consegui fazer aqui e só colocar \"e colocar código ASCII sem aspa"
-
Boa noite a todos.
Tenho um trabalho simples pra fazer, redigi o código e tentei compilá-lo.
Ele dá erro no "pi"que usei e quando eu o tiro ele compila, mas executa só o primeiro PRINTF.
Alguém pode me ajudar ?
Agradeço desde já.
O código é esse:
#include<stdio.h>
#include<math.h>
main (void) {
#define pi = 3,1415;
float a, b, c, atri, acirc, aret;
printf("Digite um numero", a);
scanf("%.2f", &a);
printf("Digite um numero", b );
scanf("%.2f", &b);
printf("Digite um numero", c);
scanf("%.2f", &c);
acirc = pi * (c ^ 2);
printf("A área do circulo é %.2f\n", acirc);
scanf("%.2f", â);
aret = a * b;
printf("A área do retangulo é %.2f\n", aret);
scanf("%.2f", &aret);
atri = sqrt( ((a+b+c)/2) * (((a+b+c)/2) - a) * (((a+b+c)/2) - b ) * (((a+b+c)/2) - c));
printf("A área do triangulo é %.2f\n", atri);
scanf("%.2f", &atri);
return 0;
}
Rodrigo Silva
Graduando
Computação - Universidade de Brasília
:wacko:
#include<stdio.h> #include<math.h> main (void) { #define pi = 3,1415; // na se usa = no define float a, b, c, atri, acirc, aret; printf("Digite um numero", a); scanf("%.2f", &a); // não precisa de colocar .2f usa se .2 somente quando for imprimi o resultado printf("Digite um numero", b ); scanf("%.2f", &b); printf("Digite um numero", c); scanf("%.2f", &c); acirc = pi * (c ^ 2); // para calcular potência usa se pow(valor , expoente) printf("A área do circulo é %.2f\n", acirc); scanf("%.2f", â); // não usa acento em código fonte aret = a * b; printf("A área do retangulo é %.2f\n", aret); scanf("%.2f", &aret); atri = sqrt( ((a+b+c)/2) * (((a+b+c)/2) - a) * (((a+b+c)/2) - b ) * (((a+b+c)/2) - c)); printf("A área do triangulo é %.2f\n", atri); scanf("%.2f", &atri); return 0; }
Código#include <stdio.h> #include <stdlib.h> #define PI 3.1415; int main(int argc, char *argv[]){ float a, b, c, acirc, aret, atri; printf("Digite numero 1: "); scanf("%f", &a); printf("Digite numero 2: "); scanf("%f", &b); printf("Digite numero 3: "); scanf("%f", &c); acirc = pow(c , 2); printf("A área do circulo é %.2f\n", acirc); //scanf("%f", a); // qual a necessidade deste scanf aqui aret = a * b; printf("A área do retangulo é %.2f\n", aret); //scanf("%f", &aret); // qual a necessidade deste scanf aqui atri = sqrt( ((a+b+c)/2) * (((a+b+c)/2) - a) * (((a+b+c)/2) - b ) * (((a+b+c)/2) - c)); printf("A área do triangulo é %.2f\n", atri); //scanf("%.2f", &atri); // qual a necessidade deste scanf aqui system("PAUSE"); return 0; }
-
Saudações,
Está utilizando qual compilador?
Estou com o VS 2010 e compilou/executou normalmente.
Abraços,
William Rodrigues.
Uso o DEV
-
Saudações,
Será necessário fazer uso da Biblioteca "locale":
#include <stdio.h> #include <locale.h> int main() { setlocale(LC_ALL,""); printf("o que tenho que colocar para imprimir È"); return 0; }
Abraços,
William Rodrigues.
Não consegui
Quando executo o programa aparece
Resultado:
o que tenho que colocar para imprimir ╚
Eu queria que ficasse
o que tenho que colocar para imprimir È
como eu troco este simbolo ╚ pela a letra e com acento "È"
-
Estou com um pequeno problema.
Queria saber como escrever um caracter especial em C, sei que tenho que consultar a TABELA ASCII e pegar codigo exemplo È na tabela = 200 o meu problema e o que tenho que colocar no printf.
Como eu vou fazer
printf("o que tenho que colocar para imprimir È");
-
Help
-
Queria alterar a matriz puzzle[4][4] para matriz puzzle[n][n] para que o usuario informe o tamanho da matriz mas quando coloco n no lugar do 4 os resultado da erro.
o arquivo txt tem o seguintes dados
9 15 5 0
4 6 1 3
14 2 7 10
8 12 13 11
#include <stdio.h>
#include <stdlib.h>
void imprime(int n, int puzzle[n][n]){
int i, j;
printf(" -------------------\n");
for (i=0; i<n; i++){
printf ("| ");
for (j=0; j<n; j++){
if (puzzle[j]<10)
printf (" %d | ", puzzle[j]);
else
printf ("%d | ", puzzle[j]);
}
printf("\n");
}
printf(" -------------------\n");
}
int main(int argc, char *argv[])
{
int n,
i,
j,
valor,
puzzle[4][4]; // queria altera para puzzle[n][n]
printf("Resolvendo o PUZZLE");
printf("\n\n");
printf("Informe tamanho do Puzzle NxN - N: ");
scanf ("%d", &n);
printf("\n");
FILE *arq = fopen("puzzle.txt", "r");
if (arq == NULL){
printf("Desculpe, o arquivo não pode ser aberto");
exit(1);
}
for (i=0 ; i<n; i++){
for (j=0 ; j<n; j++){
fscanf (arq, "%d", &valor);
puzzle[j] = valor;
}
}
fclose(arq);
imprime(n, puzzle);
system("PAUSE");
return 0;
}
Recursividade - Gostaria que alguém me explicasse, o que acontece nest
em C, C++
Postado
o objetivo do programa e somar os if que são executados 10 vezes retornado uma soma no valor de 10.