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

#611
Programación C/C++ / Re: Ayuda en este programa
5 Diciembre 2013, 20:24 PM
Cita de: xaps en  5 Diciembre 2013, 19:32 PM
Este código no funcionaria, puesto que inicializas n=0 y la condición para entrar al cuerpo del bucle es que n!=0. En vez de inicializarla en 0, hay que leer el primer valor antes de entrar en el bucle.

Saludos

El problema no es n=0 ya que es la variable suma - manía de no llamar a las cosas por su nombre.-  sino que la variable aux  - que no auxiliar, otro error-  debe iniciarla con cualquier valor distinto de cero, así como tampoco está inicializada la variable c.Amén de declarar n como float si lo que se requiere es en verdad el promedio, vamos con sus decimales y todo.

Y lo dejo cuasi como estaba, aunque no me gusta ni pizca:


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

int main()
{
//programa que recibe  numeros hasta esribir 0 y les hace un promedio
int aux=1, c=-1;   //aux numeros, c contador
       float n=0;   // variable para acumular lo que escribe el usuario, osea la suma
while (aux != 0)
{
   printf("Dame el valor, 0 para acabar: ");
   scanf("%d", &aux);
   c++;
           n += aux; // es como escribir n = n + aux;
}
n = n/c; // promediamos y sacamos el resultado en pantalla
       printf("El promedio es:   %g", n);
       getchar();  // para no llamar system(PAUSE) que es un adefesio interrumpir el  sistema totalmente ...
       //sobra en general ....a no ser que uses DevC++ ....
return 0;
}


Saluditos! .....
#612
Cita de: honguitoSan en  3 Diciembre 2013, 18:23 PM
Hola a todos,tengo una duda en mi programa, tengo que hacer la división de una matriz de (3,4) entre el elemento de la matriz (2,2) esto es lo que llevo:
............

//Programa que divide una matriz de 3,4 entre el elemento 2,2


Antes que nada cuando postees código elige las etiquetas GeSHi y toma la C++. Al no hacerlo de esta manera parte del código no sale correcta, especialmente las matrices.

Otra cosa es que al ir los índices de la matriz desde  0,0 el elemento 


Código (cpp) [Seleccionar]
matrix[2][2] es en realidad el matrix[1][1]

y vas a dividir por ese elemento y no al revés con lo que sería

Código (cpp) [Seleccionar]
B[i][j]=matrix[i][j]/matrix[1][1];

Para no liarte he respetado el código que propones, que quedaría así:

Código (cpp) [Seleccionar]
#include <stdio.h>
int main()
{
int matrix[3][4],i,j,B[3][4];
for(i=0;i<3;i++){
for(j=0;j<4;j++){
printf("Valor matriz[%d][%d] >>> ",i+1,j+1);
scanf("%d",&matrix[i][j]);
while(getchar()!='\n');
}
}
for(i=0;i<3;i++){
printf("\n");
for(j=0;j<4;j++){
printf("\t%d",matrix[i][j]);
}
}
printf("\n");
if(matrix[1][1]==0){
        printf("No se puede porque es cero\n");
        return 1;
    }
for(i=0;i<3;i++)
for(j=0;j<4;j++)
B[i][j]=matrix[i][j]/matrix[1][1];
for(i=0;i<3;i++){
printf("\n");
for(j=0;j<4;j++)
printf("\t%d",B[i][j]); }
printf("\n");
return 0;
}


Saluditos! ....
#613
Supongo que estas usando Python 3.X, más que nada por el uso que haces del input.

Pues bien, Lo único que aparentemente te falla es la ausencia de los paréntesis en la instrucción print, que debería ser:

Código (cpp) [Seleccionar]
print ('Se han contado',i,'veces')

Con esa simple corrección el código se ejecuta sin problemas.

Saluditos!!¡...
#614
Cita de: amchacon en  1 Julio 2013, 12:57 PM
Solucionado, son los tabs de Notepad. Hay que sustituirlos por espacios.

En Configuración -> Preferencias -> Menú de Lenguaje -> Python -> Reemplazar por espacios



Me alegra que te me hallas adelantado. En realidad sólo había visto un doble tabulador.

Lo mejor en python es no abusar de las líneas en blanco, producen el efecto óptico de que todo va bien.

Saluditos!. ...

P.D:Sigo con mi retirada temporal.
#615
O  aún más sencillo en este caso, deja un espacio delante del segundo scanf:

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

Por cierto, ¿te has fijado que inicializas hasta el último caracter con espacio vacío y no dejas "sitio" al final de cadena "\0"?.

¿Y por qué imprimes caracter a caracter en lugar de imprimir la cadena completa?. Algo como:


Código (cpp) [Seleccionar]
printf("%s",arre);

Saluditos!
   
#616

Cambiar las siguiente línea:

Código (cpp) [Seleccionar]
for(i=0;i<n;i++){
                     cout << "Entre el elemento ...............



Saluditos!

#617
Cita de: amchacon en 18 Junio 2013, 22:44 PM
Muy interesante Leo  ;-)


Gracias, gracias e idem por el tuyo.

Ya para finalizar el tema no quería quedarme sin "actualizar" el cifrado César, que por motivos históricos se reducía al abecedario, y permitir el cifrado de buena parte del código ascii. Vamos que al menos contuviera símbolos tan actuales como $, ~, #, @ <, >, " ¿, ¡ etc. Una salida como ejemplo:


Código (cpp) [Seleccionar]

Ingrese una cadena:
"leosan@san.com! ¿san? #leo+san|=\12345!==$$

Cifrado es: Vêt├ôíêc£x}enªºn ╣░®╗M C├ç┼k¢qçðv|3xKfT=pYxx

Decifrado es: "leosan@san.com! ¿san? #leo+san|=\12345!==$$


Y esta vez no voy a colgar el código, creo que si han seguido los posts anteriores no tendrán ninguna dificultad en obtenerlo. Sólo pretendía poner de manifiesto que, como ya comenté, el cifrado César "actual" va más allá del simple abecedario original.


Saluditos!
#618
Como te ha indicado amchacon, las matrices se pasan por referencia, es decir, una vez que están definidas en una función, mantienen sus valores en otra función, por lo que no es necesario el return de las funciones que pones de agregar y multiplicar. A cambio esas funciones, además de ser del tipo void ya que no devuelven nada, han de tener como argumento a la matriz que se considere en cada caso.

Quien se debe declarar como función int es main, con su correspondiente return. Cuestiones del estándar de C/C++.

Otro detallito que te faltó es inicializar la matriz producto antes de empezar a realizar la suma de las multiplicaciones de fila por columna:


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

void agregarValores(int  matriz[N][N]);
void multiplicarMatriz(int matriz1[N][N], int matriz2[N][N],int matriz3[N][N]);
int main(){
    int m1[N][N], m2[N][N], m3[N][N], fil, col;

    printf("Matriz 1:\n");
    agregarValores(m1);
    for(fil=0;fil<N;fil++){
        for(col=0;col<N;col++){
            if(col==0)
                printf("\n");
            printf("%d ", m1[fil][col]);
        }
    }
    printf("\nMatriz 2:\n");
    agregarValores(m2);
    for(fil=0;fil<N;fil++){
        for(col=0;col<N;col++){
            if(col==0)
                printf("\n");
            printf("%d ", m2[fil][col]);
        }
    }
    multiplicarMatriz(m1, m2,m3);
    printf("\nEl resultado de la matriz es:\n\n");
    for(fil=0;fil<N;fil++){
        for(col=0;col<N;col++){
            if(col==0)
                printf("\n");
            printf("%d ", m3[fil][col]);
        }
    }
    reurn 0;
}

void agregarValores(int  matriz[N][N]){
   int fil, col;
   for(fil=0;fil<N;fil++){
       for(col=0;col<N;col++){
           printf("\nFila %d, Columna %d = ", fil+1, col+1);
           scanf("%d",&matriz[fil][col]);
       }
   }
}

void multiplicarMatriz(int matriz1[N][N], int matriz2[N][N],int matriz3[N][N]){
    int fil, col, k, acu;
    for(fil=0;fil<N;fil++){
        for(col=0;col<N;col++){
            matriz3[fil][col]=0;
            for(k=0;k<N;k++){
                matriz3[fil][col]+=matriz1[fil][k]*matriz2[k][col];
            }
        }
    }
}


Saluditos!
#619
Cita de: douglascarvallo en 22 Junio 2013, 04:52 AM
Ayuda para arreglar este programa:


Sólo indicarte un par de cositas:

* En general, en C++ le sobra el .h a la librería iostream. Otra cosa es que estuviera el código en C.

* Para usar la función system hace falta la librería cstdlib.

* No tiene mucho sentido declarar las variables como globales en este caso. Fíjate que las tienes declaradas fuera de la función main y además es una buena práctica inicializarlas previamente.

* Cuando una función, como if, while for se componen de una sola sentencia las llaves están de más, sólo enmarañan el código.

* Acostúmbrate a "indentar" correctamente el código. Eso facilita su posterior lectura.

* En general es necesario, si no usas la forma abreviada, el incluir using namespace std para el uso de los cout y cin.

* Los valores MAX y MIN es arriesgado ponerlos a voleo. Por ejemplo ese MAX de -999 podría ser superado fácilmente. Yo aconsejo utilizar los valores MAX y MIN que te da la librería climits, donde están los max y min de los distintos tipos de enteros, entre otros valores.


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

int main (void)
{
   int x=0,mayor=0,menor=0,i=0;
   cout << "Ingrese 100 numeros y el programa determinara el mayor y el menor" <<endl<<endl;
   menor = INT_MAX;
   mayor = INT_MIN;
   for (i=0 ; i<100 ; i++)
   {
       cout << "Ingrese el dato numerico: "<<i+1 <<endl;
       cin >> x;
       if(x>mayor)
           mayor=x;
       if(x<menor)
           menor=x;
   }
   cout << "El numero mayor ingresado es: " <<mayor<<endl;
   cout << "El numero menor ingresado es: " <<menor<<endl;
   system("pause");
   return 0;
}


Saluditos!
   


Reeditado y corregido.
#620
Cita de: douglascarvallo en 22 Junio 2013, 04:49 AM
¿COMO HACER PARA QUE EL PROGRAMA MUESTRE EL RESULTADO A MEDIDA QUE SE SUMEN?

Uppss, me zumban los oídos con tanto grito.

Sencillamente "mete" el printf a continuación de cada scanf:


Código (cpp) [Seleccionar]
#include <stdio.h>
#include <conio.h>
int main ()
{
    int i=0, num=0, suma=0;
    for (i=1;i<=3;i++)
    {
        printf ("Ingrese el dato numerico %d: ", i);
        scanf ("%d", &num);
        while (getchar()!='\n');
        suma+=num;
        printf ("\n La suma es: %d  \n", suma);
    }
    getch ();
    return 0;
}


Sólo indicarte un par de cositas. La función main tiene un return 0, luego debes declararla como int. Y en cuanto al uso de la librería conio y la función getch léete lo que no hay que hacer en C/C++