Ir para conteúdo
Fórum Script Brasil

Nelson Andrade

Membros
  • Total de itens

    2
  • Registro em

  • Última visita

Sobre Nelson Andrade

Nelson Andrade's Achievements

0

Reputação

  1. Fiz um programa em C, que recebia múltiplos ficheiros que eram abertos pelo processo filho, e se desse erro na abertura, o pai incrementava esse erro e imprimia no fim. Agora preciso de criar múltiplos filhos, 1 para cada ficheiro, e usar semáforos para bloquear os filhos, pois estes têm de começar ao mesmo tempo. Código que tenho agora sem semáforos: #include<stdio.h> #include<unistd.h> #include<stdlib.h> #include<ctype.h> #include<sys/wait.h> int main(int argc, char*argv[]) { int i,contador=0,erros=0,status; FILE*fp; // Declarar o ficheiro int pidpai=getpid(); //pid do pai if(argc<2) { //proteção par ao numero de argumentos printf("argumentos insufecientes, ficheiro necessario\n"); exit(1); } for(i=1;i<=argc-1;i++) { contador++; //conta o numero de files if(pidpai==getpid())//fica com o pid do programa principal { if(fork()) { wait(&status);// o processo pai espera pelo filho que acabe e recebe um valor na variável status if(status==0) erros++; //sempre que o status for 0, é porque houve um erro na abertura de um file } // e é incrementado a variavel erros else { printf("\nPID=(%d) ficheiro: %s\n",getpid(),argv); fp=fopen(argv,"r");// abre o ficheiro para leitura if(fp==NULL) return 0;//devolve 0 caso haja erro else return 1;//devolve 1 se abrir corretamente } } } printf("Ficheiros:%d Erros:%d\n",contador,erros);// mostra o numero de files e erros no ecrã }
  2. Estou a fazer um trabalho em que peço ao utilizador para escrever um texto. Depois pego nas palavras desse texto e insiro cada uma delas numa árvore binária e a cada nó da árvore está associado uma string e um contador (no case de haver palavras repetidas) O inserir já está. Mas o meu professor pede para procurarmos por palavras, ou seja, o utilizador escreve uma palavra ou um bocado dela e todas as palavras na árvore que começarem por esse bocado têm de ser imprimidas. Até agora eu tenho assim: Se tiver na árvore as palavras "casa", "casamento", só é imprimida a primeira palavra e não sei porquê. Alguém me pode ajudar? void procura( String x ) { if(x.length()==0) { listarPosOrdem(raiz); // se o utilizar não introduzir nada, imprimo todas as palavras da árvore, funciona. return; } No actual = raiz; if(actual==null){ System.out.println("palavra não encontrada"); return; }; if(actual.oElemento.startsWith(x)==true){ System.out.println("Palavras encontradas: "); System.out.println(actual.oElemento + " encontrada " + actual.contador + " vez(es) "); } while( actual != null && actual.oElemento.startsWith(x)==false){ if( x.compareTo(actual.oElemento)>0 ){ actual = actual.dir; } else actual = actual.esq; if(actual==null){ System.out.println("palavra não encontrada"); return; } if(actual.oElemento.startsWith(x)==true){ System.out.println("Palavras encontradas: "); System.out.println(actual.oElemento + " encontrada " + actual.contador + " vez(es) "); } } }
×
×
  • Criar Novo...