Jump to content

MichelleAraujo

Members
  • Content count

    14
  • Joined

  • Last visited

Community Reputation

0 Comum

About MichelleAraujo

  • Birthday 05/30/1992

Informações Pessoais

  • Sexo
    Feminino
  1. MichelleAraujo

    Orientação a Objetos e Banco de Dados

    Olá pessoal, tudo bem? Gostaria de tirar uma dúvida com vocês que vem me "pertubando" a um tempo. Quando trabalhamos com tabelas, a orientação de muitos especialistas é criar um classe para manipular os dados armazenados. Minha dúvida é a seguinte: vamos dizer que tenho um banco de dados com mais de 20 tabelas. Dessas tabelas, algumas tem informações iguais entre si (o ID de uma outra tabela) e que em algumas tabelas somente vou fazer um select. Nesse caso, vou criar várias classes com apenas um método. Para cada classe, estou criando uma página que cria as interfaces. Por exemplo, se tenho a classe Carro.class.php eu vou ter uma página carros.php para chamar os métodos da classe Carro. Minha dúvida é a seguinte: dessa forma é o ideal? Não ficaria um sistema com muitas classes? Poderia, por exemplo, dentro da classe Carro colocar métodos que fazem um select em outras tabelas que tem como coluna ID_Carro? Vou esclarecer mais: Tenho as seguintes tabelas: *Carro, que tem as colunas ID_Carro, Nome, Quantidade. *Roda, que tem as colunas ID_roda, ID_carro (em que carro ela está), Nome, Aro *Volante, que tem as colunas ID_volante, ID_carro (em que carro ela está), Nome Na primeira, eu vou fazer CRUD mas nas duas últimas só irei fazer um select. É indicado eu fazer uma classe Roda e Volante e suas respectivas páginas rodas.php e volantes.php? Obrigada.
  2. MichelleAraujo

    Matriz de strings, é possível?

    Olá pessoal, tudo bem? Tô com uma dúvida: é possível uma matriz onde cada posição armazene uma palavra? Por exemplo: 0 1 2 0 abc def ghi 1 bcd efg hij 2 cde fgh ijk e quando eu quiser acessar efg, verificaria array[1][1]?
  3. MichelleAraujo

    Inserindo em uma lista dentro de outra lista

    GBecker, Lá vai. Alterei a função de inserir esperando uma mudança... #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> void strlwr(char* str) { size_t i; size_t len = strlen(str); for (i = 0; i < len; i++) str[i] = tolower((unsigned char) str[i]); } typedef struct ListLine{ int value; struct ListLine *next; } ll; typedef struct ListWord{ char* oWord; char* mWord; struct ListWord *nextWord; struct ListLine *lines; } lw; lw* listaWord = NULL; ll* insertLine(ll* node, int where){ ll *new=(ll*)malloc(sizeof(ll)); if (new==NULL){ puts("Erro de memoria"); exit(1); } new->value=where; new->next=NULL; if (node==NULL) node=new; else{ ll* aux=node; while (aux->next!=NULL) aux=aux->next; aux->next=new; } return node; } lw* searchWordList (char *palavra){ lw*n=listaWord; for (;n!=NULL;n=n->nextWord) if (strcmp(n->mWord,palavra)==0) break; return n; } void insertWordList (char *palavraOrig, char *palavra){ if (searchWordList(palavra)==NULL){ lw* new = (lw*)malloc(sizeof(lw)); new->oWord=(char*)malloc(strlen(palavra)+1); new->mWord=(char*)malloc(strlen(palavra)+1); if (new == NULL || new->oWord==NULL || new->mWord==NULL){ puts("Erro de memoria!"); exit(1); } strcpy(new->oWord,palavraOrig); strcpy(new->mWord,palavra); new->lines = NULL; lw*ant=NULL; lw*p=listaWord; while (p!=NULL){ ant=p; p=p->nextWord; } if (ant==NULL){ new->nextWord=listaWord; listaWord=new; } else { new->nextWord=ant->nextWord; ant->nextWord=new; } } } void printIndice(){ lw* q; for (q=listaWord;q!=NULL;q=q->nextWord){ printf("%s ",q->oWord); ll *r; for (r=listaWord->lines;r!=NULL;r=r->next) printf("%d ",r->value); puts(""); } } int main(int argc, char **argv) { int ch, i=0;//, cont=0, linha=1; char *word_dic=(char*)malloc(sizeof(char)); char *word_dic_orig=(char*)malloc(sizeof(char)); // OPEN DICTIONARY // FILE *dictionary; dictionary = fopen("dicionario.txt", "r"); if (dictionary == NULL) { printf("Erro, nao foi possivel abrir o arquivo\n"); return 0; } while ((ch=fgetc(dictionary))!=EOF){ if ( (ch>=65 && ch<=90) || (ch>=97 && ch<=122)){ word_dic[i]=ch; i++; } else { strcpy(word_dic_orig,word_dic); strlwr(word_dic); insertWordList(word_dic_orig,word_dic); word_dic=(char*)calloc(0,sizeof(char)); i=0; } } fclose(dictionary); lw* q=searchWordList("a"); q->lines=insertLine(q->lines,1); q->lines=insertLine(q->lines,2); printIndice(); return 0; }
  4. MichelleAraujo

    Inserindo em uma lista dentro de outra lista

    Olá pessoa, tudo bem? Cá estou eu com outra dúvida. Nesse código, tenho duas estruturas: uma lista que armazena números e outra lista que aramazena palavras e tem a lista citada anteriormente. typedef struct ListLine{ int value; struct ListLine *next; } ll; typedef struct ListWord{ char* oWord; char* mWord; struct ListWord *nextWord; struct ListLine *lines; } lw; Acredito que na declaração da estrutura esteja correto. Agora, segue a função para acrescentar um valor na lista de um determinado nó: void insertLine(lw* node, int where){ ll *new=(ll*)malloc(sizeof(ll)); if (new==NULL){ puts("Erro de memoria"); exit(1); } new->value=where; new->next=NULL; if (node->lines==NULL) node->lines=new; else{ ll* aux=node->lines; while (aux->next!=NULL) aux=aux->next; aux->next=new; } } Meu problema é o seguinte: quando quero adicionar um determinado valor na primeira célula da lista, ele acaba adicionando o valor também os pŕoximos nós. Agora, para adicionar em alguma célula que não seja a primeira ele não adiciona. Achei que o problema fossem dois: 1. é necessário criar uma lista do tipo ListLines separadamente? Exemplo: lw* listaWord = NULL; ll* listaLines = NULL; 2. é necessário alocar dentro do novo nó a lista? Por via das dúvidas, coloquei na função que aloca um novo nó para listaWord: new->lines = NULL; Mesmo eu fazendo essas duas coisas, não funcionou. Acreditei que fosse a função de procurar o nó onde quero alterar a lista. A função busca na lista fiz da seguinte forma: lw* searchWordList (char *palavra){ lw*n; for (n=listaWord;n;n=n->nextWord) if (strcmp(n->mWord,palavra)==0) return n; return NULL; } Bom, ainda não continua funcionando. Aguardo respostas.
  5. MichelleAraujo

    Lendo cada caractere de um arquivo e armazenando em uma array

    Olá Mateus, Primeiramente, peço desculpas pela demora. E, realmente, me expressei mal. O que queria mesmo era salvar uma linha do arquivo até ele encontrar a quebra de linha (que era a indicação de que a linha acabou). Pesquisei e acabei descobrindo o fgets que tem a mesma função, sendo que, o exemplo seguinte, temp1 é uma string que armazena a linha. while (fgets(temp1, sizeof temp1, arquivo) != NULL) { // OPERAÇÕES // }
  6. Olá pessoal, tudo bem? Estou com um certo probleminha e empaquei nele. É o seguinte: quero ler um arquivo e armazenar cada caractere de uma linha em uma array. Quando encontrasse o final da linha, iria fazer as funções necessárias, pulava para a outra linha e iria salvar na mesma array cada caracter da outra linha, assim sucessivamente até o fim do arquivo. Porque estou querendo fazer isso? Porque quem for escrever o arquivo vai colocar '\t', '\n', '\a' para indicar tab, quebra de linha e beep, como nós fazemos em C. Se eu armazenar cada linha em uma string, como estava fazendo anteriormente, o C irá interpretar '\t', '\n', e '\a' como um caractere. Então, o ideal é salvar cada caracter da linha em uma string. Segue onde eu empaquei no código: while (!feof(arquivo)){ while (getc(arquivo)!='\n'){ temp[i]=getc(arquivo); i++; } /*FAZER AS FUNÇÕES NECESSÁRIAS*/ } O erro que ele está dando, de acordo com o gdb, é malloc. E como vou trabalhar com malloc nesse caso? Agradeço desde já e aguardo repsostas.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.