elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


  Mostrar Mensajes
Páginas: 1 2 3 [4] 5 6 7 8 9 10 11 12 13 14 15
31  Programación / Programación C/C++ / Re: [RETO] + Funcion Extraer Numeros de Cadenas! [Cpp/C] en: 5 Enero 2012, 13:01 pm
Aquí os dejo mi versión, tiene complejidad O(str.size()):

EDITO: Pongo el algoritmo como forma de función, thanks EI

Código
  1. #include <iostream>
  2. #include <cctype>
  3. using namespace std;
  4.  
  5. string extraer(const string &str){
  6.    string aux;
  7.    for(int a=0; a<(int)str.size(); a++) if(isdigit(str[a])) aux.push_back(str[a]);
  8.  
  9.    return aux;
  10. }
  11.  
  12. int main(){
  13.    string str;
  14.  
  15.    str = "ewiuc3dskhd8nkd62ndsnk9";
  16.    //cin >> str;
  17.  
  18.    str = extraer(str);
  19.    cout << str << endl;
  20.  
  21.    return 0;
  22. }
32  Programación / Programación C/C++ / Re: [Duda] Inserción en una tabla ordenada en: 3 Enero 2012, 23:33 pm
Claro que te lo explico, no hay problema:
en tu función lo que haces es ir añadiendo elementos del vector v al vector NUEVO vi, pero sin embargo, al terminar la función no retornas nada, por lo que el vector v va a seguir igual porque no lo has modificado, y el modificado vi no lo usas para nada, por lo que al terminar la función 'desaparece'.

tu función "arreglada":
Código
  1. #include <algorithm> //mete esto en los includes
  2. void insereix(vector <double>& v){
  3.    int n = v.size();
  4.    int k = v[n-1];
  5.    vector <double> vi(n);
  6.    bool inserit = false;
  7.    int j;
  8.  
  9.    for(int i = 0; i < n && !inserit; ++i){ //he cambiado and not por && !
  10.        if(v[i] <= k){
  11.            vi[i] = v[i];
  12.        } else {
  13.            vi[i] = k;
  14.            inserit = true;
  15.            j = i + 1;
  16.        }
  17.    }
  18.  
  19.    for(int i = j; i < n;++i){
  20.        vi[i] = v[i-1]; //tambien te he metido el -1 en el v
  21.    }
  22.  
  23.    swap(vi, v); //intercambia vi y v
  24. }

saludos.
33  Programación / Programación C/C++ / Re: Entrada y Salida de datos C++ en: 3 Enero 2012, 23:22 pm
http://www.cplusplus.com/reference/iostream/fstream/ C++
o
http://www.cplusplus.com/reference/clibrary/cstdio/FILE/C/C++
34  Programación / Programación C/C++ / Re: [Duda] Inserción en una tabla ordenada en: 3 Enero 2012, 15:46 pm
Hombre, puestos a usar métodos predefinidos puedes usar la función sort (sí, es standar):
Código
  1. #include <algorithm>
  2. #include <vector>
  3. #include <iostream>
  4. using namespace std;
  5.  
  6. int main(){
  7.    vector<double> v(7);
  8.    v[0] = 2; v[1] = 4; v[2] = 7; v[3] = 7; v[4] = 8; v[5] = 9; v[6] = 5;
  9.    // v == {2,4,7,7,8,9,5}
  10.    for(int y=0; y<(int)v.size(); y++) cout << v[y];
  11.    cout << endl;
  12.    sort(v.begin(), v.end());
  13.    // v == {2,4,5,7,7,8,9}
  14.    for(int x=0; x<(int)v.size(); x++) cout << v[x];
  15.    cout << endl;
  16.  
  17.    return 0;
  18. }

Si no quieres usar la funcion sort, hazlo con las funciones que te da la clase vector, esta es tu función pero echa por mi:
Código
  1. void insereix(vector <double>& v){
  2.    int x;
  3.    for(x=0; x<(int)v.size(); x++) if(v[x] >= v[v.size()-1]) break; //para cuando encuentra un valor mas grande que v[v.size()-1]
  4.    v.insert(v.begin()+x, v[v.size()-1]); //lo inserta en x
  5.    v.erase(v.end()-1); //borra el ultimo valor
  6. }

PD: En tu función v nunca cambia porque usas un vector auxiliar y la funcion es de tipo void, añade swap(v, vi); al final de tu función y #include <algorithm> al principio del archivo y verás que de todas formas no haces bien el ordenamiento.
35  Programación / Programación C/C++ / Re: Ayuda con un programa en C en: 31 Diciembre 2011, 13:58 pm
(No estaría mal que subieras el código antes de pedir tareas, gracias)
36  Programación / Programación C/C++ / Re: Sobreescribir línea ya escrita lenguaje C en: 30 Diciembre 2011, 14:01 pm
CONSEGUIDO! :D

La verdad Sagrini que a mi también me picaba la curiosidad sobre este tema, y me he puesto manos a la obra para investigar un poco sobre como funciona APT y todo eso. El caso que al final he llegado a un montón de información muy muy útil, dejo los links, porque explicar tanta cosa es muy dificil:
http://www.euskalnet.net/iosus/linux/Bash-Prompt-HOWTO-5.html#ss5.2 (Pto. 5.2)
http://es.wikipedia.org/wiki/C%C3%B3digo_escape_ANSI
http://www.chuidiang.com/clinux/ansi/ansi.php

Si ya has visto los links, sabrás que esto se consigue con códigos de escape ANSI, os dejo un ejemplo:
Código
  1. #include <cstdio>
  2.  
  3. int main(){
  4.    cout << "Hola" << endl;
  5.    for(int x=0; x<10; x++){
  6.        printf("%c[1A \rProgreso: %d\n", 033, x);
  7.        #ifdef _WIN32
  8.        #include <Windows.h>
  9.            Sleep(250);
  10.        #else
  11.            sleep(1);
  12.        #endif
  13.    }
  14.    return 0;
  15. }

Espero que os ayude tanto como a mí.
Un saludo!
37  Programación / Programación C/C++ / Re: Sobreescribir línea ya escrita lenguaje C en: 29 Diciembre 2011, 20:47 pm
Lo más sencillo es que hagas una limpieza de terminal (como si fueran los fotogramas de un dibujo animado). Cada vez que vayas a mostrar algo haz justo antes esto:
Código
  1. #include <cstdlib>
  2.  
  3. #ifdef _WIN32
  4.   system("cls"); //para windows
  5. #else
  6.   system("clear"); //para sistemas Linux
  7. #endif
  8.  

EDITO: he colocado bien el include, gracias a rir3760

Un saludo!
38  Programación / Programación C/C++ / Re: Inicializar array bidimensional con palabras en: 21 Diciembre 2011, 15:52 pm
llevas razón, el código que te he puesto es C++, culpa mía :P
No sé si te funcionará tu codigo, no conozco bien la funcion scanf, lo siento.
39  Programación / Programación C/C++ / Re: Inicializar array con palabras en: 21 Diciembre 2011, 15:40 pm
Código
  1. string[6] str;
  2. for(int x=0; x<6; x++) cin >> str[x];
  3.  
40  Programación / Programación C/C++ / Re: codigo conversion decimal a binario y complemento a dos en: 16 Diciembre 2011, 18:02 pm
Complemento a dos de un numero:
Wikipedia: Otra forma es negar todos los dígitos (se haya el complemento a 1) y después sumar un 1 al resultado, viene a ser lo mismo que lo anteriormente explicado.

Código
  1. #include <iostream>
  2. int main(){
  3.    int num;
  4.    cin >> num;
  5.  
  6.    cout << ((~num)+1) << endl;
  7. }
  8.  
Páginas: 1 2 3 [4] 5 6 7 8 9 10 11 12 13 14 15
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines