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

#21
Cita de: francoyo1998 en 30 Octubre 2014, 02:15 AM
Y como hago para que leea todo el string??? osea si quisiera imprimir todo lo que ingrese como lo haria???? porque al hacerlo asi solo me va a cargar la primera palabra pero no el resto....

* Si quisieras seguir usando scanf para captar la cadena con espacios usarías:

Código (cpp) [Seleccionar]
scanf("%[^\n]s", temp) ;

* No hace falta el uso de una variable como "a" y hacer luego "a==a" para procvocar un bucle infinito. Más breve sería usar:

Código (cpp) [Seleccionar]
while ( 1 )

* Ten en cuenta que "temp" es un array por lo que sobra "& en el scanf.

* La función "main" es de tipo "int" por lo que requiere a su vez un return de entero.

Vamos que podría ser algo como:

Código (cpp) [Seleccionar]
#include <stdio.h>

int  main ( void ) {
  char temp [100] ;
  while ( 1 ) {
   printf ( ">>> " ) ;
   scanf("%[^\n]s", temp) ;
   printf( "%s\n" , temp ) ;           
   while ( getchar() != '\n' ) ;
  }
  return 0 ;}


¡¡¡¡ Saluditos! ..... !!!!


#22
.....y no te olvides del return de la función main. Tampoco vendrían mal algunos printf o puts para saber que hace al comienzo el programa y cuales son los resultados. Las llaves sólo si son necesarias. También es importante el indentar el código, algo como  :o:

Código (cpp) [Seleccionar]
#include<stdio.h>

int main ( void ) {
 int N , i , cont = 0 ;
 puts ( "Introduce un numero:" ) ;
 scanf( "%d" , &N ) ;
 puts ( "Son divisores:" ) ;
 for( i = 1 ; i <=N ; i ++ )
   if( ( N % i ) == 0 )
     cont ++ , printf ( "%d   " , i ) ;
 printf ( "\nTotal de divisores: %d\n" , cont ) ;    
 return 0 ;
}


¡¡¡¡ Saluditos! ..... !!!!


#23
Cita de: ShadowA7X en 26 Octubre 2014, 21:07 PM
Tengo 4 puntos que representan dos segmentos en el plano cartesiano y cada uno de estos puntos está definido obviamente por dos coordenadas x e y.

EJ:

R1= (x1,y1) (x2,y2)
R2= (x3,y3) (x4,y4)

Bueno, en si tengo que hacer un programa que me pide muchas cosas, pero ésta parte en especifico (ver si dos segmentos se interceptan o no) no se me ha podido ocurrir. Alguien me puede orientar por favor?
......................................

Si (y2 - y1 ) / ( x2 - x1 ) !=  (y4 - y3 )  / ( x4 - x3 ) ==> Se cortan.

Si (y2 - y1 ) / ( x2 - x1 ) =  (y4 - y3 )  / ( x4 - x3 ) ==> Son paralelas o coincidentes.

¡¡¡¡ Saluditos! ..... !!!!




#24
Cita de: GilbertoBrewer en 26 Octubre 2014, 05:17 AM

También intenté escribiendo:

Citarstrcpy(tipo,nombre)[ i ];
       strcat(tipo," ");
       strcat(tipo,apellido[g]);
en lugar de:

       sprintf(tipo,"%s %s",nombre[i],apellido[g]);



Antes que nada elige en las etiquetas GeSHi la de C++ para que el código salga coloreado.

El [ i ] se te fue fuera del paréntesis:

Código (cpp) [Seleccionar]
strcpy ( tipo , nombre [ i ] ) ;

Y si usas strcpy y strcat si debes incluir la librería <string.h>.

¡¡¡¡ Saluditos! ..... !!!!



#25
Cita de: GilbertoBrewer en 26 Octubre 2014, 04:28 AM
Buenas noches o lo que sea cuando entren al tema.


El problema está en que en algunos casos me imprime dos apellidos juntos o no me muestra el apellido, ...............................


Supongo que has puesto;:

Código (cpp) [Seleccionar]
sprintf(tipo,"%s %s",nombre[i],apellido[g]);

Es que al usar Cita en lugar de las etiquetas GeSHi el código que cuelgas no sale bien,

¡¡¡¡ Saluditos! ..... !!!!



#26
Programación C/C++ / Re: Gusano básico en C++
24 Octubre 2014, 12:52 PM
Cita de: zikotik en 24 Octubre 2014, 07:21 AM



..........................................
int b = 0;
int c = 0;
int d = 0;
int e = 0;
int f = 0;

if(!fseek.is_open()){
ofstream fo(fname);

for(int a = 0; a <= 9; f++){
if(f > 9){
f = 0;
e++;
}

if(e > 9){
f = 0;
e = 0;
d++;
}

if(d > 9){
f = 0;
e = 0;
d = 0;
c++;
}

if(c > 9){
f = 0;
e = 0;
d = 0;
c = 0;
b++;
}

if(b > 9){
f = 0;
e = 0;
d = 0;
c = 0;
b = 0;
a++;
}
.....................................


PD: NO ME HAGO CARGO DEL USO QUE LE DEN AL MISMO.

UFFFFF!!!!!, muchas variables y demasiados if. ¿Por qué no lo intentas con un array?:

Código (cpp) [Seleccionar]
int num [6] = {0} ;
  for( num [0] = 0 ; num [0] <= 9 ; num [5]++ )
      for( i = 1 ; i <  6 ; i++ )
         if ( num [i] > 9 && num [ i - 1 ]++ )
              for( j = i ; j < 6 ; j++ )
                   num [ j ] = 0  ;


¡¡¡¡ Saluditos! ..... !!!!



#27
Además te sobra:

Código (cpp) [Seleccionar]
int i,j;

toda vez que las declaras dentro de los for y no vas a hacer otro uso fuera de los mismas.

Y te falta el return 0 o similar de la función main. Ambas cosas tanto para este código como para el que pusiste en el otro tema anterior.   ;)

¡¡¡¡ Saluditos! ..... !!!!


#28
"Creo" que es así:

Código (cpp) [Seleccionar]
for  ( int j = i + 1 ;  j <= TAM - 1 ;  j++ )

¡¡¡¡ Saluditos! ..... !!!!



#29
Cita de: kutcher en 15 Octubre 2014, 18:24 PM
....................................................
Saludos leosansan un gusto volverte a ver escribir

Igualmente amigo kutcher.

Me permito hacerte una pequeña observación respecto a ese código para multiplicar y es que debido a los dos for recurrentes si los dos números son cada uno de 1000 cifras habría que realizar un millón (¡¡¡1.000.000¡¡¡ ni más ni menos) de operaciones "/" y "%".

Si lo analizas verás que con un array temporal ese número se reduce a la suma de cifras, es decir ¡¡¡¡2.000 tan sólo ¡¡¡¡¡.

No cuelgo código por razones que entenderás, pero si estas interesado me envías un mp.

Un fuerte saludo de León.
#30
Cita de: kutcher en 15 Octubre 2014, 01:41 AM
Buenas noches, estoy estudiando un algoritmo que realiza una multiplicación de dos enteros almacenados en respectivos arrays, el problema es que no consigo entender el método utilizado en tal caso, ya que existen varios :
.....................................
Saludos

Este algoritmo es la clásica multiplicación:

Código (cpp) [Seleccionar]

 
   1 2 3      <== indice: j = 2 1 0
   x 2 3      <== indice: i =   1 0
  -------
   3 6 9      <== i = 3 * j = 3 2 1
 2 4 6    <== i = 2 * j = 3 2 1
 ----------
 2 7 12 9
-----------
0 2 8  2 9   <== indice: k = 0 1 2 3 4

De izquierda derecha:

"FALTA": carry = 0 ;

c[0] =  '0'
c[4] =  9 % 10 +  + acarreo + '0' = '9' ===>  carry = acarreo =  9 / 10 = 0
c[3] = 12 % 10 +  + acarreo + '0' = '2' ===>  carry = acarreo = 12 / 10 = 1
c[2] =  7 % 10 +  + acarreo + '0' = '8' ===>  carry = acarreo =  8 / 10 = 0
c[1] =  2 % 10 +  + acarreo + '0' = '2' ===>  carry = acarreo =  2 / 10 = 0

c[0] +=   acarreo + (  Esto falta  ) '0' = '0'

c[5] = c[ la + lb ] = '\0' <==  Esto esta al principio

c  = 02829

if ( acarreo == 0 o lo que es lo mismo, si c[0] == '0' )

 desplazo todos los caracteres del array "c" una posicion a la izquierda" :

  memmove ( c , c + 1 , la + lb ) ; ==> c = 2829

Observacion; lo siguiente es para trabajar con enteros

n = T(a[i]) * T(b[j]) + T(c[k]) + carry = a[i] - '0' + b[j] - '0' + c[k] - '0'  + carry


Más o menos así es el esquema que sigue un código simple de multiplicación.  ;)

¡¡¡¡ Saluditos! ..... !!!!



EDITADO con la observación de kutcher, no sé en que estaría pensando.  ;)