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

#1
Ejercicios / Re: EJERCICIOS BASICOS C++
20 Mayo 2011, 18:11 PM
:)

Lo que hice funciona para cualquier li (límite inferior) y ls (límite superior), no te límites al rango ya dado, siempre se debe hacer algo GENERAL.

Nos vemos.
#2
Mmm.. Probé tu código y me lee todo ...

Pero si no es así contigo prueba esto:

void Farmacia::meterMedicamento(){
   string acodigo;
    char anombre[50];
    char aformato[50];
    string alaboratorio;
    float apvp;
   Casilla *cas;
    int unidades;
   
    cout << "Inserte el nombre del medicamento: ";
    cin>>anombre;
    do{
    cout<<"Inserte el código de 7 dígitos: ";
    cin>>acodigo;
    }while(acodigo.length()!=7);
    while(getchar()!='\n');
    cout<<"Inserte el formato del medicamento: ";
    cin.getline( aformato, 50);
    cout<<"Inserte el laboratorio: ";
    cin>>alaboratorio;
    cout<<"Inserte el precio: ";
    cin>>apvp;
    cout<<"Indique las unidades que habrá en el stock: ";
    cin>>unidades;
    while(getchar()!='\n');

    if(unidades>=0){
   Medicamento med(acodigo, anombre, aformato, alaboratorio, apvp);
   this->nuevoMedicamento(&med);
   cas = this->casillaVacia();
   this->colocarMedicinaEstante(med.verCodigo(), cas, unidades);
    }


Cada vez que dejes de hacer lecturas cin o scanf debes poner while(getchar()!='\n') para limpiar la basura del buffer que deja esas funciones de lectura.
#3
Ejercicios / Re: EJERCICIOS BASICOS C++
20 Mayo 2011, 03:30 AM
#include <stdio.h>

int main()
{
  int li = 100, ls = 500;
 
  for( int i = li; i < ls + li%2; i += 2){
     
     printf("%d\t", i + (i+1)%2);
  }
  printf("\n\nPresione ENTER para salir . . .");
  getchar();
  return 0;
}
#4
#include <stdlib.h>
#include <stdio.h>

int potencia( int n, int e);

int main()
{
   int num, exp;
   float res;
   
   printf("\nIngrese un n%cmero: ", 163);
   scanf("%d", &num);
   
   printf("\nIngrese el exponente (entero): ");
   scanf("%d", &exp);
   
   res = (float)potencia( num, abs(exp));
   if( exp < 0)
      res = 1./res;
     
   printf("\n\nEl resultado de %d a la %d, es: ", num, exp);   
   if( num == 0 && exp <= 0)
      printf("Indefinido . . .\n");
   else
      printf("%.4f\n", res);
   
   while( getchar()!='\n');
   printf("\n\nPresione ENTER para salir . . .");
   getchar();
   return EXIT_SUCCESS;
}

int potencia( int n, int e)
{
   int r = 1;
   for( int i = 1; i <= e; i++){
     
      r *= n;
   }
   return r;
}
#5
Te lo corregí sólo para que veas la diferencia entre un código ordenado y uno como el tuyo ...


# include <stdio.h>

int main ()
{
  int x, cont=0;
  char  opcion;    
 
  printf("Introduzca el numero deseado: ");
  scanf("%d", &x);
  while( getchar()!='\n');
 
  do{
     printf("\n\nIntroduzca la operacion deseada: \n\n");
     printf(" a. Pares \n");
     printf(" b. Impares \n");
     printf(" c. Todos \n\n");
     printf("Elige opcion: ");
     scanf("%c", &opcion);
     while( getchar()!='\n');
     
     switch( opcion){
       
        case 'a':
           
           if( x%2 != 0){
              x = x + 1;
           }
           printf ("\n%d",x);
           for ( cont = 1; cont < 10; cont ++){
             
              x = x + 2;
              printf(" %d",x);
           }
           break;
           
        case 'b':
           
           if( x%2 == 0){
              x = x + 1;
           }
           printf ("\n%d",x);
           for ( cont = 1; cont < 10; cont ++){
             
              x = x + 2;
              printf (" %d",x);
           }
           break;
           
        case 'c':
           
           printf ("\n");
           for ( cont = 0; cont < 10; cont ++){
             
              x = x + 1;
              printf ("%d ",x);
           }
           break;
           
        default:
           
           printf("\nError - opcion no valida. Seleccione a. b. o c.");
     }
  }while( opcion == 'a' || opcion == 'b' || opcion == 'c');
 
  printf("\n\nPresione ENTER para salir . . .");
  getchar();
  return 0;
}


Y de paso ves tus errores ...

Cuando pones un if(...) no es necesario poner else, si es que no lo vas a usar ...

Cuando el if, else, switch, while, for, etc. llevan más de 1 sentencia se le debe poner llaves.

Nos vemos.
#6
Has un programa que multiplique 2 polinomios de grados M y N respectivamente.

Los datos ingresados por el usuario son los grados de los polinomios y sus respectivos coeficientes.

Ejemplo:

1r polinomio ...

Grado: 6

Coeficientes:

[1]: 7 // Coeficiente Principal
[2]: 3
[3]: 4
[4]: 1
[5]: 2
[6]: 3
[7]: 5 // Término Independiente

El primer polinomio es: 7x^6+3x^5+4x^4+1x^3+2x^2+3x+5

2do polinomio ...

Grado: 4

Coeficientes:

[1]: 5 // Coeficiente Principal
[2]: 4
[3]: 1
[4]: 2
[5]: 6 // Término Independiente

El segundo polinomio es: 5x^+4x^3+1x^2+2x+6

Luego ...

El producto de los polinomios:

  7x^6+3x^5+4x^4+1x^3+2x^2+3x+5

  y

  5x^4+4x^3+1x^2+2x+6

Es:

  35x^10+43x^9+39x^8+38x^7+66x^6+50x^5+65x^4+33x^3+23x^2+28x+30

------------------------------------------------------------------------------------------------------

Nos vemos.

PD: Te ayudaré en lo que no puedas  ;).
#7
Aquí te dejo tu código corregido ...


#include <iostream>
#include <fstream>
using namespace std;

void escribe(char **name, int cont){
       ofstream fs("pw.txt");
       for( int i = 0; i < cont; i++){
           fs<<name[i]<<endl;
       }
       fs.close();
}
void lee( int cont){
 
       char cadena[100];
 
       ifstream fe("pw.txt");
       for( int i = 0; i < cont; i++){
           fe.getline(cadena,100);
           cout<<cadena<<endl;
       }
       fe.close();
}
int main(void){
       int cont=0;
       char **cad;
       char resp='s';
       cad=new char *[100];
       do{
               cad[cont]=new char[100];
               cout<<"Cadena?: ";
               cin.getline(cad[cont],100);
                   
               cont++;
               escribe(cad, cont);
               lee(cont);
               cout<<"Mas [s/n]?: ";
               cin>>resp;
               while(getchar()!='\n'); // esto elimina la basura del buffer que hacía que se salte la lectura de la cadena.
       }while(resp=='s');

       for(int i=0;i<cont;i++)
               delete[]cad[i];
       delete[]cad;
       return 0;
}


El error en tu código está en que tú asumes que *cad es el conjunto de todos los cad[n], pero no es así, *cad es igual - únicamente - a cad[0], ya que *cad sólo apunta a la dirección del 1r elemento de ese vector de cadenas.
#8
Mmm... si dices que aún no has llegado a arreglos, entonces simplemente deberias hacer esas "otras cosas" mientras vas leyendo, ya que si no hasz llegado a arreglos peor aún sería mencionarte listas enlazadas, archivos (extremo).


int i, var, n;

cin >> n;

for( i = 0; i < n; i++){

   cin >> var;

   // INICIO - Operaciones con var.

     ...

   // FIN - Operaciones con var.
}
#9
 -- Mensaje Borrado --
#10
Mmm... 1ro dime porque no quieres con arreglos ;).