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

#911
Antes que nada, para "colgar" un código primero elige donde pone "GeSHi" las etiquetas de C++, aunque el código sea en C,  y en medio de las etiquetas que aparecen "pegas" tu código, así sale bien  y  coloreado y es más fácil de seguir.

Como efecto no deseado, al no poner las etiquetas la matriz M, aparece como M[j], cuando en realidad las tienes bien puestas como
M[i][j]
Cosas de no usar las susodichas etiquetas.

Por lo demás el código que posteas está muy verde todavía. Pero para  que no se diga que no ayudamos y siendo lo siguiente lo que quieres, si no he entendido mal:


Código (cpp) [Seleccionar]
que numero de filas desea  para la matriz?:
2
que numero de columnas de la matriz:
4

llenado de matriz:
Inserte num[0][0]: 1
Inserte num[0][1]: 2
Inserte num[0][2]: 3
Inserte num[0][3]: 3
El numero esta repetido, ingrese otro
Inserte num[0][3]: 4
Inserte num[1][0]: 5
Inserte num[1][1]: 6
Inserte num[1][2]: 7
Inserte num[1][3]: 7
El numero esta repetido, ingrese otro
Inserte num[1][3]: 8

la matriz:
[6][2][3][6]
[6][6][7][6]


Te paso el código con "una pequeña maldad", hago uso de un array innecesario. Es para no dártelo todo hecho y que al menos veas como puedes hacerlo directamente al introducir los elementos de la matriz   ;)

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

#define tam 10
void capturar (int M[tam][tam], int f, int c);
void mostrar (int M[tam][tam], int f, int c);

int main ()
{
int M [tam] [tam];
int f, c, numero;
printf ("que numero de filas desea  para la matriz?: \n");
scanf("%d",&f);
printf ("que numero de columnas de la matriz: \n");
scanf("%d",&c);

printf ("\nllenado de matriz: \n");
capturar(M, f, c);
printf ("\nla matriz: ");
mostrar(M, f, c);
return(0);
}
void capturar (int M[tam][tam], int f, int c)
{
    int i,j=0,k=0,l=0;
    int numeros[f*c];
    for( i = 0; i < f*c  ; i++){
           if (l==c ){
               k++;
               l=0;
           }
           printf ("Inserte num[%d][%d]: ",k,l);
           l++;
           scanf ("%d",&numeros[i]);

           for( j = i-1; j >=0 ; j--){
               if(numeros[i] == numeros[j]){
                   printf("El numero esta repetido, ingrese otro\n");
                   i--;l--;
                   break;
               }
       }
   }
   i=0;
   for (j=0;j<f;j++){
       for (k=0;k<c;k++){
           if ( j==0 && (k==0 ||  k==c-1 )|| j==f-1 && (k==0 ||  k==c-1))
               M[j][k]=6;
           else
               M[j][k]=numeros[i];
           i++;
       }
   }
}

void mostrar (int M[tam][tam], int f, int c)
{
int i,j;
for ( i = 0 ; i < f ; i++)
{
 printf ("\n");
 for ( j =0 ; j < c ; j++)
 {
  printf ("[%d]",M[i][j] );
 }
}
}


Tampoco he modificado "casi" el código que posteas, aunque esa forma de declarar la matriz a mí no me gusta. Pero bueno, para que vayas adelantando la tarea creo que tienes material ya.

Saluditos!. ....
#912
"Sin dudarlo un instante" me quedo con el segundo. Es una simplificación del mío al mirar un caracter y el siguiente y decidir en función de ello lo que hacer.

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

int main(){

    int i,j=0,k=0,cont=0;
char cadena[80]="01ab210c213qwe31zxc213";
    char array_de_cadena[40][6] = {{0}};
puts("01ab210c213qwe31zxc213\n");
    for (i=0;cadena[i]!='\0';i++){
         array_de_cadena[j][k]=cadena[i];
        if ((cadena[i]>47 && cadena[i]<58) ^ (cadena[i+1]>47 && cadena[i+1]<58)){
                j++;
                k=0;
        }
            else
                k++;
        }
    for (i=0;i<=j;i++)
        printf ("%s \n",array_de_cadena[i]);
    return 0;
}


Muy agudo rir.
Sólo me queda la duda de no introducir el caracter nulo al final de cada cadena.


Saluditos!. ...

P.D: Lo que no entiendo es a cuento de que vino el código que habías posteado anteriormente  :silbar:
#913
Cita de: 85 en  5 Abril 2013, 21:19 PM
eiiiii no vale poner varias cosas en una línea para que parezca más corto XD


;-) ;-) ;-) Lo "rectifico" y aún así, además de corto es "simple" siguiendo el principio de la navaja de Ockham: «en igualdad de condiciones, la explicación más sencilla suele ser la correcta»

Código (cpp) [Seleccionar]

#include<stdio.h>

int main(){

   int i,j=0,k=0,cont=0;
char cadena[80]="01ab210c213qwe31zxc213";;
   char array_de_cadena[40][6] = {{0}};
puts("01ab210c213qwe31zxc213\n");
   for (i=0;cadena[i]!='\0';i++){
       if (cadena[i]>47 && cadena[i]<58 ){
           if (cont==1){
               array_de_cadena[j][k]='\0';
               j++;
               k=0;
           }
       array_de_cadena[j][k]=cadena[i];
       k++;
       cont=2;
       }
       else {
           if (cont==2){
               array_de_cadena[j][k]='\0';
               j++;
               k=0;
           }
           array_de_cadena[j][k]=cadena[i];
           k++;
           cont=1;
       }
  }
   for (i=0;i<=j;i++)
       printf ("%s \n",array_de_cadena[i]);
   return 0;
}


Un abrazo y Saluditos!. ....

P.D: Sería más corto con el uso de sscanf, pero no sería más simple ni en igualdad de condiciones respecto a los propuestos.
#914
Cita de: sora_ori en  5 Abril 2013, 14:22 PM


Esto sería correcto cuando lo pasa a notación cientifica ?



Justito es lo correcto.

Saluditos!. ....
#915
Creo que con un contador, bandera o flag y un array para guardar los parciales "va que chuta":

Código (cpp) [Seleccionar]
01ab210c213qwe31zxc213

01
ab
210
c
213
qwe
31
zxc
213
Presione una tecla para continuar . . .


Código (cpp) [Seleccionar]


#include<stdio.h>

int main(){

   int i,j=0,k=0,cont=0;
    char cadena[80]="01ab210c213qwe31zxc213";;
   char array_de_cadena[40][6] = {{0}};
    puts("01ab210c213qwe31zxc213\n");
//scanf("%s", cadena);
for (i=0;cadena[i]!='\0';i++){
       if (cadena[i]>47 && cadena[i]<58 ){
           if (cont==1){
               array_de_cadena[j][k]='\0';j++;k=0;
           }
       array_de_cadena[j][k]=cadena[i];k++;cont=2;
       }
       else {
           if (cont==2){
               array_de_cadena[j][k]='\0';j++;k=0;
           }
           array_de_cadena[j][k]=cadena[i];k++;cont=1;
       }
  }
   for (i=0;i<=j;i++)
       printf ("%s \n",array_de_cadena[i]);
    return 0;
}


Saluditos!. ...
#916
Creo que sería más lógico averiguar si el numero1 es  o no múltiplo de tres, y si no lo es tomar el valor del correspondiente múltiplo y ya en el for ir de tres en tres, vamos esto:

Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;

int main()
{
int numero1,numero2, multiplos3 =0,suma=0;
    cout << "Escribe el primer numero: " << endl;
    cin >> numero1;
    cout << "Escribe el segundo numero: " << endl;
    cin >> numero2;
    if (numero1%3!=0)
        numero1=numero1-numero1%3 +3;
    for(int i=numero1;i <= numero2; i+=3) {
            cout << i << "   ";
            multiplos3++;
            suma+=i;
        }
        cout <<endl<<"Los multiplos de 3 comprendidos entre " << numero1 <<" y "
    << numero2 << " son: " << multiplos3<<endl;
    cout <<endl<<"Y la suma de todoe ellos es " <<suma<<endl;
    return 0;
}



Saluditos!. ...
#917

Sin incluir al cero:

Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;

int main()
{
unsigned short N;
cout<<"Cuantes pares deseas ver? ";
cin>>N;

for(int i=2; i<=N*2; i+=2)
cout<<" "<<i;

return 0;
}


Saluditos!. ...
#918
Cita de: acega en 31 Marzo 2013, 23:03 PM
.......................................
ahora tengo que convertir los que son pares en "0" y los impares en "1",
.................................................

Lo normal es con un if -else, tipo:

Código (cpp) [Seleccionar]

#include <stdio.h>
#include <iostream>
#include <conio.h>
using namespace std;

int pasc[' ']={0};
int x=0,n;
void llenar()
{

cout<<"\tIngrese hasta que linea: ";
cin>>n;
}
void pascalizar()
{

for (int i=0; i<n ; i++)
{
  for (int j=x; j>=0; j--)
  {
   if(j==x || j==0)
   {
    pasc[j] = 1;
   }
   else
   {
    pasc[j] = pasc[j] + pasc[j-1];
   }
  }
  x++;
  cout<<"\n";
   for(int j=0; j<x; j++)
   {
    if (pasc[j]%2==0)
        cout<<"\t"<<0;
    else
        cout<<"\t"<<1;
   }
}
}
int main (void)
{

llenar();
//clrscr();
pascalizar();
getch();
return 0;
}


Te saldría esto:

Código (cpp) [Seleccionar]
Ingrese hasta que linea: 18

1
1       1
1       0       1
1       1       1       1
1       0       0       0       1
1       1       0       0       1       1
1       0       1       0       1       0       1
1       1       1       1       1       1       1       1
1       0       0       0       0       0       0       0       1
1       1       0       0       0       0       0       0       1       1
1       0       1       0       0       0       0       0       1       0       1
1       1       1       1       0       0       0       0       1       1       1       1
1       0       0       0       1       0       0       0       1       0       0       0       1
1       1       0       0       1       1       0       0       1       1       0       0       1       1
1       0       1       0       1       0       1       0       1       0       1       0       1       0       1
1       1       1       1       1       1       1       1       1       1       1       1       1       1       1       1
1       0       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1
1       1       0       0       0       0       0       0       0       0       0       0       0       0       0       0       1       1


Aunque no me negaras que esto otro es más triángulo de Pascal:

Código (cpp) [Seleccionar]
                                                              1
                                                           1     1
                                                        1     2     1
                                                     1     3     3     1
                                                  1     4     6     4     1
                                               1     5    10    10     5     1
                                            1     6    15    20    15     6     1
                                         1     7    21    35    35    21     7     1
                                      1     8    28    56    70    56    28     8     1
                                   1     9    36    84   126   126    84    36     9     1
                                1    10    45   120   210   252   210   120    45    10     1
                             1    11    55   165   330   462   462   330   165    55    11     1
                          1    12    66   220   495   792   924   792   495   220    66    12     1
                       1    13    78   286   715  1287  1716  1716  1287   715   286    78    13     1
                    1    14    91   364  1001  2002  3003  3432  3003  2002  1001   364    91    14     1
                 1    15   105   455  1365  3003  5005  6435  6435  5005  3003  1365   455   105    15     1
              1    16   120   560  1820  4368  8008 11440 12870 11440  8008  4368  1820   560   120    16     1
           1    17   136   680  2380  6188 12376 19448 24310 24310 19448 12376  6188  2380   680   136    17     1
        1    18   153   816  3060  8568 18564 31824 43758 48620 43758 31824 18564  8568  3060   816   153    18     1
     1    19   171   969  3876 11628 27132 50388 75582 92378 92378 75582 50388 27132 11628  3876   969   171    19     1


Perdón, esto en tu caso:

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


Saluditos!....
#919
Cita de: BatchianoISpyxolo en 30 Marzo 2013, 07:05 AM
.......................................
Pero para diagonalizar la matriz... xD No sabría como hacerlo de forma eficiente.
........................................

No es tan complicado, al menos sin pivote. Un ejemplo:

Código (cpp) [Seleccionar]

/* Función para triangularizar una matriz */
/************************************************/
int triang(int N, double **a, double *b)
{
    int i, j, k, error;
    double fac;
    for (k=0; k<N-1; k++)
        for (i=k+1; i<N; i++)
            {
                if (fabs(a[k][k])<EPS) return -1;
                fac=-a[i][k]/a[k][k];
                 for (j=k; j<N; j++)
                    {
                        a[i][j]+=a[k][j]*fac;
                    }
                b[i]=b[i]+b[k]*fac;
               
            }return 1;
}
/* Función para resolver un sistema triangular superior */
/************************************************/


Saluditos!. ...
#920
Cita de: amchacon en 29 Marzo 2013, 21:41 PM

El determinante es una operacion complej, hacer un determinante de 20x20 puede trardar semanas (y me quedo corto).

Es que el sistema que utilizan es de "fuerza bruta".

Para hacerlo razonable habría que usar Gauss con/sin pivotes.

Saluditos!, ....