Me topé con el problema siguiente.
Yo hice un producto (web service) que dependia de un web service previamente instalado (Creado por otro desarrollador en otro momento) que es prerequisito de mi webservice.
El chiste es que lo habia tomado de un url, pero cuando cambió al reconfigurar el web.config no tomo el cambio ya que se habia quedado hardcoded.
aparte de hacer lo de la siguiente solucion:
http://www.codeproject.com/Articles/12317/How-to-make-your-Web-Reference-proxy-URL-dynamic
lo que hice fue agregarle este codigo en Resources.cs (Codigo autogenerado).
WEB.CONFIG
<?xml version="1.0"?> <configuration> ... <appSettings> ... <add key="LLAVE" value="http://servidor/carpeta/webservice.dll/soap/IProceso"/> ... </appSettings> </configuration>
REFERENCE.CS
protected static string GetApplicationSettings(string sKey) { string sValue = null; //check if the AppSettings section has items if (System.Web.Configuration.WebConfigurationManager.AppSettings.Count > 0) { sValue = System.Web.Configuration.WebConfigurationManager.AppSettings[sKey]; } return sValue; } /// <remarks/> public IProcesosWSservice() { string TressProcesos = GetApplicationSettings("LLAVE"); this.Url = TressProcesos; if ((this.IsLocalFileSystemWebService(this.Url) == true)) { this.UseDefaultCredentials = true; this.useDefaultCredentialsSetExplicitly = false; } else { this.useDefaultCredentialsSetExplicitly = true; } }
Solución al problema de las Ocho Reinas, en el que usamos backtracking.
#include <cstdlib> #include <iostream> using namespace std; // Constantes const int MAX = 8; // Cambiar el 8 por N para obtener problemas con N reinas y un tablero de NxN // Tipos typedef int TReinas reinas [MAX]; // Cabeceras de funciones y procedimientos void OchoReinas(TReinas &r, int fila); bool EsSeguro(TReinas r, int fila, int prueba); void PintarTablero(TReinas r); //Programa principal int main () { TReinas reinas; OchoReinas(reinas,0); } // Implementación de funciones y procedimientos void OchoReinas(TReinas &r, int fila) { int prueba; for(prueba = 0; prueba < MAX; prueba++) { if(EsSeguro(r,fila,prueba)) { r[fila] = prueba; if(fila == (MAX-1)) { PintarTablero(r); } else { OchoReinas(r,fila+1); } } } } bool EsSeguro(TReinas r, int fila,int prueba) { int i; for(i = 1; i < MAX; i++) { if((r[fila-i] == prueba) || (r[fila-i] == prueba-i) || (r[fila-i] == prueba+i)) { return false; } } return true; } void PintarTablero(TReinas r) { cout << "---------------------------------" << endl; for(int fila = 0; fila < MAX; fila++) { for(int i = 0; i < r[fila]; i++) { cout << "| "; } cout << "| X "; for (int j = (r[fila] + 1); j < MAX; j++) { cout << "| "; } cout << "|" << endl << "---------------------------------" << endl; } cout << endl; }
Dada una matriz cuadrada de enteros, el algoritmo devuelve el valor máximo de cada paralela superior a la diagonal principal.
// Incluir E/S y Librerías Standard #include <iostream> #include <cstdlib> using namespace std; // Zona de Declaración de Constantes const int MAX = 100; // Zona de Declaración de Tipos typedef int TArray [MAX][MAX]; typedef struct TMatriz { TArray a; int elem; }; // Zona de Cabeceras de Procedimientos y Funciones void Inicializar(TMatriz &m); void LeerMatriz(TMatriz &m); void EscribirMatriz(TMatriz &m); void Diagonales(TMatriz &m); int ValorMax(TMatriz &m, int tope); // Programa Principal int main() { // Zona de Declaración de Variables del Programa principal TMatriz matriz; cout << endl << "Ejercicio 10.-" << endl << endl; Inicializar(matriz); LeerMatriz(matriz); cout << endl; EscribirMatriz(matriz); Diagonales(matriz); system("Pause"); // Hacer una pausa return 0; // Valor de retorno al S.O. } // Implementación de Procedimientos y Funciones void Inicializar(TMatriz &m) { m.elem = -1; for(int i = 0; i<MAX; i++) { for(int j = 0; j<MAX; j++) { m.a[i][j] = 0; } } } void LeerMatriz(TMatriz &m) { cout << "Indica el numero de filas y columnas que tendra la matriz cuadrada: "; cin >> m.elem; while(m.elem <= 0) { cout << "Escribe un numero mayor que 0: "; cin >> m.elem; } cout << "Introduce valores: " << endl << endl; for (int i = 0; i<m.elem; i++) { for(int j = 0; j<m.elem; j++) { cout << "Fila " << i << " Columna " << j << ": "; cin >> m.a[i][j]; } } } void EscribirMatriz(TMatriz &m) { cout << endl << "Tu matriz es: " << endl; for(int i = 0; i<m.elem; i++) { for(int j = 0; j<m.elem; j++) { cout << m.a[i][j] << " "; } cout << endl; } cout << endl; } void Diagonales(TMatriz &m) { for(int i = 1; i < m.elem; i++) { cout << "Diagonal " << i+1 << ": " << ValorMax(m, i) << endl; } } int ValorMax(TMatriz &m, int tope) { int valor; valor = 0; for(int i = 0; i < (m.elem - (tope - 1)); i++) { if(m.a[i][i+tope] > valor) { valor = m.a[i][i+tope]; } } return valor; }
Escribe aquí el texto
// Librería fechas /* Para funcionar, esta librería necesita la siguiente estructura: struct _fecha { char dia:5; char mes:4; int any; }; */ int bisiesto(int any) { // Finalidad: Calcula si un año es bisiesto // Argumentos: Se le pasará un año (int). No será necesario enviarle una fecha entera // Devuelve: 1 si es bisiesto, 0 si no lo es if (any%400 == 0 || (any%4==0 && any%100!=0)) return 1; else return 0; } int dias_mes(struct _fecha fecha) { // Finalidad: Calcula los días de un mes // Argumentos: Se le pasará una fecha (struct _fecha). // Devuelve: Los días del mes de la fecha pasada (int). switch (fecha.mes) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31; break; case 4: case 6: case 9: case 11: return 30; break; case 2: if (bisiesto(fecha.any)) return 29; else return 28; } } int validarFecha(struct _fecha fecha) { // Finalidad: Determina si la fecha pasada existe // Argumentos: Se le pasará una fecha (struct _fecha). // Devuelve: 1 si la fecha es válida, 0 si no lo es. if (fecha.mes>0 && fecha.mes<=12) { if (fecha.dia>0 && fecha.dia<=dias_mes(fecha)) return 1; else return 0; } else return 0; } int cuenta_dias(struct _fecha fecha1, struct _fecha fecha2) { // Finalidad: Calcular los días que hay entre dos fechas. // Argumentos: Se le pasará dos fechas (struct _fecha). // Devuelve: La distancia en días entre las dos fechas (int) // Nota: fecha1 deberá ser anterior a fecha2 int acum=0, sw=0; while (1) { if (fecha1.any == fecha2.any && fecha1.mes == fecha2.mes) break; acum=acum+(dias_mes(fecha1)-fecha1.dia); if(fecha1.mes==12) { fecha1.mes=1; fecha1.any++; } else fecha1.mes++; fecha1.dia=0; } acum=acum+(fecha2.dia-fecha1.dia); return acum; } struct _fecha sumarDias(struct _fecha fecha, int x) { // Finalidad: Suma a una fecha inicial una cantidad de días. // Argumentos: Una fecha (struct _fecha) y una cantidad de días (int). // Devuelve: La fecha final con los días sumados (struct _fecha). for(;x>0;x--) { if(fecha.dia<dias_mes(fecha) ) fecha.dia++; else { if (fecha.mes==12) { fecha.mes=1; fecha.any++; } else fecha.mes++; fecha.dia=1; } } return fecha; } struct _fecha restarDias(struct _fecha fecha, int x) { // Finalidad: Resta a una fecha inicial una cantidad de días. // Argumentos: Una fecha (struct _fecha) y una cantidad de días (int). // Devuelve: La fecha final con los días restados (struct _fecha). for(;x>0;x--) { if(fecha.dia>1) fecha.dia--; else { if (fecha.mes==1) { fecha.mes=12; fecha.any--; } else fecha.mes--; fecha.dia = dias_mes(fecha); } } return fecha; } int dia_semana(struct _fecha fecha2) { // Finalidad: Halla el día de la semana de una fecha (lunes, martes...) // Argumentos: Una fecha (struct _fecha). // Devuelve: 1 para lunes, 2 para martes... struct _fecha fecha1 = {14, 9, 1752}; switch(cuenta_dias(fecha1, fecha2)%7) { case 3: return 7; // Domingo case 4: return 1; // Lunes case 5: return 2; // Martes case 6: return 3; // Miércoles case 0: return 4; // Jueves case 1: return 5; // Viernes case 2: return 6; // Sábado } } int compararFechas(struct _fecha fecha1, struct _fecha fecha2) { // Finalidad: Compara dos fechas y comprueba cuál es anterior a la otra // Argumentos: Dos fechas (struct _fecha). // Devuelve: 0 si ambas son iguales, 1 si fecha1 es anterior a fecha2, -1 si fecha1 es posterior a fecha2 if (fecha1.any == fecha2.any) { if (fecha1.mes == fecha2.mes) { if (fecha1.dia == fecha2.dia) return 0; else { if (fecha1.dia > fecha2.dia) return -1; else return 1; } } else { if(fecha1.mes > fecha2.mes) return -1; else return 1; } } else { if (fecha1.any > fecha2.any) return -1; else return 1; } } struct _fecha domingo_pascua(int any) { // Finalidad: Calcula el Domingo de Pascua de un determinado año // Argumentos: Se le pasa un año (int). No es necesario pasarle una fecha entera // Devuelve: la fecha entera del Domingo de Pascua struct _fecha fecha; int a, b, c, d, e, n; a = any % 19; b = any % 4; c = any % 7; d = (19 * a + 24) % 30; e = (2*b + 4*c + 6*d + 5) % 7; n = 22 + d + e; if (n <= 31) { fecha.dia = n; fecha.mes = 3; } else { fecha.dia = n - 31; fecha.mes = 4; } return fecha; }