Ayudaaaaaa!!! ejercicios de programacion en c

Iniciado por Skarface, 21 Julio 2010, 06:09 AM

0 Miembros y 1 Visitante están viendo este tema.

Skarface

me pueden ayudar a resolver estos ejercicios porfavor =)


1) Construir un programa en C, usando funciones, que permita crear una matriz A de N x
M, una matriz B de P x Q (con P <= N y Q <= M) y permita determinar si la matriz B se
encuentra contenida en la matriz A.


2) Usando la implementación de pilas y filas que se ha revisado en clases se pide
construir un programa en C, usando funciones, que permita cumplir con los siguientes
requerimientos:
Eliminar de una pila 'p' todos los elementos que son múltiplos de un valor 'k', la
pila resultante de eliminar los elementos DEBE estar a su capacidad MÁXIMA.
Insertar en una pila, en la posición K, un valor X.
Eliminar de una fila 'f' todos los elementos que son múltiplos de un valor 'k', la
fila resultante de eliminar los elementos DEBE estar a su capacidad MÁXIMA.
Insertar en una fila, en la posición K, un valor X.
Las signaturas de las funciones DEBERÁN ser las que se indican a continuación:
PILA eliminarPilaMultiplos(PILA p, int k)
PILA insertarPilaUbicacionK(PILA p, int k, int x)
FILA eliminarFilaMultiplos(FILA f, int k)
FILA insertarFilaUbicacionK(FILA f, int k, int x)


Og.

No se hacen tareas, postea lo que llevas y te ayudamos.
|-

Skarface

#2
Código (cpp) [Seleccionar]
#include <stdio.h>

int main()
{
int R [50] [50];
int S [50] [50];
int fr, cr, fs, cs;
printf("Inserte filas de R: ");
scanf("%d",&fr);
printf("Inserte columnas de R: ");
scanf("%d",&cr);
printf("Inserte filas de S: ");
scanf("%d",&fs);
printf("Inserte columnas de S: ");
scanf("%d",&cs);

printf("\nLLENANDO MATRIS R: \n");
llenarMatriz(R, fr, cr);
printf("\nLLENANDO MATRIS S: \n");
llenarMatriz(S, fs, cs);
printf("\nLA MATRIS R : ");
mostrarMatriz(R, fr, cr);
printf("\n\nLA MATRIS S : ");
mostrarMatriz(S, fs, cs);

void llenarMatriz(int M[50][50], int f, int c)
{
for (int i=1;i<=f;i++)
{
 for (int j=1 ;j<=c;j++)
 {
  printf ("Inserte pos[%d][%d]: ",i,j);
  scanf("%d",&M [i] [j]);
 }
}
}

void mostrarMatriz(int M[50][50], int f, int c)
{
for (int i = 1 ; i <= f ; i++)
{
 printf("\n");
 for (int j = 1 ; j <= c ; j++)
 {
  printf ("[%d]",M [i] [j]);
 }
}
}







ahora no se como crear la funcion para ver si una esta contenida en la otra =(

do-while

¡Buenas!

El algoritmo de resolucion, consta de 4 sencillos pasos:

1- Te pones a pensar hasta que tengas una idea.
2- Intentas pasar la idea a tu lenguaje favorito.
3- Si encuentras algun problema, lo posteas y vemos que se puede hacer.
4- Si no se ha solucionado el ejercicio vuelves al paso 1.

¡Saludos!
- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!

Skarface

la idea es guardar todos los elementos de la matriz b en vectores, una fila en cada vector

for(i=1;i<=p;i++){
    for(j=1;j<=q;j++){
       
       V(i)[i-1]= M[j];
    }
   
aora no se me ocurre como hacer para ver si ese vector esta dentro de la matriz  :( :( :(

Gallu

Primero que nada compañero te aconsejaria que entiendas bien el enunciado para poder explicarte bien , si no la verdad aqui no se aclara ni Dios....
Cita de: Skarface
1) Construir un programa en C, usando funciones, que permita crear una matriz A de N x
M, una matriz B de P x Q (con P <= N y Q <= M) y permita determinar si la matriz B se
encuentra contenida en la matriz A.
vamos por partes , te piden un programa que cree dos matrices de n dimensiones , la primera matriz será

matrizA [N][M]

la matriz B será menor que la matriz a en todo sentido

Cita de: Skarface
(con P <= N y Q <= M)
con lo cual

matrizB[P][Q]


en ningun momento dicen que las matrices deben de ser de 50X50 , una vez que las tenga llenas , tomas el primer elemento de la matriz más pequeña y lo vas comparando con cada uno de los elementos de la más grande , si encuentras coincidencia , pasas al segundo elemento de matrizB y asi , si los elementos de matrizB se encuentran consecutivamente en matrizA , significa que matrizA contiene a matrizB.
No se si esto te ha aclarado las cosas , ya me dirás algo ...
:huh:
Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.

Skarface

#6
si entiendo lo que me dices, pero es como un limite que le doi para ver si compila =)
aora ya tengo casi listo el programa pero no me arroja lo que quiero que es ver que si esta contenida o no, no se donde esta el error   :-(


#include <stdio.h>
#include <conio.h>

void llenar (int M[20][20], int f, int c)
{
for (int i = 1 ; i <= f ; i++)
{
 for (int j = 1 ; j <= c ; j++)
 {
  printf ("Inserte pos[%d][%d]: ",i,j);
  scanf("%d",&M [i] [j]);
 }
}
}

void mostrar (int M[20][20], int f, int c)
{
for (int i = 1 ; i <= f ; i++)
{
 printf("\n");
 for (int j = 1 ; j <= c ; j++)
 {
  printf ("[%d]",M [i] [j]);
 }
}
}


int main()
{
int A [20] [20];
int B [20] [20];
int V[20];
int m, n, p, q,i,j,x,y,s;
printf("Inserte filas de A: ");
scanf("%d",&m);
printf("Inserte columnas de A: ");
scanf("%d",&n);
printf("Inserte filas de B: ");
scanf("%d",&p);
printf("Inserte columnas de B: ");
scanf("%d",&q);

if(m<p){
       printf("B no esta contenida en A \n");
       return 0;
   }
if(n<q){
       printf("B no esta contenida en A \n");
       return 0;
   }
   

printf("\nLLENANDO MATRIS R: \n");
llenar (A, m, n);
printf("\nLLENANDO MATRIS S: \n");
llenar (B, p, q);
printf("\nLA MATRIS R : ");
mostrar (A, m, n);
printf("\n\nLA MATRIS S : ");
mostrar (B, p, q);
for(j=1;j<=q;j++){
       i=1;
       V[i-j]= B[i][j];
   }
for(i=1;i<=m;i++){
       for(j=1;j<=n;j++){
           if(V[i-1]==A[i][j]){
               x=j;
           }
       }
   }
for(i=1;i<=p;i++){
       for(j=1;j<=q;j++){
           V[i-j]= B[i][j];
       }
   }
for(i=1;i<=m;i++){
       for(j=1;j<=n;j++){
           if(V[i-1]==A[i][j]){
               y=j;
               s=x+q;
               if((s<=n)&&(x==y)){
                      for(j=x;j<=n;j++){
                           if(V[i-1]=! A[i][j]){
                               printf("B no esta contenida en A \n");
                           }
                           else{
                               printf("B esta contenida en A \n");
                           }
                       }
                   }
               }
           }
       }
getch();
}



Littlehorse

Skarface, te he agregado las etiquetas GeSHi a tu ultimo post. Para la próxima que pongas código, hazlo así:

C
[code=c]codigo[/code]

C++
[code=cpp]codigo[/code]
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

Skarface

perdon es que soy nuevo aca   :(  jejeje  me pueden ayudar a corregir ese codigo porfavor???
:huh:

.:BlackCoder:.

No vi to el codigo pero ya por aqui estas errado:

Código (cpp) [Seleccionar]
for(j=1;j<=q;j++){
        i=1;
        V[i-j]= B[i][j];
    }


i-j te puede dar negativo y pes eso no debe pasar  :xD

Saludos... Luego sigo viendo
"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja