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

#591
¿Algo como esto?:

Citar
Cuantos caracteres quieres extraer?.Inferior a 9 :6

Cadena original  leosansan

Se ha extraido:sansan

Y queda la cadena : leo


Código (cpp) [Seleccionar]


#include <stdio.h>

int  main(void)
{
    int ch,extraer,longitud,i,j,flag;
    char cadena[]="leosansan";
    for (i=0;cadena[i] ;i++);
    longitud=i;
    do {
        printf("Cuantos caracteres quieres extraer?.Inferior a %d :",longitud);
        fflush(stdout);
        flag=(scanf("%d", &extraer));
        while( (ch = getchar()) != '\n' );
    }while (extraer > longitud ||flag==0);
    char cadenaDcha[longitud-extraer+1];
    for (i=0,j=0; i<longitud-extraer; i++,j++)
        cadenaDcha[j]=cadena[i];
    cadenaDcha[j]='\0';
    printf("\nCadena original  %s\n",cadena);
    printf("\nSe ha extraido:");
    for (i=longitud-extraer; i<longitud; i++)
        printf("%c", cadena[i]);
    printf("\n\nY queda la cadena : %s\n", cadenaDcha);
    return 0;
}
}


Se puede mejorar creando un array cadenaIzda que guarde el resto de la cadena, ya que como está sólo la imprimo. ¿Te animas?.

Como ves puedes incluir en un sólo código ambos casos. No lo he hecho por pereza xD!.


Saluditos! ..... !!!!        
#592
Programación C/C++ / Re: PREOGRAMACION
15 Diciembre 2013, 06:59 AM
Cita de: wiD^ en 14 Diciembre 2013, 23:19 PM
Muchas gracias a leo y amchacon. Todavía no llegue a los arrays, pero gracias por las correcciones.

Pues entonces más merito para tu trabajo. Como lo tienes está O.K. el cálculo del promedio. ¡Ánimo!

Saluditos! ..... !!!!        
#593
Programación C/C++ / Re: PREOGRAMACION
14 Diciembre 2013, 21:17 PM
Esto va por tí wiD^ que al menos a base de fuerza bruta obtienes el promedio. Ese es el carácter para programar:" pá lante" que  ya luego se van puliendo los detalles.

Espero que hallas visto arrays para entender lo que te expongo. Por cierto, fíjate como calculo el máximo y mínimo para cada linea. Si quisiera el máximo y mínimo global usaría un array en cada caso.

En fin ya preguntas las posibles dudas.


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

int main()
{
   int i, j;
   int fila = 1,nota = 1;
   float A[FILAS][NOTAS];
   float promedio_total=0,nota_max=0,nota_min=10, promedio[FILAS]={0};
   puts("NOTAS:\n");
   for(i=0; i<FILAS; i++){
       printf("Fila %d\n", fila++);
       nota_max=0,nota_min=10;
       for(j=0;j<NOTAS; j++){
           printf("Nota %d: ", nota++);
           fflush (stdout);
           scanf("%f", &A[i][j]);
           promedio[i]+=A[i][j];
           if (A[i][j]>nota_max)
               nota_max=A[i][j];
           if (A[i][j]<nota_min)
               nota_min=A[i][j];
       }
       promedio[i]/= NOTAS;
       printf("\nPromedio de la fila %d es %g: \n", i+1,promedio[i]);
       printf("\nEl maximo de la fila %g y el minimo de es %g: \n\n", nota_max,nota_min);
       nota = 1;
   }
   for (i=0;i<FILAS;i++)
       promedio_total+=promedio[i];
   promedio_total/=FILAS;
   printf("\nPromedio total es %g: \n", promedio_total);
   return 0;
}


Saluditos! ..... !!!!        


P.D: Sí, ya lo sé. He aprovechado otro tema muy parecido para este caso pero creo que el esfuerzo de wiD^ lo merecía y es a él al que contesto, pasando del "original" que no posteo una misera linea de código.
#594
Programación C/C++ / Re: como hacer un menu en c++
14 Diciembre 2013, 18:32 PM

Lee la referencia de la  MSDN tambien la de GetAsyncKeyState.


Saluditos! ..... !!!!       
#595
Con respecto a main ya te indique que es cuestión del estándar de C y respecto al fflush(stdout)  a lo simple  es necesario para asegurarnos después de un printf sin \n de que el texto se envie a la salida estándar, puedes usar el motor de búsqueda para ampliar.

Saluditos! ..... !!!!        
#596
*Como sólo vas a usar una sola matriz, no le veo mucho sentido el uso de typedef, sencillamente la declaro en main.

*La función main, por cuestiones del Standard, debe ser entera, con el consiguiente return al final de la misma.

*Creo que mejor definir las variables "alumno" y "asignatura" como iguales a uno, así no hay que  estar sumando +1 en cada bucle.

*Como picardía puedo aprovechar el postincremento y ahorrarme alumno ++ y asignatura ++, pero es cuestión de gustos y claridad.

*En el primer for i va hasta <10, en lugar de <9.

**Y especialmente es bueno "indentar" el código.


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

int main()
{
   int i, j;
   int asignatura = 1,alumno = 1;
   float A[10][5];
   puts("NOTAS:\n");
   for(i=0; i<10; i++){
       printf("Alumno %d\n", alumno++);
       for(j=0;j<5; j++){
           printf("asignatura %d: ", asignatura++);
           fflush (stdout);
           scanf("%f", &A[i][j]);
       }
       asignatura = 1;
   }
   return 0;
}


REEDITO:

Cita de: ezemidget en 12 Diciembre 2013, 23:36 PM
Mas que para que me hagan los ejercicios agradecería si me pueden explicar como usar matrices y vectores

Creo que más vale un ejemplo que mil palabras:
Bueno, que no se diga que no ayudamos a los noveles, como yo. Aquí está con la media:

Código (cpp) [Seleccionar]
#include <stdio.h>
#define  ALUMNOS        10
#define  ASIGNATURAS    5

int main()
{
   int i, j;
   int asignatura = 1,alumno = 1;
   float A[ALUMNOS][ASIGNATURAS];
   float promedio_total=0, promedio[ALUMNOS]={0};
   puts("NOTAS:\n");
   for(i=0; i<ALUMNOS; i++){
       printf("Alumno %d\n", alumno++);
       for(j=0;j<ASIGNATURAS; j++){
           printf("asignatura %d: ", asignatura++);
           fflush (stdout);
           scanf("%f", &A[i][j]);
           promedio[i]+=A[i][j];
       }
       promedio[i]/= ASIGNATURAS;
       printf("\npromedio alumno %d es %g: \n", i+1,promedio[i]);
       asignatura = 1;
   }
   for (i=0;i<ALUMNOS;i++)
       promedio_total+=promedio[i];
   promedio_total/=ALUMNOS;
   printf("\npromedio total es %g: \n", promedio_total);
   return 0;
}


Saluditos! ..... !!!!        
#597
Cita de: sora_ori en 14 Diciembre 2013, 08:55 AM
..................................................................

A lo que me refería es que me mostrará el resultado de como quedaría una vez con los caracteres extraídos, de todos modos me vendrá bien guardar tu ejemplo porque también me servirá.


Sorry, entendí mal.

Aprovecho la aportación de rir3760 y corrijo la cadena final. Creo que sería algo como esto:


Citar
Cuantos caracteres quieres extraer?.Inferior a 9 :6

Cadena original  leosansan

Se ha extraido  leosan

Y queda la cadena : san

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

int  main(void)
{
   int ch,extraer,longitud,i,j,flag;
   char cadena[]="leosansan";
   for (i=0;cadena[i] ;i++);
   longitud=i;
   do {
       printf("Cuantos caracteres quieres extraer?.Inferior a %d :",longitud);
       fflush(stdout);
       flag=(scanf("%d", &extraer));
       while( (ch = getchar()) != '\n' );
   }while (extraer > longitud ||flag==0);
   char cadenaIzq[longitud-extraer+1];
   for (i=extraer,j=0; i<longitud; i++,j++)
       cadenaIzq[j]=cadena[i];
   cadenaIzq[longitud-extraer]='\0';
   printf("\nCadena original  %s\n",cadena);
   printf("\nSe ha extraido  %.*s\n", extraer, cadena);
   printf("\nY queda la cadena : %s\n", cadenaIzq);
   return 0;
}


Saluditos! ..... !!!!        

REEDITADO.
#598
Antes que nada cuando postees código elige las etiquetas GeSHi y toma la C++ y en medio de las etiquetas Code que aparecen "pegas" tu código. Al no hacerlo de esta manera parte del código no sale correcta, especialmente las matrices.

Fíjate además que main es int, lo que requiere un return entero al final de la función.

Por otro lado, mezclas para imprimir cout, propio de C++, con printf, más propio - aunque no exclusivo- de C. Con lo que podrías usar cout en lugar de printf en este caso. Lo dejo así porque son sólo dos endl.

No incluyas librerías que no usas -cstring en lugar de string.h- y evita la de conio, y su función asociada getch(),  que no es estándar.

Y en lo posible, declara las variables al comienzo, no hace falta una línea para cada variable.



Código (cpp) [Seleccionar]
#include <iostream>

using namespace std;
int main (){
   double x,y,z,media;
   cout<<"Introduce el primer numero: ";
   cin>>x;
   cout<<endl<<endl;
   cout<<"Introduce el segundo numero: ";
   cin>>y;
   cout<<endl<<endl;
   cout<<"Introduce el tercer numero:";
   cin>>z;
   cout<<endl<<endl;
   media=(x+y+z)/3;
   cout<<"La media aritmetica de estos numeros es: "<<media<<endl;
   return 0;
}


Saluditos! ..... !!!!        
#599
Cita de: sora_ori en 13 Diciembre 2013, 13:07 PM
Hola,

...........................................
He podido printar solo los caracteres que se han extraido pero no consigo printar el resultado de la cadena.


Das a entender que además de imprimir los caracteres que extraes los quieres guardar en una nueva cadena, cosa que te faltaría.

Por otro lado sería interesante un bucle que asegure que el número de caracteres a extraer sea inferior a la longitud de la cadena original.

Te dejo una muestra por la izquierda. Análogamente sería para la derecha. Aunque yo personalmente soy partidario en este caso de crear una función que recoja ambos casos.

A ver si te sirve de idea:


Citar
Cuantos caracteres quieres extraer?.Inferior a 9 :12
Cuantos caracteres quieres extraer?.Inferior a 9 :6

Se ha extraido : l
Se ha extraido : e
Se ha extraido : o
Se ha extraido : s
Se ha extraido : a
Se ha extraido : n
Se ha extraido : leosan


Código (cpp) [Seleccionar]

#include <stdio.h>

int  main(void)
{
    int ch,extraer,longitud,i,flag;
    char cadena[]="leosansan";
    for (i=0;cadena[i] ;i++);
    longitud=i;
    do {
        printf("Cuantos caracteres quieres extraer?.Inferior a %d :",longitud);
        fflush(stdout);
        flag=(scanf("%d", &extraer));
        while( (ch = getchar()) != '\n' );
    }while (extraer > longitud ||flag==0);
    char cadenaIzq[extraer+1];
    for (i=0; i<extraer; i++){
        printf("Se ha extraido : %c\n", cadena[i]);
        cadenaIzq[i]=cadena[i];
    }
    cadenaIzq[i]='\0';
    printf("\nSe ha extraido : %s\n", cadenaIzq);
    return 0;
}


Saluditos! ..... !!!!        
#600

Modifica el scanf quitando el .2:

Código (cpp) [Seleccionar]
scanf("%f", &sueldoNuevo);

Saluditos! ..... !!!!