Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

PERT CPM

DZone's Guide to

PERT CPM

·
Free Resource
Implementacion en java de un modelo PERT_CPM


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Proyecto {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		String texto = null;
		int n = 0, t = 0;
		Tarea tareas[] = null, inicio = null, fin = null;

		try {
			BufferedReader in = new BufferedReader(new InputStreamReader(
					System.in));
			texto = in.readLine();
			n = Integer.parseInt(texto);

			tareas = new Tarea[n];
			inicio = new TareaInicio();
			fin = new TareaFinal();
			inicio.setNombre("Inicio");
			inicio.setTiempo(0);
			fin.setNombre("Fin");
			fin.setTiempo(0);

			for (int i = 0; i < n; i++) {
				texto = in.readLine();
				tareas[i] = new Tarea();
				StringTokenizer st = new StringTokenizer(texto, ",");
				String nombre, tipo, tiempo;
				nombre = st.nextToken();
				tipo = st.nextToken();
				tareas[i].setNombre(nombre);
				if (tipo.equals("F")) {
					tiempo = st.nextToken();
					tareas[i].setTiempo(Integer.parseInt(tiempo));
				} else if (tipo.equals("A") || tipo.equals("P")) {
					tareas[i].setTiempo(0);
				}
			}
			texto = in.readLine();
			t = Integer.parseInt(texto);
			for (int i = 0; i < t; i++) {
				String org, des;
				Tarea torg = null, tdes = null;
				texto = in.readLine();
				StringTokenizer st = new StringTokenizer(texto, ",");
				org = st.nextToken();
				des = st.nextToken();
				if (org.equals(inicio.getNombre())) {
					torg = inicio;
				} else {
					for (int j = 0; j < n; j++) {
						if (org.equals(tareas[j].getNombre())) {
							torg = tareas[j];
							break;
						}
					}
				}

				if (des.equals(fin.getNombre())) {
					tdes = fin;
				} else {
					for (int j = 0; j < n; j++) {
						if (des.equals(tareas[j].getNombre())) {
							tdes = tareas[j];
							break;
						}
					}
				}
				if (torg == null || tdes == null) {
									}
				torg.addConcecuente(tdes);
				tdes.addAntecedente(torg);
			}
		} catch (IOException e) {
			System.out.println("Error en entrada de datos");
		}
		fin.terminacionRapida();
		inicio.inicioTardio();
		System.out.print("Ruta Critica: Inicio, ");
		for (int i = 0; i < n; i++) {
			if (tareas[i].isCritico()) {
				System.out.print(tareas[i].getNombre() + ", ");
			}
		}
		System.out.print(" Fin\n");
		System.out.println("Tiempo: " + fin.inicioTardio());
		System.out.println(inicio.getNombre() + " holgura: "
				+ inicio.getHolgura());
		for (int i = 0; i < n; i++) {
			System.out.println(tareas[i].getNombre() + " holgura: "
					+ tareas[i].getHolgura());
		}
		System.out.println(fin.getNombre() + " holgura: " + fin.getHolgura());

	}

}
////////////////////////

import java.util.ArrayList;

public class Tarea {
	private String nombre;
	private int tiempo;
	private int holgura;
	private ArrayList antecedentes;
	private ArrayList consecuentes;
	
	private int iniciomasrapido;
	private int terminacionmasrapida;
	private int iniciomastarde;
	private int terminaciontarde;

	Tarea(){
		this.antecedentes = new ArrayList();
		this.consecuentes = new ArrayList();
	}
	
	void setNombre(String nombre){
		this.nombre=nombre;
	}
	
	void setTiempo(int tiempo){
		this.tiempo=tiempo;		
	}

	public String getNombre() {
		return nombre;
	}

	public int getTiempo() {
		return tiempo;
	}
	
	public int terminacionRapida(){
		this.iniciomasrapido=0;
		for (int i = 0; i < antecedentes.size(); i++) {			
			if(((Tarea)antecedentes.get(i)).terminacionRapida()>this.iniciomasrapido){
				this.iniciomasrapido=((Tarea)antecedentes.get(i)).terminacionRapida();				
			}
		}
		this.terminacionmasrapida=this.iniciomasrapido+this.tiempo;
		return (this.terminacionmasrapida);
	}
	
	public int inicioTardio(){
		this.terminaciontarde=999999;
		for (int i = 0; i < consecuentes.size(); i++) {
			if(((Tarea)consecuentes.get(i)).inicioTardio()
  
Topics:

Opinions expressed by DZone contributors are their own.

THE DZONE NEWSLETTER

Dev Resources & Solutions Straight to Your Inbox

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.

X

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}