Ir para conteúdo
Fórum Script Brasil

p4t0X

Membros
  • Total de itens

    151
  • Registro em

  • Última visita

Tudo que p4t0X postou

  1. p4t0X

    Dois exercícios

    No primeiro exercício, conforme você analisa uma cédula, você tem que tirar o valor. Exemplo: ced_100 = (int) (valor/100); valor = valor%100;//Pega o restante que não foi possível pagar com notas de 100 ced_50 = (int)(valor/50); valor = valor%50;//... Acho que assim vai, ;) Posta o código do 2...
  2. Normalmente, para calcular porcentagem você faz o que? - Multiplica o número pela porcentagem a ser descoberta; - Divide por 100; Se você analisar, as 2 operações tem a mesma prioridade(divisão e multiplicação), então pouco importa qual das 2 operações você vai fazer primeiro. Agora veja, se você quer descobrir 10% de 50, você multiplica 50 por 10 e divide por 100, se você realizar a operação (multiplicar por 10 e dividir por 100) ANTES de multiplicar por, ficaria assim: 10/100 * 50 0.1 * 50 5 Agora se fosse 20% 20/100 * 50 0.2 * 50 10 Então resumindo, para você descobrir uma certa porcentagem de um valor, basta multiplicar pelo centésimo desse valor, segue alguns exeplos: 33% -> 0.33 10% -> 0.1 (que é a mesma coisa que 0.10) 1.5% (um e meio porcento) -> 0.015 1% -> 0.01 100% -> 1 Se você tem um produto com um preço X, e você quer dar um desconto de 5% (então no fundo você quer saber 95% (1 - 0.05) do preço original do produto) basta você multiplicar o preço X por 0.95 que você vai ter 95% do preço do produto. O mesmo serve para aumentar o preço, se você quer cobrar 3% a mais, então você quer saber o preço dele(1 + 0.03), então basta multiplicar X por 1.03 Enfim, espero que tenha ajudado! Qualquer coisa dá um toque!
  3. Bom dia, Qual exatamente o erro?! Você está conseguindo ler as prioridades normalmente?!
  4. Ixi, essa função era para fazer o que?! Não sei, mais aqui oh: if (procura("Produto", ptTempProduto = 0)) Imagino que seria if (procura("Produto", ptTempProduto ) == 0 )) Não!? Btw, esse problema if (strcmp(aux->proximo, item) == 0){ Era só trocar "aux->proximo" por "aux->produto" Eu fiz todo o código de cabeça, por isso tem zilhões de erros :/
  5. p4t0X

    ajuda com lista encadeada

    Intendi! Pelo jeito o professor ainda não ensinou alocação dinâmica né? To indo pra facul, a noite eu edito o post aqui!
  6. Ahh, esse "../" significa uma pasta acima, não?!
  7. Ahh, MSN é complicado pra min :/ Trampo o dia inteiro, vou pra facul à noite Se você ir postando aí, eu tento olhar mais frequentemente! e outros podem ajudar também!
  8. Vish, nunca usei o codeblocks, mais se pode dar uma procurada pelo include path, deve ter algum lugar para configurar isso! :) EDIT: Procurei aqui oh (não testei): Make that Project -> Build Options -> Search Directories to make it apply to the current project only
  9. Vish, posta um pedaço do código aí! Acho que é PHP ou ASP :s
  10. Ahh, eu tinha falado que não tinha compilado o código! :( O problema tá aqui oh: int procura( char *item , struct noLista lista ){//.... E na atribuição do aux, ele espera um ponteiro para um struct noLista, portanto declare a função assim oh: int procura( char *item , struct noLista *lista ){//.... Esse erro que deu era porque você (no caso eu) estava atribuindo uma variável que é um ponteiro para uma variável normal, vou dar um exemplo claro: int *a;//PONTEIRO para inteiro int b;//INTEIRO int *c; a = b;//Erro de tipo incompatíveis, o ponteiro espera receber um endereço de memória e não um valor inteiro.(foi o nosso caso) a = &b;//Ok a = c;//Tá ok, igualando 2 variáveis do mesmo tipo No caso, eu declarei a função passando uma variável lista do tipo "struct noLista". Depois dentro da função, eu faço aux(que é um PONTEIRO de "struct noLista") = lista(que é uma "struct noLista"). Enfim, se não deu pra entender dá um toque que eu tento explicar de outra maneira! PS: Ainda NÃO compilei o código Qualquer coisa, só postar aí! :)
  11. p4t0X

    ajuda com lista encadeada

    Boa tarde, Não entendi direito, o que seria um arranjo para você?! Na minha opinião, a alocação de memória deve ser feita dinamicamente, e não estaticamente como é o atual! []'s Diego
  12. Só lembrando que você precisa iniciar o valor de "matriz[4][c]".
  13. Boa noite! Olhando o enunciado, imagino eu que podemos escolher o r à vontade[3.57,4]; Podemos guardar o resultado num vetor de 10 posições de inteiros; Variamos Xn de 1 até 10000; Seria isso? O.o
  14. Boa noite; Sua estrutura da lista ficaria assim mais ou menos assim: struct noLista { char produto[20]; int quantidade; struct noLista *proximo;//Referência para o próximo item da lista }; Para iniciar uma lista: struct noLista *lista = NULL;//Você NÃO pode perder essa referência //Então a condição de lista vazia é quando a variavel que aponta pra ela for NULL Para adicionar um item no final da lista: struct noLista *aux = lista;//Aponta aux para o inicio da lista while( aux->proximo != NULL ){//O ultimo elemento não tem o valor "proximo" definido aux = aux->proximo;//Passa para o próximo item da lista } struct noLista *novoItem = (struct noLista*) malloc( sizeof( struct noLista ) ); strcpy( noLista->produto , "NOMEDOPRODUTO" ); novoItem ->quantidade = 10; novoItem ->proximo = NULL;//Essa é a condição do final da lista //Adiciona no final da lista aux->proximo = novoItem; Para consultar use o mesmo esquema do aux alí int procura( char *item , truct noLista lista ){ struct noLista *aux = lista;//Aponta aux para o inicio da lista while( aux->proximo != NULL ){ if( strcmp( aux->proximo , item ) == 0 ){ //PRODUTO ENCONTRADO return 1; } aux = aux->proximo;//Passa para o próximo item da lista } //PRODUTO NÃO ENCONTRADO return 0; } Btw, seria algo mais ou menos assim! PS: NÃO testei o código Qualquer dúvida dá um toque ae!
  15. Então, o primeiro passo é criar a lista encadeada... Normalmente ela é desse tipo: struct noLista { int valor; struct noLista *proximo; }; Criamos uma refêrencia para a lista assim: struct noLista *lista = NULL; Para adicionar um elemento ficaria mais ou menos assim: struct noLista *aux; aux = lista; //Percorre a lista até o ultimo elemento while( aux->proximo != NULL ){ aux = aux->proximo; } struct noLista *novoElemento = (struct noLista*) malloc( sizeof( struct noLista ) ); novoElemento->valor = 1231; novoElemento->proximo = NULL;//Isso indica que esse vai ser o ultimo elemento da lista //Adiciona o elemento na lista aux->proximo = novoElemento; A partir da lista criada, criamos a árvore binária. Tente implementar a lista e posta aí!
  16. Certo, qual algoritmo? Soma, subtração,...?
  17. Boa tarde! Em qual parte você está tendo dificuldade? É na parte de programação? Ou é do algoritmo?
  18. Só lembrando que: se você quiser dar um desconto de 5% é o mesmo que cobrar 95% do preço, então basta multiplicar o valor por 0.95. preço - preço*0.05 = preço * 0.95 Com esse tipo de notação, em certos casos é possível economizar algumas variáveis! ;)
  19. Ahh, agora acho que entendi o enunciado... Primeiro você pega todos os dados e coloca numa lista encadeada. Depois da lista completa você cria uma árvore binária. As pesquisas são feitas na árvore binária. Em qual parte você está com dúvidas? PS: Cuidado com o termo AVL, AVL é um tipo de árvore binária, que por sinal o primeiro post NÃO implementou.
  20. Nãão, então na função você tá usando um ponteiro para função. Oh, vo tenta exemplificar: #include <stdio.h> int maior( int a , int b){ return a > b ? 1 : 0; } int menor( int a , int b){ return a < b ? 1 : 0; } int comparar( int (*funcao)( int num1 , int num2 ) , int a , int b ){ //Dentro da função eu uso o nome do ponteiro para chamar a funcao /* Se eu usasse o nome explicito "maior" ele ia chamar sempre a função "maior" * que não é a intenção! * A intenção é chamar a função q é passada pelo primeiro parametro "funcao" */ return funcao( a , b ); } int main( int argc , char **argv ){ //Lá na função comparar, a variavel "funcao" aponta para a função "maior"; printf( "%d\n" , comparar( &maior, 5 , 6 ) ); //Lá na função comparar, a variavel "funcao" aponta para a função "maior"; printf( "%d\n" , comparar( &menor, 5 , 6 ) ); }
  21. Êê beleza em! Você nem tentou né? O aque seria a(i,j)?
  22. Boa tarde, O (*read) é o ponteiro para a função; o ssize_t no começo é o tipo de retorno da função; entre parenteses são os argumentos da função; Um exemplo: Imagine a função bubbleSort (ordenação) declarada da seguinte maneira: void bubbleSort( TipoDados *vetor , int tamanhoDoVetor , int(*comparar)( TipoDados a , TipoDados b ) , void(*atribuir)( TipoDados *a , TipoDados b ) ); Os parâmetros: int(*comparar)( TipoDados a , TipoDados b ) => É um ponteiro para uma função que retorna um inteiro e recebe 2 parâmetros do tipo "TipoDados" void(*atribuir)( TipoDados *a , TipoDados b ) => É um ponteiro para uma função que retorna void e recebe 2 parâmetros do tipo "TipoDados" (sendo o primeiro um ponteiro) Para você usar a função bubbleSort, seria mais ou menos assim: int maior( TipoDados a , TipoDados b ){ return a > b ? 1 : 0; } void atribuir( TipoDados *a , TipoDados b ){ *a = b; } bubbleSort( _algumvetor , _algumInteiro , &maior , &atribuir ); &maior => Passa o endereço de memória da função &atribuir => Passa o endereço de memória da função
  23. p4t0X

    (Resolvido) Exercicio

    Opa, não por isso!
  24. Bom dia! Vou dar uma olhada aqui! Mas o que exatamente não está correto?!
  25. p4t0X

    (Resolvido) Exercicio

    Boa tarde! Segue: #include<stdio.h> typedef struct Aluno { int matricula[5]; float nota1[5]; float nota2[5]; float somamedia[5]; }Aluno; void lerAluno (Aluno *p); void ordena (Aluno *v); void imprimi (Aluno *b); int main() { Aluno a; lerAluno(&a); ordena(&a); imprimi(&a); return 0; } void lerAluno (Aluno *p) { int i; int j; int matriculaValida; for(i=0;i<5;i++) { printf("Matricula: "); scanf("%d",&(p->matricula[i])); printf("Nota1: "); scanf("%f",&(p->nota1[i])); printf("Nota2: "); scanf("%f",&(p->nota2[i])); matriculaValida = 0; while( !matriculaValida ){ matriculaValida = 1; for (j=0; j<i; j++) { if(p->matricula[i]==p->matricula[j]) { printf("\n ERRO - MATRICULA já CONSTA NO SISTEMA!\n\n"); printf("Nova Matricula: "); scanf("%d",&(p->matricula[i])); matriculaValida = 0; } } } printf("\n"); p->somamedia[i] = p->nota1[i] + p->nota2[i]; } } void ordena( Aluno *v ) { int i ,j,aux; for(i=0; i < 5; i++) { for(j=i; j < 5; j++) { if (v->matricula[i] >= v->matricula[j]) { aux = v->matricula[i]; v->matricula[i] = v->matricula[j]; v->matricula[j] = aux; } } } } void imprimi(Aluno *b) { int i; for(i=0;i<5;i++) { printf("\n-------------------------------------------------------------\n"); printf("Matricula: %d\n",b->matricula[i]); //imprimi a matricula. printf("Nota1: %1.2f\n",b->nota1[i]); //imprimi a nota1. printf("Nota2: %1.2f\n",b->nota2[i]); //imprimi a nota2. printf("Media do Aluno: %1.2f\n",b->somamedia[i]/2); if(b->somamedia[i]/2 < 6.0) printf("Reprovado\n\n"); else printf("Aprovado\n\n"); } } Só tenho duas coisa a acrescentar: - Sua função para ordenar as matrículas somente troca o número da matrícula, quando o esperado seria trocar tudo, incluindo as notas; - Ainda sou a favor de criar a estrutura para UM aluno, e declarar um vetor dessa estrutura; Qualquer dúvida dá um toque aí! PS: Para testar a troca de matrícula, insira os seguintes dados: Matrícula: 5 Notas: 5,5 Matrícula: 4 Notas: 4,4 Matrícula: 3 Notas: 3,3 Matrícula: 2 Notas: 2,2 Matrícula: 1 Notas: 1,1 O resultado esperado seria: Matrícula: 1 Notas: 1,1 Matrícula: 2 Notas: 2,2 Matrícula: 3 Notas: 3,3 Matrícula: 4 Notas: 4,4 Matrícula: 5 Notas: 5,5 O resultado atual é: Matrícula: 1 Notas: 5,5 Matrícula: 2 Notas: 4,4 Matrícula: 3 Notas: 3,3 Matrícula: 4 Notas: 2,2 Matrícula: 5 Notas: 1,1
×
×
  • Criar Novo...