Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - Hyde

Páginas: [1]
1
Hola.

Bueno un amigo que estudia en una universidad diferente a la mía, me paso este programa para resolverlo en Legunaje C, me llamo la atención y de verdad quisiera hacerlo, pero necesitaría alguna orientación para ver si me pueden ayudar en algo.

ALGORITMO DE TRANSPORTE

Los pasos básicos del algoritmo de transporte son exactamente iguales a los del método simplex Sin embargo, en lugar de utilizar la tabla simplex regular, aprovechamos la estructura especial del modelo de transporte para organizar los cálculos en una forma más conveniente.

Paso 1. Determine una solución factible básica inicial y vaya al paso 2.

Paso 2. Use la condición de optimalidad del método simplex para determinar la variable de entrada de entre todas las variables no básicas. Si se satisfacen las
condiciones de optimalidad, deténgase. De lo contrario, avance al paso 3.

Paso 3. Use la condición de factibilidad del método simplex para determinar la variable de entrada de entre todas las variables básicas actuales, y halle la nueva solución básica. Regrese al paso 2.

Ejemplo:

Solución inicial:
En caso de no ser igual la oferta y la demanda se crea una fila o una columna con la diferencia.
Ejemplo si tenemos 3 orígenes y 3 destinos de la siguiente forma:


El resultado es que la oferta suma 1500 y la demanda 3000 por lo que será necesario crear una columna de oferta ficticia para balancear el problema


Y ahora se resuelve como exactamente igual que la forma anterior.

En base a la información anterior, desarrolle un programa en Lenguaje C que permita lo siguiente:

a) Cargar la matriz de costos.

b) Cargar el vector de ofertas y demandas.

c) Obtener una solución Inicial por el método de ruta noroeste mostrar la matriz resultante.

d) Obtener el valor de la solución que es la sumatoria de cada costo* cantidad enviada

e) La matriz debe soportar un máximo de 5 orígenes y 5 destinos.
Mi opinión:

la forma de que pensé para hacerlo fue la siguiente:

Crear una matriz que se llene de los costos ingresados por el usuario, con respecto a esta matriz no le veo mucho sentido... porque en si lo que necesito hacer es el camino que se muestra en el ejemplo.

Crear un vector de demandas y otro de ofertas ubicandolos con gotoxy que utiliza la librería #include "myconio.h".

Crear otra matriz donde voy a hacer la operación, y crear el camino que se muestra en el ejemplo, aplique la siguiente lógica:

Código: [Seleccionar]
for(x=0;x<f;x++){
                      printf("\n");
                     
            for(y=0; y<c; y++){
                     
                     m[x][y]=0; 
 
                     if(ofertas[x]>demandas[x]){
                     m[x][x]=demandas[x];//ubicarlo en la cosilla ("noroeste")
                     m[x][x+1]=ofertas[x]-demandas[x]; // la diferencia de ambos para cuando               se sumen de bien
                     }else
                     if(ofertas[y]<demandas[y]){
                     m[y][y]=ofertas[y];
                     m[y+1][y]=demandas[y]-ofertas[y];
                     }

                           printf(" %d ",m[x][y]);
                      }
                    }

el problema es: que no esta dando correcto con las columnas, la suma siempre se pasa y no da el numero que deberia dar en la misma posicion de demandas, otra cosa es que nose porque si yo en demandas meto los numero 5, 15, 15, 15 me sale a la ora de imprimirse 5, 15, 5, 15

dejo todo el código hecho hasta ahora:

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#include "myconio.h"
#define f 3
#define c 4

void costos_matriz(int costos[][c]);
void funcionof(int ofertas[f], int demandas[c], int m[][c]);

int main(){
    int costos[f][c], ofertas[f], demandas[c],m[f][c];
   
    funcionof(ofertas,demandas,m);
 
  system("PAUSE>NULL");
  return 0;
}

void costos_matriz(int costos[][c]){
     
     int x, y;
     
     
     for(x=0;x<f;x++){
            for(y=0; y<c; y++){
                               
                           printf("Ingrese costos: ");
                           scanf("%d",&costos[x][y]);

                    }                               
            }
     }//costos
     
void funcionof(int ofertas[f], int demandas[c], int m[f][c]){
     
     int i,x,y,k;
       
     for(i=0; i<f; i++){
     
     printf("ingrese la oferta: ");
     fflush(stdin);
     scanf("%d",&ofertas[i]);
     }
     for(i=0; i<c; i++){
     printf("ingrese la demandas: ");
     fflush(stdin);
     scanf("%d",&demandas[i]);
     
        }
        system("cls");
       
     for(x=0;x<f;x++){
                      printf("\n");
                     
            for(y=0; y<c; y++){
                     
                     m[x][y]=0; 
 
                     if(ofertas[x]>demandas[x]){
                     m[x][x]=demandas[x];
                     m[x][x+1]=ofertas[x]-demandas[x];
                     }else
                     if(ofertas[y]<demandas[y]){
                     m[y][y]=ofertas[y];
                     m[y+1][y]=demandas[y]-ofertas[y];
                     }
                     
                     
                           printf(" %d ",m[x][y]);
                      }
                    }         
                                       

   
    printf("\n");
        for(x=0; x<f; x++){
        gotoxy(16,x+1);
        printf(" %d ", ofertas[x]);
        }
       
        for(x=0; x<c; x++){
        gotoxy(x*3+1,7);
        printf( "%d ", demandas[x]);
        }
 
     }//ofertas_demandas 
   

Solo me gustaría recibir una pequeña orientación con respecto a esto, ya que no tengo a quien preguntarle y me frustra no poder hacerlo!. Agradecería de verdad su ayuda.

2
Bueno, la pregunta que haré tal vez les parezca algo tonta, pero como apenas estoy empezando con la programación, no me gusta que me queden dudas:

Bueno daré un ejemplo para que me puedan entender mejor:

Pido los nombres de los estudiantes de un salón de clase de la siguiente manera:

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

main()
{
    char nom[20];
    int x;
 
 
for(x=0;x<10;x++){
                     
    printf("Ingrese nombre: ");
    scanf("%s",&nom);

}           
  system("PAUSE");
  return 0;
}

lo que quiero es que al terminar de ingresar los nombres, estos se impriman en un vector (o matriz), como en forma de lista, desde el primero que se ingreso, hasta el ultimo, es decir dentro de un array de 10 espacios, habrán 10 nombres.

3
Hola
bueno, ahora estoy practicando bastante con vectores y matrices, he logrado hacer una gran variedad de cosas y he logrado mejorar mi lógica, pero conseguí un enunciado que me pareció algo curioso y difícil, me gustaría que me ayudaran a ver como realizar este programa, y como no, que me dieran una breve explicación (lo básico de matrices lo sé) si no es mucha molestia, ya que me encantaría entenderlo.

Bueno dejo el "pequeño" enunciado:

Dada una matriz G de tamaño MxM con M par; desarrollar una función que permita seleccionar(mediante desplazamientos del cursor y al presionar una tecla) un numero cualquiera de la matriz, que contenga ocho valores adyacentes, sustituir el numero seleccionado por* (numero central), y luego utilizando las flechas direccionales, poder mover esa sub-matriz a través de la matriz original, de forma tal que todos los números se desplacen y sustituyan de forma temporal los números por los que va pasando. Al presionar otra tecla se debe eliminar la selección y la matriz debe volver a su estado original, y permitir realizar una nueva selección.


espero su ayuda.

4
Buenas, estoy practicando con cadenas pero me tranqué en esto:

Dado un texto de hasta 300 caracteres, desarrollar lo siguiente

a) Calcular el porcentaje de vocales presentes en el texto
b) Contar cantidad de palabras en el texto
c) Verificar el porcentaje de dígitos y de letras que existen en el texto
d) Eliminar todos los espacios y sustituirlos por "_"
e) Imprimir el texto al revés

Bueno, lo único que he logrado hacer es lo siguiente:

- contar las vocales
- contar los caracteres

PERO necesito es el porcentaje de vocales, se supondría que seria (Numerodevocales *100) /TotalCaracteres si no me equivoco.
El problema que tengo es el siguiente: cuando cuento el numero de caracteres, me cuenta también los espacios (utilizando el strlen ), cosa que no quiero para poder sacar bien el porcentaje, dejo el código que he hecho:

Código: [Seleccionar]
#include <stdio.h>
#include <conio.h>
#include <string.h>

int contar_vocales(char *);


int main(){
     
char cad[300];
int longi;
float porc;

printf("Ingrese el texto a contar vocales : ");
gets(cad);
longi = strlen(cad);
printf("La cantidad de Vocales: %d",contar_vocales(cad));
printf("\nCantidad de caracteres: %d",longi);
getch();


}

//-- Funcion:
       
int contar_vocales(char *cad){
   
int cont=0;
char *aux=cad; 
 
 while(*aux){     
   if(*aux=='a'||*aux=='e'||*aux=='i'||*aux=='o'||*aux=='u')
     cont++;
       aux++;               
   }//función
   

return cont;

}//contar_vocales

me gustaría que me ayuden con lo demás también que no tengo idea de como hacerlo (ya lo he pensado bastante, pero no he dado con eso :/), un saludo y muchas gracias.

5
Hola me gustaría que me ayuden a generar un vector de 10 números con números a la zar de 0 a 29 pero que los números NO se repitan.

por ejemplo para generar los numero a la zar hice lo siguiente:

Código: [Seleccionar]
//--Cargar un vector con números aleatorios
    srand(time(0)); //se establece el número semilla
    for(x=0;x<10;x++){
      A[x]=(rand()%9)+10;//se genera el número aleatorio  entre 0 y 29
    }//for
   
    printf("\n Vector A cargado con números aleatorios entre 0 y 29 \n\n");   
    for(x=0;x<10;x++){
      printf("\n\t%d\t",A[x]);
    }

¿Como hago que no se repitan?, por ahí leí que con un While se podía, pero ¿me podrían explicar como?, Un saludo y Disculpen las molestias como verán soy novata en esto y se me hace algo difícil esto.

6
Me están pidiendo que de un matriz 10 x 10 , donde los números sean al azar, Mostrar solo los valores de la matriz, donde la suma de su fila y columna sea par.

La matriz:

Código: [Seleccionar]
//matriz cargada con numeros aleatorios entre 10 y 99
  srand(time(0));
  acum=0;
  for(x=0;x<10;x++){
    for(y=0;y<10;y++){
      M[x][y]=rand()%90+10;   
      acum=acum+ M[x][y];

    }   
  }//for x
 
  //imprimir matriz
 
  printf("\t\tMatriz Original\n\n");
  for(x=0;x<10;x++){
    printf("\n");
    for(y=0;y<10;y++){
      printf(" %d ",M[x][y]);
    }   
  }//for x
//---------------------------------------------------------------------
//--- Matriz traspuesta -----
  for(x=0;x<10;x++){
    for(y=0;y<10;y++){
      M2[x][y]=M[y][x];   
    }   
  }//for x
  printf("\n\n\t\tMatriz Traspuesta\n\n");
  for(x=0;x<10;x++){
    printf("\n");
    for(y=0;y<10;y++){
      printf(" %d ",M2[x][y] );
    }   
  }//for x

//----------------------------------------------------
puedo sacar la suma de cada fila y la de cada columna de esta manera:
Código: [Seleccionar]
for(x=0;x<10;x++){
sumafilas=0;
     for(y=0;y<10;y++){
  sumafilas=sumafilas+M[x][y];
  vecF[x]=sumafilas;
    }//for x
  }//for y
printf("\n\nLa suma de cada fila es:\n\n");
 for(x=0;x<10;x++){
printf("\n %d", vecF[x]);
}
  for(x=0;x<10;x++){
sumacolum=0;
     for(y=0;y<10;y++){
  sumacolum=sumacolum+M[y][x];
  vecC[x]=sumacolum;
    }//for x
  }//for y
printf("\n\nLa suma de cada columna es:\n\n");
 for(x=0;x<10;x++){
printf("\n %d", vecC[x]);
}

pero como hago para Mostrar solo los valores de la matriz, donde la suma de su fila y columna sea par, no mostrar la suma, sino la fila y las columnas donde la suma sea par. Un saludo!

7
Aprender a programar desde cero / ¿Como empezar a programar?
« en: 04 de Febrero 2014, 01:08 »
Hola, bueno, estoy estudiando Informática, y de verdad que me gusta, pero me está costando mucho, ya fue dado el primer parcial que fue sobre pseudocodigo, examen el cual saque muy mala nota, con respecto a eso, me gustaría que me den algunas recomendaciones/consejos para desarrollar mas lógica, mas habilidad mental que eso es lo que me cuesta, y si es posible me gustaría que me den algunos conceptos básicos de lo que es el for, do, while, osea los ciclos.

Ahora estamos viendo vectores, cosa que entiendo pero a la vez no, ya que al ver esto necesito tener claro el examen anterior que fue lo que anteriormente nombre. Un Saludo.

Páginas: [1]

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".