Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - ecfisa

#51
Cita de: jorgesalazar90 en 18 Junio 2013, 23:39 PM
Lo que pasa es que no se utilizar métodos para poder realizar este código. Agradeceré su ayuda...
Hola jorge.

Como puntapié inicial, te pongo el pseudocódigo del primer ejercicio, el segundo se resuelve de forma similar.


subproceso funcion SumOfSquares ( numero )
suma <- 0
r <- 0   
  mientras (numero ≠ 0)  {
    r <- numero % 10
    suma <- suma + r * r
    numero = numero / 10
  }
  devolver suma


Te aseguro que dartelos echos, mas temprano que tarde, va a redundar en tu perjuicio.  ;)

Saludos  :)
#52
Hola BeFree .

El problema no está en tu código, sino en el método de ordenamiento elegido (Bubble Sort), su eficiencia es de órden exponencial.

Al elevar el número de elementos a cien mil tenes que armarte de paciencia, salir de paseo...y seguramente cuando vuelvas estará el resultado. Cambia por el método: Shell Sort o por Quick Sort.

Saludos. :)
#53
Hola Omar.

El problema lógico que veo en ese código es que el resultado va a depender del órden de ingreso, es decir que si ingresa "coche" en tercer lugar, nunca lo va a traducir.

Otro problema, mas grave, es que si por ejemplo ingresas dos palabras, los errores aparecerían luego del segundo if. Ya que a partir de ahí, estarías intentando acceder a posiciónes inexistentes del vector. (de allí la violación de acceso)

Una forma un poco distinta de implementarlo podría ser:
Código (cpp) [Seleccionar]

#include <iostream>
#include <string>
#include <sstream>
#include <vector>

using namespace std;

struct {
 char *spa;
 char *eng;
} traduc[] = {"coche","car","hola","hello","perro","dog",
             "casa","house","ciudad","city","cielo",
             "sky","vaca","cow","ojos","eyes"};

int main()
{
 string str;
 vector <string> texto;
 unsigned i,j;

 cout << "Que quiere traducir?: ";
 getline(cin, str);
 stringstream is(str);
 while(is >> str) texto.push_back(str);

 cout <<"Las palabras que pusiste son: " << endl;
 for (i = 0; i < texto.size(); i++)
   cout << i + 1 << ". " << texto[i] << endl;
 cout << endl;

 for(i = 0; i < texto.size(); i++)
   for(j = 0; j < sizeof(traduc)/sizeof(traduc[0]); j++)
     if(strcmp(texto[i].c_str(), traduc[j].spa) == 0)
       cout << traduc[j].spa << " en ingles es " << traduc[j].eng << endl;

 cin.get();
 return 0;
}


Saludos  :)
#54
Hola flony.

Proba de este modo:
Código (cpp) [Seleccionar]

#include<iostream>
#include<string>

using  namespace std;

int main ()
{
  string uno, dos;

  cout<<"ingrese uno "<<endl;
  getline(cin, uno);
  dos.assign(uno.size(), '+');
 ...


Saludos.
#55
Hola EAX_.

Me parece mas natural organizar los datos de las personas en una estructura y crear un arreglo de estructuras para almacenar la totalidad de personas.

Un ejemplo muy simplificado:

...
typedef struct {
 char nombre[30];
 char direccion[30];
 char telefono[15];
 float sueldo;
 ...
} Cpersona;

...

int main()
{
 Cpersona p[1000];
 int inx = 4;
 ...
 /* Ejemplo, referirse a un dato especifico de la
    persona almacenada en la quinta posicion del arreglo: */
  printf("%s", p[inx].telefono);
 ...


Saludos.  :)
#56
Hola amchacon.

Lo que buscas se resuelve mediante teoría de grafos, en este enlace tenes una explicación genérica: grafos.


Saludos.   :)
#57
Programación C/C++ / Re: Numeros Romanos
6 Junio 2013, 02:01 AM
Hola.

Disculpas 05K4R1N, ahora caigo que entendí tu consulta al revés... (msg #14)   :-[

Podría ser:

#include<stdio.h>
#include<string.h>
#include<ctype.h>

#define NRO_ELEM(x) (sizeof(x) / sizeof(x[0]))

int RomToDec(char *nrom);

int main()
{
  char *roman = "MMMDLXXXIV";
  printf("%s = %d",roman,RomToDec(roman));
  getchar();
  return 0;
}

int RomToDec(char *nrom)
{
  char *NROROM[][9] = {
    {"M","MM","MMM"},
    {"C","CC","CCC","CD","D","DC","DCC","DCCC","CM"},
    {"X","XX","XXX","XL","L","LX","LXX","LXXX","XC"},
    {"I","II","III","IV","V","VI","VII","VIII","IX"}};
  int fil, col;
  int res =0, div = 1000;
  char *aux = (char*) nrom;

  for(fil=0; aux[fil]; fil++) aux[fil] = toupper(aux[fil]);
  for(fil=0; fil < NRO_ELEM(NROROM); fil++) {
    col = (fil == 0 ? 2 : 8);
    while ( col ) {
      if (strncmp(NROROM[fil][col], aux, strlen(NROROM[fil][col]))==0) {
        res += (col+1) * div;
        aux = &aux[strlen(NROROM[fil][col])];
      }
      col--;
    }
   div /= 10;
  }
  return (int)res;
}


Saludos.
#58
Programación C/C++ / Re: Numeros Romanos
4 Junio 2013, 04:48 AM
Hola 05K4R1N.

Otra opción:


#include <stdio.h>
#include <stdlib.h>

char *DecToRom(int num);

int main()
{
  int num;
  printf("Numero decimal:");
  scanf("%d",&num);
  while(getchar()!='\n');
  printf("%d en numeros romanos: %s\n",num,DecToRom(num));
  getchar();
  return 0;
}

char *DecToRom(int num)
{
  char *uni[] = {"","I","II","III","IV","V","VI","VII","VIII","IX"};
  char *dec[] = {"","X","XX","XXX","XL","L","LX","LXX","LXXX","XC"};
  char *cen[] = {"","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"};
  char *udm[] = {"","M","MM","MMM"};
  char result[50];

  strcpy(result, udm[num/1000]);
  strcat(result, cen[num/100%10]);
  strcat(result, dec[num/10%10]);
  strcat(result, uni[num%10]);
  return (char*)result;
}


Saludos.
#59
Hola joaco97.

No mencionas que RDBMS y componentes estas usando como para darte una respuesta concreta, pero en líneas generales sería:
Código (cpp) [Seleccionar]

...
 tuQuery->Close();
 tuQuery->SQL->Clear();
 tuQuery->SQL->Add("SELECT *");
 tuQuery->SQL->Add("FROM LIBROS");
 tuQuery->SQL->Add("WHERE CODLIBRO LIKE :PCOD");
 tuQuery->ParamByName("PCOD")->AsString = "%" + Edit1->Text + "%";
 tuQuery->Open();
...


Saludos.
#60
Hola.

Código (cpp) [Seleccionar]

#include <iostream>
#include <ctime>
using namespace std;

int expired(struct tm);  
...

int main() {
 struct tm f;
 int d,m,y;

 /*
 Aqui deberia ir el codigo para obtener la fecha de caducidad.  
 El dia, mes y año se almacenan en las variables: d, m, y.
 */

 f.tm_year = y;
 f.tm_mon  = m;
 f.tm_mday = d;
 if (expired(f) > 0) {
   cout << "El periodo de uso ha caducado";
   return 1;
 }
 // ...
 return 0;
}

/* expired: devuelve > 0 si ini < hoy, = 0 si ini = hoy, < 0 si ini > hoy */
int expired(struct tm ini) {
  time_t t = time(NULL);
 struct tm *hoy = localtime(&t);
 return (hoy->tm_year+1900 + hoy->tm_mon + hoy->tm_mday) -
        (ini.tm_year + ini.tm_mon+ ini.tm_mday);
}


Saludos.