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 - darking664

#1
Feliz año nuevo a todos,espero que esten bien...
bueno.. no se si me puedan ayudar.. o algun foro que me recomienden.

Estoy tratando de controlar la velocidad de giro de un motor usando el micro 89S52, hize un diagrama (aun no se incrustar imagenes aqui), y el programa con las instrucciones en ensamblador,
aunque tampoco se si poner el codigo aqui, porque no se si traten temas d eeste tipo... perdonen mi falta de conocimiento sobre este  foro...
... si alguien me puede ayudar o almenos recomendarme un lugar donde pueda resolver mis dudas se lo agradezco de antemano :)

#2
Cita de: rir3760 en  5 Octubre 2013, 17:55 PM
En el segundo fragmento que debes completar solo tienes un bucle cuando necesitas dos.

En el primer fragmento hay dos errores, el primero ya lo indico eferion y el segundo son los indices (incorrectos) utilizados. Utiliza el motor de búsqueda de los foros (o sitios como Wikipedia) para verificar como se debe implementar el algoritmo de ordenacion BubbleSort.

Un saludo

Gracias,  tomare en cuenta tus sugerencias, paso a terminar el programa :D :D
Igual, perdona por no contestar rapido, como ya explique se me fue la luz y no pude seguir...

y de veras gracias, saludos
#3
Código (cpp) [Seleccionar]

for(int i=1;i<tam-1;i++)
{
 for(int j=1;j<tam-i-1;j++)
 {
   if (vec[i].edad> vec[j].edad)
   {
     struct empleado temp = vec[i];
     vec[i]= vec[j];
     vec[j] = temp;          
   }
 }
}


En el caso de ordenar por nombre te pasa exactamente lo mismo.

PD.: intenta no usar variables globales, no suelen ser una buena idea en el 99% de los casos.

PD2.: ya que estás usando c++, lo mismo te resulta más cómodo utilizar la clase string para manejar las cadenas, en vez de char*. Además, te podrías plantear usar la clase vector en vez de un array de c para gestionar la lista de empleados.

PD3.: Hay una tercera forma de ordenar y es usando las funciones qSort y sort... pero eso es algo que dejo que investigues por tu cuenta.

Un saludo.
[/quote]


GRACIAS de veras, perdona x no poder contestar ayer (se me fue la luz), y entre trabajo y tareas de las otras materias .... :S

Si, investigare mas acerca de los metodos, y me basare en las lineas que escribiste.

No entendia bien como hacerlo en el struct.
:D :D :D :D :D :D
#4
Código (cpp) [Seleccionar]

#include <cstdlib>
#include <iostream>
#include <cstdio>
#include <cstring>
#define tam 4 //constante

struct empleado{
char nom[30];
int edad;
float sueldo;
char sexo;
char mat[2][30];
};

//Prototipos
empleado captura();

void imprimir(empleado emp);
void ordenar(empleado vec[]);

using namespace std;

int main()
{
//vec de struct para trabajar TAM registros
empleado vec[tam];
int temp,temp2;

for(int i=1;i<tam;i++)
vec[i]=captura();


cout<<"\n\nRegistros Desordenados\n";
for(int i=1;i<tam;i++)
imprimir(vec[i]);


//C O M P L E T A R ..... Linea de codigo que ordena el vector por edad
cout<<"\n\nRegistros ordenados por EDAD\n";


for(int i=1;i<tam-1;i++)
{
for(int j=1;j<tam-i-1;j++)
{
if (vec[j].edad> vec[j+1].edad)
{
temp=vec[j].edad;
vec[j].edad=vec[j+1].edad;
vec[j+1].edad=temp;
}
}
}



for(int i=0;i<tam;i++)
imprimir(vec[i]);


//C O M P L E T A R ..... Linea de codigo que ordena el vector por nombre
cout<<"\n\nRegistros Ordenados por NOMBRE\n";

for(int j=1;j<tam;j++)
{
temp2=strcmp(vec[j].nom,vec[j+1].nom);
if(temp2>0)
strcpy(vec[0].nom,vec[j].nom);
strcpy(vec[j].nom,vec[j+1].nom);
strcpy(vec[j+1].nom,vec[0].nom);
}


for(int i=1;i<tam;i++)
imprimir(vec[i]);



system("PAUSE");
return EXIT_SUCCESS;
}



empleado captura()
{
empleado emp; //Variable local de captura

cout<<"\n\nNombre: ";
cin.getline(emp.nom,30);
cout<<"Edad: ";
cin>>emp.edad;
cout<<"Sueldo: ";
cin>>emp.sueldo;
cout<<"Sexo: ";
cin>>emp.sexo;
fflush(stdin);
cout<<"mail 1: ";
cin.getline(emp.mat[0],30);
cout<<"mail 2: ";
fflush(stdin);
cin.getline(emp.mat[1],30);
return emp;
}

void imprimir(empleado emp)
{
cout<<endl<<"Nombre: "<<emp.nom;
cout<<endl<<"Edad: "<<emp.edad;
cout<<endl<<"Sueldo: "<<emp.sueldo;
cout<<endl<<"Sexo: "<<emp.sexo;
cout<<endl<<"Mail 1: "<<emp.mat[0];
cout<<endl<<"Mail 2: "<<emp.mat[1]<<endl;
return;
}



El programa consiste en ordenar el vector por edad y nombre alfabeticamente...
si alguien me puede orientar o ayudarme, se los agradezco mucho.

:)
#5
Cita de: 3mp3z@ndo en 16 Septiembre 2013, 23:41 PM
El error lo tienes en el if, le estás diciendo que si la longitud de la cadena es MENOR que cero imprima, como es mayor, pues no imprime.

Un saludo



jejejeje....   ::)

GRACIAS... no se como no lo pude ver....  :o
le hacia mas caso a los procesos   :-\

de veras gracias  :rolleyes:  

:xD
#6
Cita de: hyperiod en 16 Septiembre 2013, 23:22 PM
Mejor manejalo con string y lee la cadena con getline(cin,variable) para que los espacios los cuentes y ya


Gracias por la sugerencia y la rápida respuesta :D

Aunque me gustaría saber donde esta mi error ... :(

#7
Esta ves quisiera saber si alguien ve mi error, al parecer la compilación sucede pero no muestra nada al ejecutarlo, si me pueden ayudar se los agradezco.


Código (cpp) [Seleccionar]

#include <cstdlib>
#include <iostream>
#include <cstring>

void cadena(char cad[],int i);

using namespace std;

int main()
{
char cad[]="hola a todos";

cadena(cad,strlen(cad)-1);


system("PAUSE");
return EXIT_SUCCESS;
}

//Imprimir una cadena alreves
void cadena(char cad[],int i)
{
if(i<=0)
{
cout<<cad[i]<<" ";
cadena(cad,i-1);
}
}
#8


En definitiva, de este modo creo que tendría que funcionarte:
Código (cpp) [Seleccionar]

#include <iostream>
#include <sstream>

int main(int argc, char* argv[])
{

 float t, sum = 0;

 // Mostrar parámetros
 std::cout << "Parametros recibidos: ";
 for (int i = 1; i < argc; i++)
   std::cout << argv[i] << " ";
 std:: cout << std::endl;

 // Calcular promedio
 for (int i = 1; i < argc; i++) {
   std::istringstream(argv[i]) >> t;
   sum += t;
 }
 if ((argc-1) > 0)
   std::cout << "Promedio: " << sum / (argc-1) << std::endl;
 return 0;
}


Saludos :)

Edito: Perdón, no había visto la respuesta de Alien-Z mintras escribía.

Gracias a los dos... ahora pude terminar mis practicas... pero tendré muy en cuenta tu ejemplo.
Doy mi problema por solucionado..
:D :D

Saludos.
#9
Cita de: Alien-Z en  7 Septiembre 2013, 22:55 PM


<< Ejecuta el programa desde la consola de comandos y olvídate de la IDE, para ello dirígete a la carpeta donde se encuentra la aplicación compilada desde la consola >>

./nombrePrograma 1 2 3 4 5 6

Debes indicar la posición a la que quieres acceder:

Código (cpp) [Seleccionar]
...
cout<<"\n"<<argv[i]<<"\n";
...
n=atoi(argv[i]);
...




Esta parte la uso con DevC:
system("PAUSE");




Modificando y Ejecutando...
de verdad Gracias por la rápida respuesta.

:D :D
#10
Hola a todos...

Soy nuevo en este foro, me han hablado muy bien de esta pagina. No se si sea el lugar correcto para preguntar acerca de esto.

Actualmente estoy estudiando en la universidad, recibo clases de programación bajo le IDE DevC
y a mi no me agrada mucho estar usando Windows. Bueno dejare explicaciones para después...


Uso Geany en Debian... y hasta ahora no he podido la opcion para poder manejar los Parámetros...
Este es mi código fuente... es un programa sencillo que muestra los datos de los parámetros de main y muestra su promedio.



using namespace std;

int main(int argc, char *argv[])
{
cout<<"\nargc="<<argc;

   for(int i=0;i<argc;i++)
   {
   cout<<"\n"<<argv<<"\n";
   }

//Ahora aobtener promedio
int acum=0,n;
float prom;

   for(int i=2;i<argc;i++)
   {
   n=atoi(argv);
   //acum+=n;
   acum=acum+n;
   }

prom=(float)acum/(argc-2);
cout<<"\nEl promedio es: "<<prom<<"\n\n";


   system("PAUSE");
   return EXIT_SUCCESS;
}


Si alguien ha usado Geany... podría decirme como puedo ingresar loas parámetros a la función main. Se los agradecería mucho. :)
O en su defecto recomendarme otro programa para practicar.

Gracias y saludos.