Ir para conteúdo
Fórum Script Brasil

wrodrigounb

Membros
  • Total de itens

    14
  • Registro em

  • Última visita

Posts postados por wrodrigounb

  1. Boa tarde, galera.

    Venho tentando criar um programa para mostrar na tela apenas uma string por dia.

    Seria meio que um "conselho do dia".

    O que fiz até agora:

    • Vetor de strings;
    • Consegui definir os índices de cada string;
    • Peguei data de hoje e ontem para comparar.

    Alguém poderia me ajudar?

    W. Rodrigo

    Graduando - CiC

    Universidade de Brasília - UnB

  2. Boa tarde,

    repare, nesse trecho do seu código:

    void cadastrarNome(){
         printf("\n\nDigite um nome qualquer:\n");
         scanf("%s",nome);
         printf("\nDigite a idade do individuo\n");
         scanf("%d",idade);
         main();
         }
    No seus scanf você tá armazenando o valor na variável, tá errado. Não esqueça de armazenar assim: &nomedavariável; Outra coisa, seu vetor foi declarado assim:
    char nome[4] = {"João"};

    O [4] indica que o vetor vai ter 4 elementos, e só tem um.

    Isso é só uma dica, beleza!? ;)

    W. Rodrigo

    Universidade de Brasília - UnB

    Graduando - CiC

  3. Boa tarde, Christopher.

    Agora que você tá com o DEV instalado, tente programar alguma coisa aê.

    Aqui no fórum tem muitos códigos prontos. Tente rodá-los, principalmente os do Rocco, que são quase auto-explicativos.

    Após entendê-los, tente compilar o das cartas.

    Estamos aqui para ajudar(o Marcelo mais que eu, afinal ele sabe MUITO mais xD).

    W. Rodrigo

    Universidade de Brasília - UnB

    Graduando - CiC

  4. int maximun (int, int, int);/*protótipo da função*/
    main(){
    int a, b, c;
    printf("Entre com tres inteiros: ");
    scanf("%d%d%d", &a&b&c); 
    printf("O maior e: %d\n", maximun(a, b,c));
    
    }
    /*Definição da função maximun*/
    int maximun(int x, int y, int z){
    int max = x;
    if(y > max)
    max = y;
    if(z > max)
    max = z;
    return max;
    }

    Seu erro está em:

    scanf("%d%d%d", &a&b&c);

    Você não separou &a &b &c por vírgula. Daí dava ele não funcionava.

    Foi só falta de atenção.

    Estamos aqui para ajudar.

    W. Rodrigo

    Graduando - CiC

    Universidade de Brasília - UnB

    Se a ajuda foi útil, é educado agradecer.

  5. Boa arde!

    O seu problema é com a variável ginicio.

    Em main() você declarou como:

    no *ginicio;
    O primeiro problema é que você não inicializou a variável e portanto possui lixo. Ao acessar esse ponteiro você pode ir para qualquer endereço de memória e vai causar erro no seu programa. Além disso, quando você passou a variável pela função PercorreGrafoAmplitude, você usou o operador &, fazendo com que fosse passado para a função não o endereço que está nesse ponteiro mas sim o endereço da variável do ponteiro. O correto seria chamar PercorreGrafoAmplitude sem o &:
    PercorreGrafoAmplitude(ginicio);

    Outra coisa é que a variável ginício não recebe valor em nenhum lugar então você sempre vai receber a mensagem "grafo vazio"...

    Abraços,

    Marcelo Utikawa da Fonseca

    Brigado pelas dicas, Marcelo. Amanhã as testarei e te digo se deu certo!

    Abraço.

    W. Rodrigo

    Universidade de Brasília - UnB

    Graduando - CiC

  6. Olha só, você cometeu alguns erros bobos.

    O scanf é para receber valores, não imprimir. Para isso, use o printf( coisa que o Durub já te disse para fazer).

    Você vai precisar trocar( nos ifs ) scanf por printf e &num por num. Essa última troca é necessária pelo fato de & indicar o endereço no qual se encontra

    a variável, coisa que você não quer fazer, afinal você quer apenas imprimir o conteúdo da variável. Por isso é só indicar que você quer mostrar apenas o conteúdo da variável. Dessa forma fica:

    #include<stdio.h>
    #include<stdlib.h>
    main(){
    // declaração de variaveis
    int num;
    
    // Entrada de Dados
    printf("\n Digite um numero de 1 - 7 para mostrar o dia da semana:");
    scanf("%d",&num);
    
    if(num==1) {
    printf("Hoje é dia: %d , domingo\n",num);
    }
    
    if(num==2) {
    printf("Hoje é dia: %d , segunda feira\n",num);
    }
    
    if(num==3) {
    printf("Hoje é dia: %d , terça feira\n",num);
    }
    
    if(num==4) {
    printf("Hoje é dia: %d , quarta feira\n",num);
    }
    
    if(num==5) {
    printf("Hoje é dia: %d , quinta feira\n",num);
    }
    
    if(num==6) {
    printf("Hoje é dia: %d , sexta feira\n",num);
    }
    
    if(num==7) {
    printf("Hoje é dia: %d , sabado\n",num);
    }
    
    system("pause");
    }

    ATENTE-SE PARA AS MUDANÇAS QUE INDIQUEI E FIZ NO CÓDIGO.

    E sim, as bibliotecas estão corretas.

    Se a ajuda do pessoal aqui do fórum foi útil, é educado agradecer.

    Estamos sempre dispostos a ajudar.

    Uma dica muito importante que acho válida, já que você usou %i no seu código:

    Usando o %i ele dá a possibilidade de trabalhar com números em outras bases numéricas e começando um número com 0 ele subentende que é um número octal. Já o %d (d de decimal) só aceita números na base decimal.

    Retirado de: http://asrtech.wordpress.com/2010/09/29/linguagem-c-d-vs-i/

    Acesso em: 12/09/2012

    W. Rodrigo

    Graduando - CiC

    Universidade de Brasília - UnB

  7. /* O algoritmo a seguir percorre um grafo, que está num .txt. O problema está na execução, ele para quando vai mostrar qual é o nó atual. */

    #include<stdio.h>
    
    typedef struct elementoarco {
        float valorarco;
        int usado;
        struct elementoarco *proxarco;
        struct elementono *padj;
    } arco;
    
    typedef struct elementono {
        char dado;
        float valorno;
        int usado;
        struct elementono *proxno;
        struct elementoarco *pacessoarco;
    } no;
    
     struct tipofila {
        char dado;
        struct tipofila *prox;
        struct tipofila *fila;
        struct tipofila *f1;
    } filageral;
    
    void PercorreGrafoAmplitude(no *ginicio);
    char RetiraFila(struct tipofila **fila);
    void InicializaFila(struct tipofila **fila);
    void InsereFila(struct tipofila **fila,char dadonovo);
    int FilaVazia(struct tipofila *fila);
    
    int main(void) {
    
        no *ginicio;
        PercorreGrafoAmplitude(&ginicio);
    
    return 0;
    }
    void PercorreGrafoAmplitude(no *ginicio) {
    
        FILE *arq;
        struct elementono *proxno;
        struct elementoarco *pacessoarco;
        struct elementoarco *proxarco;
        struct elementono *padj;
        struct tipofila *fila;
        no *pno1;
        arco *pa1;
        char c;
    
        arq = fopen("t1.txt", "r");
        while ((c = getc(arq)) != EOF) {
            if (ginicio == NULL) {
                printf ("grafo vazio \n");
                } else {
                    InicializaFila (&fila);
                    pno1 = ginicio;
                    InsereFila (&fila, ginicio);
                    ginicio->usado = 1;
                    printf ("visita no: %c \n", ginicio->dado);
                    while (!FilaVazia(fila)) {
                        pno1 = RetiraFila (&fila);
                        pa1 = pno1->pacessoarco;
                        while (pa1 != NULL){
                            if (!pa1->padj->usado){
                                printf ("visita no: %c \n", pa1->padj->dado);
                                pa1->padj->usado = 1;
                                InsereFila (&fila, pa1->padj);
                            }
                        pa1 = pa1->proxarco;
                        }
                    }
                }
        }
        fclose(arq);
    }
    
    void InicializaFila(struct tipofila **fila){
        *fila = NULL;
        return;
    }
    
    void InsereFila(struct tipofila **fila,char dadonovo){
        struct tipofila *f1, *f2;
        f1 = malloc(sizeof(struct tipofila));
        f1->dado = dadonovo;
        f1->prox = NULL;
        if(*fila == NULL){
            *fila = f1;
        } else {
            f2 = *fila;
            while(f2->prox != NULL){
                f2 = f2->prox;
            }
            f2->prox = f1;
        }
        return;
    }
    
    char RetiraFila(struct tipofila **fila){
        struct tipofila *f1;
        char car;
        f1 = *fila;
        *fila = f1->prox;
        car = f1->dado;
        free(f1);
        return(car);
    }
    
    int FilaVazia(struct tipofila *fila){
        if(fila==NULL){
            return(1);
        } else {
            return(0);
        }
    }
    Arquivo t1.txt =
    
    A B C D E F
    A 100 2 B 1 D 5
    B 50 2 C 3 E 4
    C 150 1 F 2
    D 150 1 E 4
    E 100 1 F 1
    F 200 0

    Não sei como resolver o problema, se alguém puder me ajudar, agradeço.

  8. Boa tarde, ao que me parece você esqueceu algumas chaves e colocou uns ponto-e-vírgula no lugar errado.

    void main(){

    int a,b,c;

    printf("informe dois numero:");

    scanf("%d%d", &a,&b);

    if( a > b );

    (a = c);

    else

    ( b = c );

    Você esqueceu de fechar a chave da função main!

    void main(){
         int a,b,c;
         printf("informe dois numero:");
         scanf("%d%d", &a,&b);
         if( a > b ) {
           ( a = c );
         } else {
           ( b = c );
        }
    }

    Vê se assim dá certo!

    W. Rodrigo

    Graduando CiC

    Universidade de Brasília - UnB

  9. Acredito que seja algo assim.

    public class Fibo {
        public static void main(String[] args) {
            
            
            for(int i = 0; i <=10; i++) {
                
                System.out.print("(" + i + "):" + Fibo.fibonacci(i) + "\n");            
            }
        }
        
        static long fibonacci(int n) {
            long F = 0; 
            long ant = 0; 
            
            
            for(int i = 0; i <= n; i++) {
                if(i == 0) {
                    F = 1;
                    
                } else {
                        F += ant;
                        ant = F - ant;
                    
                    }
            }
        return F;    
        }
        
    }

    W. Rodrigo

    CiC - Universidade de Brasília

  10. Boa tarde foristas!

    Gostaria da ajuda de vocês para terminar um código.

    Faça um programa que leia duas listas duplamente encadeadas e crie uma lista que seja a

    intersecção das duas primeiras.

    #include<stdio.h>  
    #include<stdlib.h>
    
        struct elemento {
         char c, chave;
         struct elemento *pinicio, *prox, *ant, *p1, *p2;
         };
        
    void construir1(struct elemento **pinicio);
    void construir2(struct elemento **pinicio);
    
    int main() {
        
        struct elemento *pinicio;
         construir1(&pinicio);
         construir2(&pinicio);
        
        system("PAUSE");
    return 0;
    }
    
    void construir1(struct elemento **pinicio) {
        FILE *arq;
        struct elemento *p1, *p2;
        char chave;
        arq = fopen ("t1.txt", "r");
        *pinicio = NULL;
        while ((chave = getc (arq)) != EOF) {
        if (chave != '\n'){
        p1 = malloc (sizeof (struct elemento));
        p1->dado = chave;
            if (*pinicio == NULL) {
            p1->prox = p1;
            p1->ant = p1;
            *pinicio = p1;
            printf(" \n\n    FUNCAO CONSTRUIR1\n\n");
            printf("Construir1: %c\n\n", chave);
            } else {
                p1->prox = *pinicio;
                p1->ant = (*pinicio)->ant;
                (*pinicio)->ant->prox = p1;
                (*pinicio)->ant = p1;
                *pinicio = p1;
                printf("Construir1: %c\n\n", chave);
        }
        }
        }
        fclose (arq);
    return;
    }
    
    void construir2(struct elemento **pinicio) {
        FILE *arq;
        struct elemento *p1, *p2;
        char c;
        arq = fopen ("t1.txt", "r");
        *pinicio = NULL;
        while ((c = getc (arq)) != EOF) {
        if (c != '\n'){
        p1 = malloc (sizeof (struct elemento));
        p1->dado = c;
            if (*pinicio == NULL) {
            p1->prox = p1;
            p1->ant = p1;
            *pinicio = p1;
            printf("\n\n    FUNCAO CONSTRUIR2\n\n");
            printf("Construir2: %c\n\n", c);
            } else {
                p1->prox = *pinicio;
                p1->ant = p2;
                p2->prox = p1;
                (*pinicio)->ant = p1;
                }
                p2 = p1;
                printf("Construir2: %c\n\n", c);
                }
        }
        fclose (arq);
    return;
    }

    A parte da FUNÇÃO INTERSECÇÃO, não estou conseguindo fazer( :wacko: ). Alguém poderia me dar ao menos um "caminho"?

    Grato.

    W. Rodrigo

    Graduando - CiC

    Universidade de Brasília

  11. Essa é a base do programa, mas não compila por dizer que há erros em declarações.

    #include<stdio.h>
    
    struct tipopilha {
        char dado, dadonovo;
        struct tipopilha *prox, *phanoi;
    };
    
    struct tipopilhageral {
        void *dado;
        char *origem, *destino, *auxiliar;
        int *n;
        struct tipopilhageral *prox, *pilha, *phanoi;
    };
    
    struct reghanoi {
        char o;
        char d;
        char a;
        int k;
        struct reghanoi *paux1;
    };
    
    void InicializaPilha(struct tipopilha **phanoi);
    void *EmpilhaHanoi(struct tipopilhageral *pilha, char origem, char destino, char auxiliar, int n);
    void *DesempilhaHanoi (struct tipopilhageral *pilha, char *origem, char *destino, char *auxiliar, int *n);
    void InserePilha(struct tipopilha **pilha, char dadonovo);
    char RetiraPilha(struct tipopilha **pilha);
    void Hanoi(char origem, char destino, char auxiliar, int n);
    
    
    int main() {
        InicializaPilha(&phanoi);
        phanoi = EmpilhaHanoi (struct tipopilhageral phanoi, origem, destino, auxiliar, n);
        while (!PilhaVazia (phanoi)) {
              phanoi = DesempilhaHanoi(phanoi, origem, &destino, &auxiliar, &n);
              if (n == 1) {
                 printf ("movimento de %3c para %3c \n", origem, destino);
              } else {
                phanoi = EmpilhaHanoi (phanoi, auxiliar, destino, origem, n-1);
                phanoi = EmpilhaHanoi (phanoi, origem, destino, auxiliar, 1);
                phanoi = EmpilhaHanoi (phanoi, origem, auxiliar, destino, n-1);
              }
        }
        EmpilhaHanoi(&pilha, &origem, &destino, &auxiliar, &n);
        DesempilhaHanoi(pilha, origem, destino, auxiliar, n);
    
    return 0;
    }
    
    void InicializaPilha (struct tipopilha **pilha) {
        *pilha = NULL;
    return;
    }
    
    void Hanoi(char origem, char destino, char auxiliar, int n) {
        struct tipopilhageral *phanoi;
        struct reghanoi {
        char o;
        char d;
        char a;
        int k;
        };
    }
    
    void *EmpilhaHanoi (struct tipopilhageral *pilha, char origem, char destino, char auxiliar, int n) {
        struct reghanoi *paux1;
        void *paux2;
        paux1 = malloc (sizeof (struct reghanoi));
        paux1->o = origem;
        paux1->d = destino;
        paux1->a = auxiliar;
        paux1->k = n;
        paux2 = paux1;
        InserePilha(&pilha, paux2);
    
    return pilha;
    }
    
    void *DesempilhaHanoi (struct tipopilhageral *pilha, char *origem, char *destino, char *auxiliar, int *n) {
        struct reghanoi *paux1;
        void *paux2;
        paux2 = RetiraPilha(&pilha);
        paux1 = paux2;
        *origem = paux1->o;
        *destino = paux1->d;
        *auxiliar = paux1->a;
        *n = paux1->k;
        free (paux2);
    return pilha;
    }
    
    void InserePilha(struct tipopilha **pilha, char dadonovo) {
        struct tipopilha *p1;
        p1 = malloc (sizeof (struct tipopilha));
        p1->dado = dadonovo;
        p1->prox = *pilha;
        *pilha = p1;
    return;
    }
    
    char RetiraPilha(struct tipopilha **pilha) {
        struct tipopilha *p1;
        char car;
        p1 = *pilha;
        *pilha = p1->prox;
        car = p1->dado;
        free (p1);
    return car;
    }

  12. a) Construção com inserção dos elementos no início da lista

    Neste caso, cada dado lido do arquivo é inserido no começo da lista. Dessa forma, a

    ordem dos elementos na lista fica invertida em relação à ordem original do arquivo. A função

    recebe como parâmetro o endereço do ponteiro pinicio, que aponta para o início da lista.

    #include<stdio.h>
    
    struct elemento {
         char dado;
         struct elemento *prox, *ant;
         };     
      
    void construir1(struct elemento **pinicio);  
       
    int main void() {
        struct elemento *pinicio;
        construir1(&pinicio);      
    
    
    return 0;
    }  
      
    
    void construir1(struct elemento **pinicio) {
         FILE *arq;
         struct elemento *p1;
         char c;
                 
         arq = fopen ("t1.txt", "r");
         *pinicio = NULL;
         while ((c = getc (arq)) != EOF) {
               if (c != '\n'){
               p1 = malloc (sizeof (struct elemento));
               p1->dado = c;
               p1->prox = *pinicio;
               }
               if (*pinicio != NULL) {
               (*pinicio)->ant = p1;
               p1->ant = NULL;
               *pinicio = p1;
               }
         }
    fclose (arq);
    
    return;
    
    }

    Não entendo porque o compilador indica esse erro,alguém pode me ajudar?

    Acredito que o programa não tenha erros.

    W. Rodrigo

    CiC - Universidade de Brasília

×
×
  • Criar Novo...