Ir para conteúdo
Fórum Script Brasil

rlcdo

Membros
  • Total de itens

    9
  • Registro em

  • Última visita

Sobre rlcdo

rlcdo's Achievements

0

Reputação

  1. ahhhh pode cre. Acho que entendi sim... mas qualquer nova dúvida eu posto aqui. Valeu aí =)
  2. Acho que não entendi muito bem uma parte: "e se você precisar fazer alguma alteracao nesse select??" Como assim? o select não serve apenas p/ selecionar dados? E Visão não é uma forma de disponibilizar p/ um determinado usuário, porções do banco de dados, do interesse do mesmo, escondendo outras partes não necessárias? Acho que eu to meio confuso hehe
  3. Eu até sei como usar visões e stored procedures, mas não sei o por quê de usá-los, quando usá-los... enfim, gostaria que me mostrassem motivos p/ usar visões e stored procedures e quando usá-los.
  4. rlcdo

    Ajuda Com Arquivos Em C

    É que eu preciso disso p/ entregar dia 19/09 heheh Mas vou tentar dar um jeito aqui
  5. rlcdo

    Ajuda Com Arquivos Em C

    ok, mas acho que vai complicar mais ainda. Nesse código, já tem a main() com entrada e saida de arquivo... o problema é que quem me ajudou a fazer isso foi um amigo da faculdade, e ele encheu isso de ponteiros, e não está conseguindo me ajudar a fazer estaticamente essa parte de arquivos (coloquei até em itálico no código abaixo). Gostaria que vocês me mostrassem uma outra forma de fazer isso, sem usar ponteiros (apenas a parte em itálico). Claro que mudando isso, terei que mudar algumas coisas no código, mas acho que não será difícil. Podem me ajudar? #include <stdio.h> #include <stdlib.h> #include <string.h> #include <iostream> #define tamHash 47 // Estrutura que representa um Token typedef struct Token{ int classe; char valor[15]; int linha, coluna; }Ttoken; // Estrutura que representa o nodo da lista typedef struct dado{ Ttoken token; struct dado *prox; }Tdado; // Estrutura que representa a lista // A lista é acessada através de um ponteiro para o seu primeiro nodo, // no caso a cabeça da lista typedef struct lista { Tdado *inicio; int tam; }Tlista; // Estrutura que representa a Tabela Hash // Cada elemento da tabela será um ponteiro para um lista typedef struct thash { Tlista *vet[tamHash]; }THash; // Função para criar a lista com tamanho zero Tlista* criaLista() { Tlista *lista = (Tlista*)malloc(sizeof(Tlista)); lista->inicio = NULL; lista->tam = 0; return lista; } // Função para inserir um nodo no início da lista void insereInicio(Tlista *lista) { // Inicializa o dado a ser inserido int cod; Tdado *dado = (Tdado*)malloc(sizeof(Tdado)); printf("\n Codigo: "); scanf("%d", &cod); // dado->token = cod; // Insere no início da lista Tdado *aux; aux = lista->inicio; lista->inicio = dado; dado->prox = aux; lista->tam +=1; } // Função para exibir os elementos da lista void exibeLista(Tlista *lista) { int i=0; Tdado *noatual = lista->inicio; while( noatual != NULL) { // printf("\nCodigo:%s", token->valor); noatual = noatual->prox; } } //verifica se é palavra reservada int checa_pr(char* palavra) { //vetor palavras reservadas int i; char **pr=(char**)malloc(33*sizeof(char*)); for(i=0;i<33;i++) pr[i]=(char*)malloc(8*sizeof(char)); pr[0]="mod"; pr[1]="not"; pr[2]="procedure"; pr[3]="function"; pr[4]="if"; pr[5]="then"; pr[6]="else"; pr[7]="and"; pr[8]="repeat"; pr[9]="ultil"; pr[10]="begin"; pr[11]="end"; pr[12]="downto"; pr[13]="to"; pr[14]="or"; pr[15]="var"; pr[16]="for"; pr[17]="do"; pr[18]="while"; pr[19]="array"; pr[20]="case"; pr[21]="const"; pr[22]="div"; pr[23]="program"; pr[24]="integer"; pr[25]="double"; pr[26]="char"; pr[27]="boolean"; pr[28]="read"; pr[29]="write"; pr[30]="writeln"; pr[31]="true"; pr[32]="false"; for(i=0;i<33;i++) { if(!strcmp(pr[i],palavra)) { return 1; } } return 0; } [i]main(int argc, char **argv) { if(argc!=3) exit(1); int coluna=0,linha=0; FILE* entrada; entrada=fopen(argv[1],"r"); FILE* saida; saida=fopen(argv[2],"w"); if(entrada==NULL) { printf("Erro ao abrir arquivo"); exit(1); }[/i] char palavra[15],c,temp='',teste; int iascii=0; int i=0,j=0,m=0,ok=0,n=0,li=0,lf=0,sair=0,index,cntletras; Tlista* l=criaLista(); Ttoken **t=(Ttoken**)malloc(5*sizeof(Ttoken*)); t[0]=(Ttoken*)malloc(1*sizeof(Ttoken)); for(i=0;i<15;i++) palavra[i]=''; do { sair=0; c=fgetc(entrada); if(c=='\n' || c==EOF || c=='\t') { linha++; coluna=0; ok=1; // if(c==EOF) break; } else { if(c==' ') { cntletras=strlen(palavra)-1; for(i=0;i<=cntletras;i++) iascii += palavra[i]; index = iascii % tamHash; ok=1; } else { if(c=='+' || c=='-' || c=='*' || c=='/' || c=='=' || c=='>' || c=='<' || c==';' || c==',' || c==':' || c=='(' || c==')' || c=='.') { temp=c; coluna++; ok=1; } else { palavra[m]=c; coluna++; m++; } } } if(ok==1 && palavra!="" && c!=EOF) { do { //verifica se é literal flutuante if(lf==1) { t[n]->classe=4; } else { //verifica se é simbolo especial if(!strcmp(palavra,"(") || !strcmp(palavra,")") || !strcmp(palavra,",") || !strcmp(palavra,";") || !strcmp(palavra,":") || !strcmp(palavra,".") || (palavra[0]=='"' && palavra[1]=='')) t[n]->classe=6; else { //verifica se é operador if(!strcmp(palavra,"+") || !strcmp(palavra,"-") || !strcmp(palavra,"*") || !strcmp(palavra,"/") || !strcmp(palavra,"=") || !strcmp(palavra,":=") || !strcmp(palavra,">") || !strcmp(palavra,"<") || !strcmp(palavra,">=") || !strcmp(palavra,"<=") || !strcmp(palavra,"<>")) t[n]->classe=5; else { //verifica se é palavra reservada (classe 1) int a=checa_pr(palavra); if(a==1) t[n]->classe=1; else { //verifica se é literal inteiro for(i=0;i<15 && palavra[i]!='';++i) if(palavra[i]=='0' || palavra[i]=='1' || palavra[i]=='2' || palavra[i]=='3' || palavra[i]=='4' || palavra[i]=='5' || palavra[i]=='6' || palavra[i]=='7' || palavra[i]=='8' || palavra[i]=='9') li++; if(li==i) t[n]->classe=3; else { if(palavra[0]!='') t[n]->classe=2; } } } } } if(t[n]->classe==3 && temp=='.') { ok=0; lf=1; palavra[m]=c; coluna++; m++; temp=''; sair=1; break; } else { if(!strcmp(palavra,".")) { teste=fgetc(entrada); if(teste==EOF) { t[n]->classe=8; } else { /*palavra[m]=teste; m++; coluna++; sair=1; break;*/ } } if(!strcmp(palavra,":") || !strcmp(palavra,">") || !strcmp(palavra,"<")) { palavra[1]=fgetc(entrada); } else{ int classe=t[n]->classe; strcpy(t[n]->valor,palavra); t[n]->linha=linha; t[n]->coluna=coluna; fputs(t[n]->valor,saida); ok=0; m=0; li=0; lf=0; if(sair==0) { n++; t[n]=(Ttoken*)malloc(1*sizeof(Ttoken)); } for(i=0;i<15;i++) palavra[i]=''; switch(classe) { case 1: { fputs(" é PALAVRA RESERVADA\n",saida); break; } case 2: { fputs(" é IDENTIFICADOR\n",saida); break; } case 3: { fputs(" é LITERAL INTEIRO\n",saida); break; } case 4: { fputs(" é LITERAL FLUTUANTE\n",saida); break; } case 5: { fputs(" é OPERADORES\n",saida); break; } case 6: { fputs(" é SIMBOLO ESPECIAL\n",saida); break; } case 8: { fputs(" é FIM\n",saida); break; } default: { break; } } // insereInicio(l); palavra[0]=temp; temp=''; } } }while(palavra[0]!='' && palavra!="" && palavra!=" " && sair==0); } } while(c!=EOF); fclose(entrada); fclose(saida); system("PAUSE"); }
  6. Pessoal, preciso de uma função main() que faça o seguinte: leia de um arquivo de entrada e gere um arquivo de saída. Por exemplo, preciso que leia um "if" de um arquivo de entrada e gere um arquivo de saida dizendo que "if é uma palavra reservada". Não estou pedindo nada pronto, apenas uma função main() genérica que faça isso, em linguagem C e de preferência sem usar muito ponteiros (não sou muito bom em ponteiros =( ) ps: preciso disso pois estou fazendo um analisador léxico. Já fiz uma boa parte, mas não to sabendo ler de um arquivo de entrada e gerar um de saída.
  7. Pessoal... eu já mexo com a linguagem C há um tempinho e até hoje me da um "medo" só de pensar em usar ponteiros. Ainda não consegui entender quando usar ponteiros, quando usar ponteiro p/ ponteiro... ou seja, tudo que envolve ponteiros. Gostaria de saber se alguém poderia me dar essa explicação de forma bem clara, de quando usar um ponteiro ou ponteiro p/ ponteiro e com exemplos simples. Eu preciso aprender isso! Tenho que fazer um analisador léxico em C p/ matéria de Compiladores e ainda não sei usar ponteiros =(
  8. Pessoal... sou novo nessa área de SQL e estou tentando fazer uma consulta no banco "pubs" a consulta é p/ "escrever um comando que seja capaz de determinar o tipo de livro que possui o menor preço médio de venda" select titles.type, AVG(titles.price) from titles Group By titles.type Essa consulta mostra o tipos de títulos com todos os preços médio, certo? Agora preciso que apareça só o tipo com o MENOR preço médio. Alguém pode me ajudar?
  9. Ae pessoal, eu sou novo nessa área de C e tenho que terminar um trabalho p/ faculdade... alguém pode me ajudar a terminar isso? esse é o trabalho: OBJETIVO DO TRABALHO: Aplicar os conhecimentos, até o momento, adquiridos na disciplina Programação II no desenvolvimento de um software para tratar o problema de vendas de passagens dos vôos da companhia aérea Voe Tranqüilo, utilizando a linguagem de programação C. PROBLEMA A SER RESOLVIDO: A empresa controla os seus 15 vôos manipulando as seguintes informações: código do vôo, horário de embarque, cidade de origem, cidade de destino, nº total de assentos, preço da passagem e nº de assentos vendidos. Você fará o software usado no balcão de atendimento da empresa. Este será usado para a consulta aos dados referentes aos vôos disponíveis e venda de passagens. Este programa ainda não será funcional, uma vez que vocês estão ainda começando a programar e conhecem um número restrito de recursos de programação. Neste sentido usaremos apenas os recursos com os quais vocês já têm familiaridade. Assim, os dados dos 10 vôos mantidos pela companhia são armazenados em 5 vetores, como abaixo: Código do vôo Horário de Embarque Cidade de Origem Cidade de Destino Nº total de assentos Preço da passagem Nº assentos vendidos Desenvolva um programa que controle as seguintes operações para a companhia aérea. O programa deve realizar no mínimo as seguintes operações: 1. Cadastrar (sem repetição de código) os diversos vôos (suponha a princípio que existam no máximo 15 vôos). · Os 7 vetores funcionarão como a base de dados do seu programa. Assim a primeira tarefa do programa será preenchê-los. · Ao preencher os vetores atende para: o Os 7 vetores serão totalmente preenchidos ao iniciar o programa. o O número do vôo não deve se repetir no vetor referente a este dado. o O horário de embarque deve ser um float, com a parte inteira indicando a hora e as duas casas decimais indicando os minutos do embarque. o O número total de assentos deve ser um inteiro maior que zero. o O preço da passagem deve ser um float maior que zero. o O número de assentos vendidos deve ser um inteiro inicialmente igual a zero. o As cidades de origem e destino devem ser valores inteiros no intervalo [1,9], conforme tabela abaixo: Código Cidade 1 Vitória 2 São Paulo 3 Rio de Janeiro 4 Belo Horizonte 5 Salvador 6 Brasília 7 Florianópolis 8 Curitiba 9 Porto Alegre 2. Atualizar os dados de um vôo, localizando-o através de seu código. A localização deve ser feita usando o método de Pesquisa Seqüencial. A menos do código do vôo, todos os demais dados podem ser alterados, observando contudo as mesmas consistências feitas durante o preenchimento inicial. 3. Ler os códigos das cidades de origem e destino e imprimir quais os códigos de vôos disponíveis com suas respectivas ofertas de assentos (capacidade – assentos vendidos). 4. Imprimir os dados, ordenados por código, de todos os vôos disponíveis. O método da Bolha deve ser usado para realizar a ordenação. O formato do relatório é mostrado no exemplo abaixo, observe que este traz os nomes das cidades, não os códigos. Código Origem Destino Embarque Valor Total assentos disponíveis 1002 Vitória Salvador 8h30 R$ 250,00 10 2001 Vitória Brasília 10h20 R$ 350,00 0 4005 Salvador Curitiba 11h00 R$ 520,00 20 Para impressão do horário de embarque no formato acima segue, como sugestão, o seguinte código: float x=1.45; int h = (int) x; int m = x*100-100; printf("%dh%d\n", h, m); 5. Imprimir os dados, ordenados por código, de todos os vôos disponíveis para uma cidade de origem específica. O método da Bolha deve ser usado para realizar a ordenação. O formato do relatório é mostrado no exemplo abaixo: Código Destino Embarque Valor Total assentos disponíveis 1002 Salvador 8h30 R$ 250,00 10 2001 Brasília 10h20 R$ 350,00 0 6. Imprimir os dados, ordenados por código, de todos os vôos disponíveis para uma cidade de destino específica. O método da Bolha deve ser usado para realizar a ordenação. O formato do relatório é mostrado no exemplo abaixo: Código Origem Embarque Valor Total assentos disponíveis 4005 Salvador 11h00 R$ 520,00 20 7. Realizar uma venda, localizando o vôo através do código. A localização deve ser feita usando o método de Pesquisa Seqüencial. Durante uma tentativa de compra o passageiro informa o número do vôo desejado. Para cada tentativa de atendimento ao passageiro verifique se há disponibilidade no vôo solicitado. Em caso negativo, imprima “VÔO LOTADO”. Em caso afirmativo, leia o número de identidade do passageiro, atualize o número de assentos vendidos e imprima um protocolo de embarque contendo: · O número de identidade do passageiro. · O número do vôo desejado. · O preço da passagem. · As cidades de origem e destino. · O horário de embarque. FORMA E REGRAS PARA APRESENTAÇÃO DO TRABALHO: · O programa devidamente comentado e identado qualquer dúvida o trabalho está na íntegra no site https://docentes.uvv.br/arquivosBlog/Elizab...D6A3A244666.doc e esse é o meu programa: # include <stdio.h> # include <stdlib.h> # define N 3 int Pesquisa (int cod, int numero) //numero é um vetor de inteiros { int Achou = 0; i = 0; //variavel global - para saber em qual posição do vetor está o código procurado do { if (cod = numero) Achou = 1; else i++; } while((Achou == 0) || (i <= N)); if (Achou == 1) return 1; else return 0; } void Ordena (int x, int voo[N], float hora[N], int origem[N], int destino[N], int lug_total[N], float preço[N], int lug_vendido[N]) { int troca, tam, aux_voo, aux_origem, aux_destino, aux_lug_total, aux_lug_vendido; float aux_hora, aux_preco; troca = 1; tam = x - 1; while (troca = 1) { troca = 0; for (i=0, i<=tam; x++) { if (voo > voo[i+1]) { aux_voo = voo; voo = voo[i+1]; voo[i+1] = aux_voo; aux_hora = hora; hora = hora[i+1]; hora[i+1] = aux_hora; aux_origem = origem; origem = origem[i+1]; origem[i+1] = aux_origem; aux_destino = destino; destino = destino[i+1]; destino[i+1] = aux_destino; aux_lug_total = lug_total; lug_total = lug_total[i+1]; lug_total[i+1] = aux_lug_total; aux_preco = preço; preço = preço[i+1]; preço[i+1] = aux_preco; aux_lug_vendido = lug_vendido; lug_vendido = lug_vendido[i+1]; lug_vendido[i+1] = aux_lug_vendido; troca = 1; } } tam--; } } void Cadastro (int x, float hora[N], char origem[N], char destino[N], int lug_total[N], float preço[N], int lug_vendido[N]) { // y variável de pesquisa int achou = cont_voo = op = 0; // É necessário a criação da variável x como sendo uma variável estática x = -1; // para poder incremendar 1 ao seu valor logo quando entra na rotina de cadastro // rotina de preencimento inicial dos vetores do { printf ("Informe o horario de embarque: "); scanf ("\n %f", &hora[x]); do { printf("Cidade de origem\n\n"); printf("1 - Vitoria\n"); printf("2 - são Paulo\n"); printf("3 - Rio de Janeiro\n"); printf("4 - Belo Horizonte\n"); printf("5 - Salvador\n"); printf("6 - Brasilia\n"); printf("7 - Florianopolis\n"); printf("8 - Curitiba\n"); printf("9 - Porto Alegre\n\n"); printf("Digite o numero da cidade de origem: "); scanf("%d",&origem[x]); } while ((origem[x]<1) || (origem[x]>9)); do { printf("\n\nCidade de destino\n\n"); printf("1 - Vitoria\n"); printf("2 - são Paulo\n"); printf("3 - Rio de Janeiro\n"); printf("4 - Belo Horizonte\n"); printf("5 - Salvador\n"); printf("6 - Brasilia\n"); printf("7 - Florianopolis\n"); printf("8 - Curitiba\n"); printf("9 - Porto Alegre\n\n"); printf("Digite o numero da cidade de destino: "); scanf("%d",&destino[x]); } while ((destino[x]<1) || (destino[x]>9)); do { printf ("Numero total de lugares no aviao: "); scanf ("\n %d", &lug_total[x]); } while (lug_total[x] < 0); do { printf ("Informe o preço da passagem: R$ "); scanf ("\n %f", &preço[x]); } while (preço[x] <= 0); //acrescendo 1 ao numero de lugares vendidos lug_vendido[x] = lug_vendido[x] + 1; do { printf("Deseja continuar o cadastramento? (1 - Sim / 2 - não): "); scanf("%d",&op); } while ((op != 1) && (op != 2)); } while (op = 1); //fim da rotina de preenchimento inicial dos vetores } main () { int voo[N], origem[N], destino[N], lug_total[N], lug_vendido[N], i = 0, voo_aux, , x, y, z, w, k, achou, op, cont_voo, rg, i_maior, i_menor, nenhum_abaixo_med; float preço[N]; int x = -1; // y variável de pesquisa achou = cont_voo = 0; //cadastramento das passagens do { printf ("\n\n\nOpcoes: \n"); printf ("1 -> Cadastrar. \n"); printf ("2 -> Alterar dados. \n"); printf ("3 -> Disponibilidade de voo. \n"); printf ("4 -> Pesquisa de voos. \n"); printf ("5 -> Listagem geral dos voos. \n"); printf ("6 -> Listagem dos voos para uma cidade de origem. \n"); printf ("7 -> Listagem dos voos para uma cidade de destino. \n"); printf ("8 -> Venda. \n"); printf ("9 -> Sair. \n\n"); printf ("Opcao: "); scanf ("%d", &op); switch (op) { //impressão do protocolo case 1: if (x > N) //verificando se chegou no limite de cadastramento do vetor { printf("\nLimite de cadastramento de voos.\n\n"); } else { // do // { x++; //cadastramento voo do { printf ("\n\nDigite o n.o do %do voo: ", (x + 1)); scanf ("%d", &voo_aux); if (Pesquisa(voo_aux, voo[x]) == 1) { printf ("Voo já cadastrado!!! \n\n"); } else { voo[x] = voo_aux; achou = 0; } //fim consulta } while (achou == 1); Cadastro(x, hora, origem, destino, lug_total, preço, lug_vendido); //a referência, aqui, tem que jogar o conteúdo desses vetores } break; //alteração de dados case 2: do { printf ("\n\nDigite o n.o do %do voo: "); scanf ("%d", &voo_aux); if (Pesquisa(voo_aux, voo) == 0) //vetor dos voos { printf ("Voo não cadastrado!!! \n\n"); } else { Cadastro(i, hora, origem, destino, lug_total, preço, lug_vendido); //a referência, aqui, tem que jogar o conteúdo desses vetores achou = 0; } //fim consulta } while (achou == 1); break; //disponibilidade de voos case 3: int origem, destino, y = 0; printf("Digite o numero da cidade de origem: "); scanf("%d",&origem); printf("Digite o numero da cidade de destino: "); scanf("%d",&destino); printf("Numero do voo /t Capacidade /t Assentos vendidos"); //PRA FAZER A TABULAÇÃO, É /t MESMO?!?!? do { if ((origem == origem[y]) && (destino == destino[y])) { prinft("%d /t %d /t %d", voo[y], lug_total[y], lug_vendido[y]); } else { y++; } } while (y <= N); break; //pesquisa de voos case 4: //sair system ("PAUSE"); } como vocês podem ver ainda faltam uns 4 cases e algumas funções, tem como alguém me ajudar a terminar isso? to precisando p/ hj até às 20h vlw galera
×
×
  • Criar Novo...