ayuda para pasar programa de Grafos c++ a c

Estado
No está abierto para más respuestas.

carlos_200022

Lanero Reconocido
Se unió
5 Dic 2003
Mensajes
163
Estoy tratando de pasar un programa que consegui de nodos
hecho en C++ a C y
quisiera saber con que se reemplaza el iostram de c++ a c

este es el programa

/*nodos*/


#include <stdio.h>
#include <conio.h>
#include <iostream.h> /*esto a que equivale en c*/

void funcion2(int **,int ,int ,int );
void funcion1(int **,int ,int ,int );

int origen;

void funcion1(int **M,int n,int or,int dest)
{
int cont=0;
for(int i=0;i<n;i++)
{
if(M[or] == 1)
{
cout << i;

for (int j=0;j<n;j++)
if (M[j] == 1)
cont++;
if (cont == 1)
M[or] = 0;

if (i!=dest)
funcion2(M,n,i,dest);
else
{
cout << "\n" << origen-1;
funcion1(M,n,origen-1,dest);
}
}
}
}

void funcion2(int **M,int n,int or,int dest)
{
int cont=0;
for(int i=0;i<n;i++)
{
if(M[or] == 1)
{
cout << i;

for (int j=0;j<n;j++)
if (M[j] == 1)
cont++;

if (cont == 1)
M[or] = 0;

if (i!=dest)
funcion1(M,n,i,dest);
else
{
cout << "\n" << origen-1;
funcion2(M,n,origen-1,dest);
}
}
}
}

void main()
{
int **M, n, or, dest, con, aux;
clrscr();
cout << "Ingrese cantidad de nodos : ";
cin >> n;

M = new int*[n];
for (int i=0;i<n;i++)
M = new int [n];

for (i=0;i<n;i++)
for (int j=0;j<n;j++)
{
if (i==j)
{
printf(" NO EXISTE conexion entre (%d,%d)\n",i+1,j+1);
M[j] = 0;
}
else
{
printf(" Hay conexion (%d,%d) 1/si 0/no = ",i+1,j+1);
cin >> con;
M[j] = con;
}
}

for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
cout << " " << M[j];
cout << "\n";
}

printf("Ingrese nodo origen (del 1 al %d) : ",n);
cin >> origen;
printf("Ingrese nodo destino (del 1 al %d) : ",n);
cin >> dest;

or = origen-1;
dest = dest-1;
/*

// en caso que el origen sea distinto a la primera posision en la matriz
// de adyacencia, reordena la matriz para que as¡ sea...
if (or != 0)
{
for (i=0;i<n;i++) //cambia filas
{
aux = M[0];
M[0] = M[or];
M[or] = aux;
}

cout << "\n";
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
cout << " " << M[j];
cout << "\n";
}
getche();

for (i=0;i<n;i++) //cambia columnas
{
aux = M[0];
M[0] = M[or];
M[or] = aux;
}


cout << "\n";
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
cout << " " << M[j];
cout << "\n";
}
getche();


}

// en caso que el destino sea distinto a la ultima posision en la matriz
// de adyacencia, reordena la matriz para que as¡ sea...
if (dest != (n-1))
{
for (i=0;i<n;i++) //cambia filas
{
aux = M[0];
M[0] = M[dest];
M[dest] = aux;
}

cout << "\n";
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
cout << " " << M[j];
cout << "\n";
}
getche();


for (i=0;i<n;i++) //cambia columnas
{
aux = M[0];
M[dest] = M[dest];
M[dest] = aux;
}

cout << "\n";
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
cout << " " << M[j];
cout << "\n";
}
getche();
}

for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
cout << " " << M[j];
cout << "\n";
}
getche();
*/
//restringe la busqueda para que no entre en loop

for (i=0;i<n;i++)
M[or] = 0;

for (j=0;j<n;j++)
M[dest][j] = 0;

cout << "\n";
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
cout << " " << M[j];
cout << "\n";
}

getche();
cout << or;
funcion1(M,n,or,dest);
getche();
}
 

VictorV

LANero Fundador
Miembro del equipo
Se unió
14 Abr 2001
Mensajes
1,033
Es ese programa se usa iostream.h para usar cin y cout puedes cambiiar esas 2 sentencias por scanf y printf respectivamente
 

ZeN<CyBeRKiLLeR>

LANero oficial
Se unió
15 Abr 2001
Mensajes
2,491
y las funciones que te dice Victorv estan en stdio.h sino estoy mal, entonces no tenes que hacer otra cosa sino que reemplazar esas llamadas a cout y cin por printf y scanf respectivamente y ya tal cual lo dice don VictorV
 

navarro

Lanero Reconocido
Se unió
31 Ene 2004
Mensajes
183
Eco man, todo eso ta bien y solo tenes que aprender la sintaxis de printf y scanf las que son facilitas.
 

Grissom.

Lanero Reconocido
Se unió
15 Dic 2003
Mensajes
3,961
Ese <iostream.h> equivale a <stdio.h> y ya la tienes incluida.
 

emcaeme

Lanero Reconocido
Se unió
5 Mar 2003
Mensajes
662
Texto Originalmente Escrito por El_Rulas
Ese <iostream.h> equivale a <stdio.h> y ya la tienes incluida.
ah si, esas dos librerias son equivalentes??

tengo que reevaluar lo que aprendi en primer semestre
 

VictorV

LANero Fundador
Miembro del equipo
Se unió
14 Abr 2001
Mensajes
1,033
no es que sean equivalentes sino que son las basicas una para c y la otra para c++
 

carlos_200022

Lanero Reconocido
Se unió
5 Dic 2003
Mensajes
163
Ya gracias ahora estoy entendiendo más, pero tengo otra duda


For(i=0;i<max;i++)
{
cout<<"real para posicion"<<i<<":";
cin >>vector;
}

cout <<end1<<end1;
For(i=0;i<max;i++)
{
cout<<setw(4)<<vector;
}


Aqui hay un extracto de un programa
Aqui quisiera saber a que equivale

end1 y setw (4) en "C"

gracias
 

Grissom.

Lanero Reconocido
Se unió
15 Dic 2003
Mensajes
3,961
Texto Originalmente Escrito por acme
entonces NO son equvalentes
Tienen el mismo proposito hombre, ambas gestionan entrada/salida basica una pasa C y otra para C++
 
Estado
No está abierto para más respuestas.
Arriba