Dev - C++ - Dev - C++ - cambiar cin y cout a printf y scanf en c++.

 
Vista:
sin imagen de perfil

Dev - C++ - cambiar cin y cout a printf y scanf en c++.

Publicado por Sebastian (12 intervenciones) el 22/09/2021 01:53:37
Hola, tengo este codigo y funciona perfecto con cout y cin pero mi profesor dijo que tenia que ser cambiado por printf y scanf, por favor su colaboración con esto, ya que soy nuevo en el tema.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
#include<iostream>
#include<conio.h>
#include<stdlib.h>
using namespace std;
 
struct Nodo{
	int dato;
	Nodo *der;
	Nodo *izq;
};
 
//Prototipos
void menu();
Nodo *crearNodo(int);
void insertarNodo(Nodo *&,int);
bool busqueda(Nodo *,int);
void preOrden(Nodo *);
void inOrden(Nodo *);
void posOrden(Nodo *);
 
Nodo *arbol = NULL;
 
int main(){
	menu();
 
	getch();
	return 0;
}
 
//Funcion de menu
void menu(){
	int dato, opcion;
 
	do{
		cout<<"\t.:MENU:."<<endl;
		cout<<"1. Insertar un nuevo nodo"<<endl;
		cout<<"2. Buscar un elemento en el arbol"<<endl;
		cout<<"3. PreOrden"<<endl;
		cout<<"4. InOrden"<<endl;
		cout<<"5. PosOrden"<<endl;
		cout<<"6. Salir"<<endl;
		cout<<"Opcion: ";
		cin>>opcion;
 
		switch(opcion){
			case 1: cout<<"\nDigite un numero: ";
					cin>>dato;
					insertarNodo(arbol,dato);  //Insertamos un nuevo nodo
					cout<<"\n";
					system("pause");
					break;
			case 2: cout<<"\nDigite el elemento a buscar:\n\n";
					cin>>dato;
					if(busqueda(arbol,dato) == true){
						cout<<"\nElemento "<<dato<<" a sido encontado en el arbol\n";
					}
					else{
						cout<<"\nElemento no a sido encontado en el arbol\n";
					}
					cout<<"\n";
					system("pause");
					break;
			case 3: cout<<"\nRecorrido en PreOrden: ";
					preOrden(arbol);
					cout<<"\n\n";
					system("pause");
					break;
			case 4: cout<<"\nRecorrido en InOrden: ";
					inOrden(arbol);
					cout<<"\n\n";
					system("pause");
					break;
			case 5: cout<<"\nRecorrido en PosOrden: ";
					posOrden(arbol);
					cout<<"\n\n";
					system("pause");
					break;
 
		}
		system("cls");
	}while(opcion != 6);
}
 
//Fuincion para crear un nuevo nodo
Nodo *crearNodo(int n){
	Nodo *nuevo_nodo = new Nodo();
 
	nuevo_nodo->dato = n;
	nuevo_nodo->der = NULL;
	nuevo_nodo->izq = NULL;
 
	return nuevo_nodo;
}
 
//Fuincion para insertar elementos en el arbol
void insertarNodo(Nodo *&arbol,int n){
	if(arbol == NULL){  //Si el arbol esta vacio
		Nodo *nuevo_nodo =crearNodo(n);
		arbol = nuevo_nodo;
	}
	else{  //Si el arbol tiene un nodo o mas de un nodo
		int valorRaiz = arbol->dato;  //Obtenemos el valor de la raiz
		if(n < valorRaiz){  //Si el elemento es menor a la raiz, insertamos en izq
			insertarNodo(arbol->izq,n);
		}
		else{  //Si el elemento es mayor a la raiz, insertamos en izq
			insertarNodo(arbol->der,n);
		}
	}
}
//Funcion ara buscar un elemento en el arbol
bool busqueda(Nodo *arbol,int n){
	if(arbol == NULL){  //si el arbol esta vacio
		return false;
	}
	else if(arbol->dato == n){  //Si el nodo es igual al elemento
		return true;
	}
	else if(n < arbol->dato){
		return busqueda(arbol->izq,n);
	}
	else{
		return busqueda(arbol->der,n);
	}
}
//Funcion para recorrido preOrden
void preOrden(Nodo *arbol){
	if(arbol == NULL){  //Si el arbol esta vacion
		return;
	}
	else{
		cout<<arbol->dato<<" - ";
		preOrden(arbol->izq);
		preOrden(arbol->der);
	}
	}
//Funcion para recorrido InOrden
void inOrden(Nodo *arbol){
	if(arbol == NULL){  //Si el arbol esta vacion
		return;
	}
	else{
		inOrden(arbol->izq);
		cout<<arbol->dato<<" - ";
		inOrden(arbol->der);
	}
	}
//Funcion para recorrido posOrden
void posOrden(Nodo *arbol){
	if(arbol == NULL){  //Si el arbol esta vacion
		return;
	}
	else{
		posOrden(arbol->izq);
		posOrden(arbol->der);
		cout<<arbol->dato<<" - ";
		}
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Dev - C++ - cambiar cin y cout a printf y scanf en c++.

Publicado por anonymous (146 intervenciones) el 22/09/2021 03:26:06
Hola aquí te dejo esta pequeña información para que aprendas a usar printf y scanf.

Primero que todo vas a cambiar <iostream> por <cstdio>.

Prototipos:

int printf(const char* format, ...);
int scanf(const char* format, ...);


La cadena de formato `format' será todos los caracteres que imprimirá `printf' excepto las secuencias de formato. En el caso de `scanf' se ignoran todos los caracteres de la cadena de formato y solo se toman en cuenta las secuencias de formato.

Los ... Son el método usado en C/C++ para indicarle al compilador que se espera una cantidad variable de argumentos, en estas funciones son usados para guardar los datos a imprimir o leer.

Ambas funciones regresan la cantidad de caracteres impresos o leídos según corresponda.

Secuencias de formato:

%d y %lld correponde a int y long long int respectivamente.

%u y %llu corresponde a unsigned int y a unsigned long long int.

%f, %lf y %Lf corresponde a float, double y long double respectivamente

%c se usa para caracteres individuales.

%s se usa para cadenas de caracteres.

%p se usa para punteros.

Uso:

(Imprime dos enteros y un flotante)
1
printf("%d / %d = %f", 1, 3, (1.0F/3.0F));

(Lee un entero sin signo (debe ser una variable no puede ser una constante literal))
1
2
unsigned int var;
scanf("%u", &var);

Ejemplo:

1
2
3
4
cout << "esto es un entero ->" << 3 << endl;
 
//Equivalente con printf
printf("esto es un entero ->%d\n", 3);

1
2
3
4
5
6
float dato;
 
cin >> dato;
 
//Equivalente con scanf
scanf("%f", &dato);

Bueno, espero te ayude, cualquier cosa avísame por este medio, suerte, saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Dev - C++ - cambiar cin y cout a printf y scanf en c++.

Publicado por Sebastian (12 intervenciones) el 22/09/2021 05:45:42
Hola,

Amigo muchas gracias por la información me sirvió bastante para hacer las correcciones, aunque aun tengo una duda.

En el caso 2
1
2
3
4
case 2: cout<<"\nDigite el elemento a buscar:\n\n";
					cin>>dato;
					if(busqueda(arbol,dato) == true){
						cout<<"\nElemento "<<dato<<" a sido encontado en el arbol\n";

No se como ingresar la variable dato
1
cout<<"\nElemento "<<dato<<" a sido encontado en el arbol\n"

En el momento lo tengo de la siguiente forma

1
printf("\n El elemento "  " a sido encontado en el arbol\n");

Como hago para ingresar la variable dato para que no me genere el error al compilar?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Dev - C++ - cambiar cin y cout a printf y scanf en c++.

Publicado por anonymous (146 intervenciones) el 22/09/2021 22:36:26
Hola, mira lo que tienes que hacer es, escribir la cadena de formato con la secuencia deseada en el lugar correspondiente, y luego escribir la variable en el orden apropiado, siempre es primero la cadena de formato y luego las variables o constantes literales.

Ejemplo1

1
2
3
4
5
char var = ' ';
cout << "texto de prueba" << var << "->" << 0 << endl;
 
//Equivalente en printf
printf ("texto de prueba%c->%d\n", var, 0);

Ejemplo2

1
2
3
4
5
const char* var = "cadena";
cout << var << " y entero " << 353 << endl;
 
//Equivalente en printf
printf ("%s y entero %d\n", var, 353);

Bueno y así lo demás, espero te ayude, cualquier duda me avisas, saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar