Identificarte

Versión Completa : Necesito Ayuda!! Lenguaje C


Sponsored links
.




CUCA
marzo 22, 2004, 12:37
HOLA A TODOS, OS AGRADECERIA MUCHISIMO SI ME PUDIESEIS AYUDAR CON ESTO. NECESITO HACER UN PROGRAMA QUE GENERE CUADRADOS MAGICOS, EN LENGUAJE C. ES MUY URGENTE!!!!! DE AHI DEPENDE EL APROBAR EL CURSO!! Y ES QUE YO LO ESTOY INTENTANDO PERO ME PARECE MUY DIFICIL PARA EL NIVEL QUE TENEMOS, CREO QUE EL PROFE SE HA PASADO UN POQUITO, NO LE GUSTO MUCHO, JEJE.
BUENO, PUES ESO, OS COMENTO QUE UN CUADRADO MAGICO ES AQUEL QUE TODAS SUS COLUMNAS, FILAS Y DIAGONALES SUMAN LO MISMO, Y EL PROGRAMA TIENE QUE GENERARLOS.

POR FAVOR, ME URGE MUCHO, UN POQUITO DE AYUDA!!!!
(EN CODIGO FUENTE, LENGUAJE C POR FAVOR)

MUCHIIIIIIIIISISISIMAS GRACIAS!!!!

Amèrica Lizeth
marzo 22, 2004, 12:38
Te refieres a C++, o`´unicamente C

CUCA
marzo 22, 2004, 01:04
SOLO C, SE TE OCURRE ALGO?

carlos_200022
marzo 22, 2004, 05:43
El algoritmo
Es 2 abajo, 3 a la izquerda y uno a la derecha, y si no hay nada Salta arriba. Pucha no me resulta lo intento con para que sume 15

Cuc.... mañana te lo mando lo haré en la noche ok,


Carlos......

ҚMØ
marzo 22, 2004, 11:14
Hey!, yo presente ese programa el semestre pasado pero no me acuerdo donde lo guarde (Creo que lo borré). Si lo encuentro te lo paso pero lo hice en C++, sirve???.

al003894
marzo 23, 2004, 09:32
Creo que no entiendo a que te refieres como cuadrado magico, una matriz de valores ?? y si es asi de que tamaño?

si puedo te ayudo

Grissom.
marzo 23, 2004, 10:47
¿Ah y lo quieres probadito y todo? ... aqui a veces se pasan de conchudos! .. no jodan !! ..

CUCA
marzo 23, 2004, 12:19
GRACIAS A TODOS, SI PODEIS MANDARMELO OS LO AGRADECERIA DE VERDAD, PORQUE ESTE PROFE ME VA A MATAR A DISGUSTOS.

GRACIASSSSSS!!!!!!!!!!!!!!

(SUPONGO Q SI ES EN C++ DA IGUAL, YA LO CAMBIARIA YO)

swoko
marzo 23, 2004, 12:29
Texto Originalmente Escrito por CUCA
GRACIAS A TODOS, SI PODEIS MANDARMELO OS LO AGRADECERIA DE VERDAD, PORQUE ESTE PROFE ME VA A MATAR A DISGUSTOS.

GRACIASSSSSS!!!!!!!!!!!!!!

(SUPONGO Q SI ES EN C++ DA IGUAL, YA LO CAMBIARIA YO)

no sé porqué pero creo que el que mata a disgustos al profesor sos vos...

Grissom.
marzo 23, 2004, 02:39
Ja ja ja el tipico que el profe se faja explicando y nada que entiende.

¡ Hay profe .. repita please ...

[aCmE]
marzo 23, 2004, 08:01
hombre pero que falta de confianza, mañana tempranito se lo mando, en c, c++, java, perl, python, listp, assembler y si alcanzo en cobol y prolog

haberlo dicho antes, pregunte no mas por todas las tareas aqui

cfranco-p
marzo 24, 2004, 12:42
y falto agragar en fortran, visual c#, VB, pascal..... jejeje

CUCA, por favor escribe en minusculas y realmente dudo mucho que te manden el programita hecho.... seria mejor que intentaras hacerlo y si hay problemas pues preguntas...

C.F.

Krieg
marzo 24, 2004, 05:03
Si quiere deje las llaves debajo de la alfombrita de la entrada y nosotros vamos y le barremos y trapiamos el apartamento.

Grissom.
marzo 24, 2004, 11:29
Ah ay lo quieres con interface grafica Windows, WEB o MacOS ... ¿o te hago las tres por si las moscas?

CUCA
marzo 24, 2004, 12:37
Bueno, bueno, tampoco ahi que ponerse asi de ironicos, que yo solo pedia ayuda porque la necesito, que sepas que yo el programa ya lo tengo casi terminado, pero siempre me gusta comparar y asi poder añadir cosas que vosotros hayais puesto y que a mi se me hayan pasado, pero si tanto te molesta pues nada.

(De todas maneras no creo que haya hecho daño a nadie por pedir un programa, no? el que no me quiera ayudar que no lo haga y punto, si te molesta no lo haces y punto, no hace falta ridiculizar a nadie, opino yo, vamos)

cfranco-p
marzo 24, 2004, 12:43
No es que no queramos ayudar, lo unico es que es muy diferente si llegas dicendo "necesito un programa que haga esto y aquello" a si dices "estoy haciendo un programa que hace esto y tengo un problema tal, me pueden ayudar"

Pues cualquiera aqui estaria dispuesto a ayudar pero con problemas puntuales y no toda la tarea.

Bienvenido a Laneros :P

C.F.

gK-JATH
marzo 24, 2004, 01:09
Sí. Por favor no más hostilidad.
CUCA, como te dice cfranco, te invito a postear el código que ya llevas, y con gusto te daremos consejos.
Pero no pidas tareas completas, que no ha sido la política de este foro proveerlas.

CUCA
marzo 24, 2004, 01:29
Gracias por demostrar que todos no sois tan bordes, jeje, os paso lo que tengo, ok?


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream.h>
void impares( int ); //funciones
void pares( int );


void main( )
{
int n; //Altura del lado
cout<<"Introduce el lado del cuadrado magico: "; //Pide q introduzcas la altura del lado
cin>>n; //Lee el dato introducido n
if (n < 1 || n == 2) //No puede existir un cuadrado magico de menos de 1 fila de altura
{ //ni de 2 ya que no cumplen el patron general de creacion de
// cuadrados magicos
printf( "Entrada no valida\n" ); //Por lo tanto compara n y si se da alguno de los casos anteriores
getchar(); // imprime por pantalla "entrada no valida"
}

if ((n%2==1)) //Existen 2 metodos de creacion de cuadrados magicos dependiendo de que
impares(n); //la altura del cuadrado sea par o impar. Aqui se compara el dato n
else //para determinar si es par o impar y asi aplicar el metodo correpondiente.
pares(n);

printf( "\n\nLa suma de cada fila y columna es %8d\n\n", n*(n*n+1) >> 1 );
getchar(); //Por ultimo se imprime por pantalla el resultado de la suma.
}


//Metodo impares

void impares( int N )
{
int i, j, N1, N3, t;

N1 = (N-1)>>1;
N3 = N1-1;

for (i=1; i <= N; i++) // Cada una de las filas
{
for (j=1; j <=N; j++) //Cada una de las columnas
{
t = N1-i+j;

if (t >= N)
{
t -= N;
}
else if (t < 0)
{
t += N;
}
printf( "%5d ", 1 + t + N * ((N3+i+j)%N) );// Calculo matematico
}
printf( "\n" ); //Salto de fila
}
}


// Metodo pares

void pares( int n )
{
int i, j, num = 1;
int n1 = n-1, nn = n*n+1;
int bloque1 = (n-2)>>2, bloque2 = n1 - bloque1;
int dentro1 = n>>2, dentro2 = n1 - dentro1; // >> actua sobre la estructura de bits del dato.

for (j=0; j < n; j++) // Cada una de las filas
{
for (i=0; i < n; i++) //Cada una de las columnas
{
if (i >= dentro1 && i <= dentro2 && j >= dentro1 && j <= dentro2)
{
printf( "%5d ", num );
}
else if ((i > bloque1 && i < bloque2) || (j > bloque1 && j < bloque2))
{
printf( "%5d ", nn - num );
}
else
{
printf( "%5d ", num );
}
num++; // Calculo matematico
}
printf( "\n" ); // Salto de linea
}
}


Funciona correctamente, pero la presentacion deberia de ser mas vistosa, y los metodos mas faciles, se os ocurre algo?

Grissom.
marzo 24, 2004, 02:26
¿Ah lo quieres en CD o DVD? ¿con instalador multiplataforma o uno para cada sistema operativo?

swoko
marzo 24, 2004, 02:33
bueno ya, acaba de mostrar el código así que ya deberías dejarlo en paz no? además que ya esta viejo

Grissom.
marzo 24, 2004, 03:00
¿Multilenguaje?

cfranco-p
marzo 25, 2004, 01:09
Que quieres decir con mas vistosa?????? ya lo unico que le falta es la carpinteria, si quieres ponerlo más bonito pues como sugerencia almacena los datos del cuadrado en alguna variable (en lugar de imprimirlos de una) y luego lo imprimes de una manera mas bonita, no se dentro de algun cuadrado con colores o formando el cuadro con caracteres anscii o algo asi... no se carpinteria que llaman, aunque en C no es mucho lo que se pueda hacer.

C.F.

CUCA
marzo 25, 2004, 06:54
Tras volverlo a ver, al profe se le ha ocurrido que lo haga con matrices y lo imprima con gotoxy, alguna idea?

kemark
marzo 25, 2004, 10:19
idea: ANSI C

Tilo Wolff
mayo 14, 2004, 12:40
aqui esta el programa con matrices y gotoxy, pero no esta adaptado al tuyo, si quieres ver como funciona quitale lo que este comentado


#include<iostream.h>
#include<iomanip.h>
#include<ctype.h>
#include<conio.h>
#include<stdlib.h>
char r1='S';
int a[3][3],b[3][3],x,y,s[3],s1[3],s2,s3,p,d,t;
main()
{
while(r1=='S'||r1=='s')
{
clrscr();
b[0][0]=4; a[0][0]=0;
b[0][1]=9; a[0][1]=0;
b[0][2]=2; a[0][2]=0;
b[1][0]=3; a[1][0]=0;
b[1][1]=5; a[1][1]=0;
b[1][2]=7; a[1][2]=0;
b[2][0]=8; a[2][0]=0;
b[2][1]=1; a[2][1]=0;
b[2][2]=6; a[2][2]=0;
for(x=0;x<3;x++)
{
for(y=0;y<3;y++)
{
// cout<<x<<","<<y<<" ";
while(a[x][y]!=b[x][y])
{
a[x][y]=random(10);
// a[x][y]++;
if(a[x][y]==/*10*/0)
{
a[x][y]++;
}
/* if(a[x][y]==10)
{
a[x][y]--;
}
cout<<a[x][y];
getch();*/
}
cout<<endl;
}
}
for(x=0;x<3;x++)
{
s[x]=0;
for(y=0;y<3;y++)
{
s[x]=s[x]+a[y][x];
}
for(y=0;y<3;y++)
{
gotoxy(17+(3*x),5+y);cout<<setw(2)<<a[x][y];
gotoxy(27,5+x);cout<<setw(2)<<s[x];
}
}
for(x=0;x<3;x++)
{
s1[x]=0;
for(y=0;y<3;y++)
{
s1[x]=s1[x]+a[x][y];
}
for(y=0;y<3;y++)
{
gotoxy(17+(3*x),9);cout<<setw(2)<<s1[x];
}
}
s2=0;
s3=0;
for(x=0;x<3;x++)
{
s2=s2+a[x][x];
}
d=2;
p=0;
for(x=0;x<3;x++)
{
s3=s3+a[p++][d--];
}
gotoxy(27,9);cout<<setw(2)<<s2;
gotoxy(14,9);cout<<setw(2)<<s3;
gotoxy(2,12);cout<<"Otro cuadrado (S/N):";
gotoxy(23,12);cin>>r1;
}
return 0;
}