Zona HTML Zona Java Zona PHP Zona ASP Zona Bases de datos
Inicio > Foros > C / C++ > es de vida o muerte- por favor
-Foros de debate

C / C++
Lista de foros | Lista de mensajes de este foro

Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.

es de vida o muerte- por favor
Enviado por majela el día 26 de mayo de 2008

Bueno casi casi, porque si no precento este trabajo mañana no tendre derecho a examen. Ayudenme por favor :+(

Tengo que hacer un programa que calcule cuantas veces una matriz pequeña se encuentra dentro de una grande. Llevo dias trabajo en ello y no consigo que funcione al 100%. Y ya se me agota el tiempo :+(
El codigo que escribi es este, ayudenme y diganme que esta mal, por que a veces funciona y otras no funciona. Un millon de gracias.

#include<stdio.h>
void main()
{
int m,n,num,i,j,k,l,count,count1;
int conta=0,flag;
int big[50][50],smal[50][50];
printf(\\\"Enter how much shurot in the first array\\\");
scanf(\\\"%d\\\",&m);
printf(\\\"Enter the numbers\\\");
for(i=0;i<m;i++)
for(j=0;j<m;j++)
{
scanf(\\\"%d\\\",&num);
big[i][j]=num;
}
printf(\\\"Enter how much shurot inthe secong array\\\");
scanf(\\\"%d\\\",&n);
printf(\\\"Enter the numbers\\\");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
scanf(\\\"%d\\\",&num);
smal[i][j]=num;
}
for(i=0;i<=m-n;i++)
for(j=0;j<=m-n;j++)
{
flag=1;
for(k=i,count=0;(count<n)&&flag;count++,k++)
for(l=j,count1=0;(count1<n)&&flag;count1++,l++)
{
if(big[k][l]!=smal[count][count1])
flag=0;
}
if(flag)
conta++;
}
printf(\\\"martrixa smal esta dentro de matrixa bid %d veces\\\",conta);
}



 
Re: es de vida o muerte- por favor
Enviado por Noel Solw el día 27 de mayo de 2008

Te mando un programam que hace parte del trabajo : determina si una matriz se encuentra dentro de una mas grande, pero lo hace una sola vez. No es ningun problema modificar el programa para repetir el proceso.
Te deseo el mejor de los exitos.



// program k5c1.CPP - page 91
// for two given matrix large[M][N] and small[P][Q]
// check if small is a submatrix of large.
// c++ exercices book - dr. gershon kagan (first edition : 2001)
// written in Borland CPP ver 3.1

#include <conio.h>
#include <iostream.h>
#include <iomanip.h>
#include <stdlib.h>

#define M 5
#define N 7
#define P 3
#define Q 2

int large[M][N] = {{ 12, -5, 18, 4, 5, 0, 7},
{ 1, 6, 0, -4, 12, -5, -8},
{ 3,-17, 9, 2, 0, 6, 1},
{ -3, 0, 10, 11, -3, 17,-15},
{ 11, 6, -2, -1,-12, 14, 2}};

int small[P][Q] = {{ 12, -5},
{ 0, 6},
{ -3, 17}};

void Show(int *a,int R,int S,char *msg)
{
for(int i = 0; i < R; i++)
{
cout << setw(20) << msg;
msg[0] = 0;
for(int j = 0; j < S; j++)
cout << setw(5) << *(a+i*S+j);
cout << endl;
}
cout << endl;
} // SHOW

void Process()
{
for(int row = 0; row <= M-P; row++)
for(int col = 0; col <= N-Q; col++)
{
int ok = 1;
for(int i = 0; i < P && ok; i++)
for(int j = 0; j < Q && ok; j++)
ok = small[i][j] == large[row+i][col+j];
if(ok)
cout << "small is a sub matrix of large, begins at "
<< "<" << row << "," << col << ">" << endl << endl;
}
} // PROCESS

void main()
{
clrscr();
cout << "for two given matrix large[M][N] and small[P][Q]" << endl;
cout << "check if small is a submatrix of large." << endl << endl;
Show(&large[0][0],M,N,"large : ");
Show(&small[0][0],P,Q,"small : ");
Process();
cout << "end of program - good bye ! ! !" << endl;
getch();
} // MAIN

/*
for two given matrix large[M][N] and small[P][Q]
check if small is a submatrix of large.

large : 12 -5 18 4 5 0 7
1 6 0 -4 12 -5 -8
3 -17 9 2 0 6 1
-3 0 10 11 -3 17 -15
11 6 -2 -1 -12 14 2

small : 12 -5
0 6
-3 17

small is a sub matrix of large, begins at <1,4>

end of program - good bye ! ! !
*/

 


Tienda
Patrocinados
 

Copyright © 1999-2006 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network