|
621
|
Programación / Programación C/C++ / Ayuda con subcadena de tipo char
|
en: 5 Julio 2018, 21:53 pm
|
Queria saber si alguien me puede decir el camino mas corto para extraer cadenas empleando un arreglo de caracteres sin utilizar la clases string, esto es lo que quiero hacer pero con el tipo de dato char #include <iostream> #include <string.h> using namespace std; int main() { int opcion; string fecha; cout << "INGRESE UNA FECHA EN EL FORMATO DDMMAAAA: "; getline(cin, fecha); cout << "ELEGIR FORMATO" << endl; cout << "1. MM/DD/AAAA" << endl; cout << "2. DD/MM/AAAA" << endl; cout << "3. AAAA/MM/DD" << endl; cin >> opcion; switch(opcion){ case 1: cout << fecha.substr(2,2) <<"/" << fecha.substr(0,2) << "/" << fecha.substr(4,4) << endl ;break; case 2: cout << fecha.substr(0,2) <<"/" << fecha.substr(2,2) << "/" << fecha.substr(4,4) << endl ;break; case 3: cout << fecha.substr(4,4) <<"/" << fecha.substr(2,2) << "/" << fecha.substr(0,2) << endl ;break; default: cout << "OPCION INCORRECTA" << endl; } system("pause"); return 0; }
Esto es lo que logre, la verdad me dan mas problemas los de tipo char, en cambio con la clase string nunca tuve problemas #include <iostream> #include <string.h> using namespace std; const int MAX=8; typedef char tcad[MAX]; int main() { tcad fecha; char dia[2], mes[2], año[4]; int opcion; cout << "Ingrese un afecha en formato DD/MM/AAAA: "; cin.getline(fecha,9,'\n'); dia[0]=fecha[0]; dia[1]=fecha[1]; mes[0]=fecha[2]; mes[1]=fecha[3]; año[0]=fecha[4]; año[1]=fecha[5]; año[2]=fecha[6]; año[3]=fecha[7]; cout << "Seleccione formato" << endl; cout << "1. MM/DD/AAAA" << endl; cout << "2. DD/MM/AAAA" << endl; cout << "3. AAAA/MM/DD" << endl; cin >> opcion; switch(opcion){ case 1: cout << mes << "/" << dia << "/" << año << endl; break; case 2: cout << dia << "/" << mes << "/" << año << endl; break; case 3: cout << año << "/" << mes << "/" << dia << endl; break; default: cout << "Opcion incorrecta" << endl; } system("pause"); return 0; }
Desde ya muchas gracias, saludos
|
|
|
622
|
Programación / Programación C/C++ / Re: Ayuda con algoritmo recursivo y fflush(stdin)
|
en: 4 Julio 2018, 23:44 pm
|
En lo referente a fflush(stdin): el estándar dice que fflush solo es para flujos de salida así que depende del compilador que funcione o no. Cómo norma general no deberías usarlo.
En cuanto a la recursividad: sí, está bien hecha. Tiene una condición de parada, una llamada que actualiza un estado para que active la condición de parada en el momento oportuno y un trabajo a cumplir.
Lo que hace es escribir en pantalla: Entrando en el sueño del suelo... repitiendo tantas veces del sueño como se hayan indicado en el argumento de llamada.
Por cierto, no destroces el lenguaje con x y e. El español es un de los lenguajes más ricos que existen.
Entonces es mejor usar cin.ignore(); para evitar el error con ingreso de cadenas? te pongo este ejemplo, porque luego de ingresar la variable entera dni, me guarda el ENTER en el buffer main() { int dni; tcad nombre; cout << "Ingrese DNI: "; cin >> dni; //fflush(stdin); Aca viene el error cout << "Ingrese nombre: "; gets(nombre);
|
|
|
623
|
Programación / Programación C/C++ / Re: obtener el número máximo y el número mínimo de matriz aleatoria c++
|
en: 4 Julio 2018, 23:31 pm
|
recorriendo la matriz ajajaja y utilizando una bandera logica iniciada en falso y dos variables maximo y minimo, cuando recorras la matriz haz esto: si (bandera igual a falso entonces a minimo y maximo le agregas el valor de el elemento en la matriz y a bandera le cambiamos el valor a verdadero;) sino ( si el elemento en matriz es mayor a maximo le agregas ese elemento de la matriz a maximo; si el elemento en matriz es menor a minimo le agregas ese elemento de la matriz a minimo;) y ahi tienes ya el valor minimo y maximo de la matriz void maxmin(matrix m, int &max, int &min) { bool band=false; for(int i=0;i<FILAS;i++){ for(int j=0;j<COLUMNAS;j++){ if(band==false){ max=m[i][j]; min=m[i][j]; band=true; } else{ if(m[i][j]>max){ max=m[i][j]; } if(m[i][j]<min){ min=m[i][j]; } } } } }
|
|
|
624
|
Programación / Programación C/C++ / Ayuda con algoritmo recursivo y fflush(stdin)
|
en: 4 Julio 2018, 22:29 pm
|
Hola a todxs queria saber si este algoritme esta recursivamente bien , y otra consulta es para que sirve , es viable el uso de fflush(stdin) en limpieza del buffer, estoy algo indecise, gracias a todxs void como_la_realidad(int vida) { if(vida<=1) cout << "Entrando en el sueño"; else como_la_realidad(vida-1); cout << " del sueño"; }
|
|
|
625
|
Programación / Programación C/C++ / Re: Pequeña duda Fibonacci TDA Pila
|
en: 22 Junio 2018, 21:51 pm
|
Muchas gracias @SrMcLister, entonces mi algoritmo quedaria asi: //Aunque no me convence del todo ya que al ingresar 1 o 2 me devuelve el valor de la pila.cima y no es lo que busco pero funciona int fibonacci(int n) { tpila pila; init_stack(pila); while(pila.cima<n-1){ push_stack(pila, pila.datos[pila.cima]+pila.datos[pila.cima-1]); } return top_stack(pila); }
En este ejemplo hago una serie 3,5,7,15,27,49,91... y aqui si me convence de lo que estoy devolviendo como valor de la pila.datos[pila.cima] int serie(int n) { tpila pila; init_stack(pila); if(pila.cima>n-1){ while(pila.cima>n-1){ pop_stack(pila); } } else{ while(pila.cima<n-1){ push_stack(pila, pila.datos[pila.cima]+pila.datos[pila.cima-1]+pila.datos[pila.cima-2]); } } return top_stack(pila); }
Y no soy Beginner sino que soy malaso en matematicas y hablo de muy malo
|
|
|
627
|
Programación / Programación C/C++ / Pequeña duda Fibonacci TDA Pila
|
en: 21 Junio 2018, 23:13 pm
|
Hola, estoy en una duda con acerca de la serie de Fibonacci, me piden ingresar un numero y que me devuelva el termino de la serie 1,1,2,3,5,8.. utilizando pilas, no se me da la idea de como lo puedo hacer respetando operaciones del TDA Pila #include <iostream> #include <math.h> using namespace std; const int TAMPILA=32; typedef int contenedor[TAMPILA]; typedef struct{ contenedor datos; int cima; }tpila; void fibonacci(int n); void init_stack(tpila &pila); void push_stack(tpila &pila, int nuevo); bool full_stack(tpila pila); bool empty_stack(tpila pila); int pop_stack(tpila &pila); int top_stack(tpila pila); void ingreso(int n); int main() { int numero; cout << "Ingrese un numero: "; cin >> numero; fibonacci(numero); system("pause"); return 0; } void fibonacci(int n) { tpila pila; init_stack(pila); while(n>0){ //Aca pondria mi algoritmo si tuviera uno } cout << "\nFibonacci: " << << endl; } void init_stack(tpila &pila) { pila.cima=-1; } void push_stack(tpila &pila, int nuevo) { if(full_stack(pila)==true){ cout << "PILA LLENA" << endl; } else{ pila.cima++; pila.datos[pila.cima]=nuevo; } } bool full_stack(tpila pila) { return pila.cima==TAMPILA-1; } bool empty_stack(tpila pila) { return pila.cima==-1; } int pop_stack(tpila &pila) { int aux; if(empty_stack(pila)==true){ aux=-1; } else{ aux=pila.datos[pila.cima]; pila.cima--; } return aux; } int top_stack(tpila pila) { int aux; if(empty_stack(pila)==true){ aux=-1; } else{ aux=pila.datos[pila.cima]; } return aux; }
|
|
|
629
|
Programación / Programación C/C++ / Re: Ayuda con mi codigo quiero verificar si un numero es palindrome porfa y gracias
|
en: 15 Junio 2018, 23:38 pm
|
Puedes invertir el numero utilizando recursividad y comprobando si el numero que ingresaste es igual al valor de retorno de la funcion recursiva , en ese caso escribir CAPICUA, caso contrario NO CAPICUA, esto para los numeros numeros enteros no hace falta que sea una cadena. funcion invertir(n: entero, r: entero) : entero si(n==0) invertir <-r; sino r*=10; r+=n%10; invertir<- invertir(n/10, r); inicio numero, resultado=0 : entero escribir "Ingrese numero:" leer(numero) si(numero==invertir(numero,resultado) escribir ("CAPICUA") sino escribir ("NO CAPICUA") finsi fin Bueno si quieres con cadenas aca te dejo tu codigo modificado #include <iostream> #include <string.h> using namespace std; void LeerCadena(string &c) { cout << "Ingrese numero: "; cin >> c; // para no ingresar se usa la cadena ejemplo //strcpy(cad,"Sigue las ultimas noticias de #Cuenca, #Ecuador y el Mundo en @eltiempocuenca #marcandodiferencia @IGecuador\0"); } void Palindrome (string c) { string aux; int j=c.length()-1; aux=c; for(int i=0;i<c.length();i++){ if(c[i]!=aux[j]){ break; } j--; } if (j==-1) { printf("\n El numero es palindrome"); } else { printf ("\n El numero no es palindrome"); } } int main () { string c; LeerCadena (c); Palindrome(c); }
|
|
|
630
|
Programación / Programación C/C++ / Re: Ayuda, Arreglo de estructuras
|
en: 14 Junio 2018, 04:41 am
|
No se lo que hay que hacer xd #include <stdio.h> typedef struct beta{ float n, m, d;}dat; typedef dat alfa[3]; double func(dat* x){return x[0].m;} double ff(alfa x){return x[2].m;} int main() { dat gama[3]={{3,5,4.5},{6,7.0},{23,6.7}}; printf("%.2lf\n",func(gama));//imprime 7.0 printf("%.2lf\n",ff(gama));//imrpime 6.7 return 0; }
|
|
|
|
|
|
|