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

#1
Programación C/C++ / programa punteros c
5 Marzo 2015, 22:01 PM
No se por que el programa se salta el segundo scanf. Ayuda plis

#include <stdio.h>
#include <stdlib.h>

struct D{
   int dato,dato2;
};

int main(){
 
  struct D d;
  struct D *p=&d;
 
  printf("introduce dato: \n");
  scanf("%d",&(*p).dato);
  printf("dato guardado con punto ((*D).dato) %d \n",(*p).dato);
  printf("introduce dato 2: \n");
  scanf("vuelve a escribir un valor para dato(%d)\n",&p->dato2);
  printf("dato guardado por flecha(->) %d \n",p->dato2);
 
  system("PAUSE");
  return 0;
}


GRACIAS.
#2
da un error en la funcion stoi(), a mi me sale que no a sido declarada...falta alguna libreria?¿
#3
Programación C/C++ / Cadenas a variables!! urgentee:(
14 Septiembre 2014, 19:30 PM
alguien tiene idea de como hacer este ejercicio??

Escribir un algoritmo que lea en una línea (hasta que se pulse Return), mediante una
cadena de caracteres, el nombre, la edad y el sexo de una persona y los almacene en tres
variables distintas denominadas nombre, edad y sexo. Por ejemplo, para la entrada
"Pepe 20 v" el contenido de nombre será "Pepe", edad contendrá 20 y sexo 'v'.


tengo echo esto:

#include<iostream>

#define Return='\n'

using namespace std;

typedef TCad [30];

typedef struct{
 TCad nombre;
 unsigned edad;
 char sexo;
}TPersona;

int main(){
 TCad cad,cadaux;
 TPersona pers;  
 char c;
 int i=0;
 cout<< "introducir en una linea nombre edad sexo: ";
 cin.get(c);
 while(c!=Return){
   cad[i]=c;
   i++;
   cin.get(c);
 }
 //cin.getline(cad,30);
//a partir de aqui no se que hacer....!!!!!!!!!!!
 //for(int j=0; j<i ;j++){
   //while(cad[j]!='\n'){
     
     //if(cad[j]!='\0'){
       
     //}
   //}
 //}
}



llego a leer la cadena pero no se como separarla para meterlas en la variable TPersona.... alguna ideaa??Gracias.
#4
Programación C/C++ / Re: getline() !!!
14 Septiembre 2014, 19:22 PM
ajaaa!! muchisimas gracias:))
#5
Programación C/C++ / getline() !!!
13 Septiembre 2014, 16:40 PM
HOLA, miren tengo un problema con esta programa en el getline() este al introducirle mas de un caracter me mete en un bucle he probado a introducirle un cin.ignore o un cin.get() pero nada sigue teniendo problemas el getline(), alguien que sepa su funcionamiento y me explique que le pasa, Gracias:) :-\ :-\


/*Se necesita un programa para gestión de una agencia matrimonial. Por cada cliente se
almacenarán los siguientes datos: nombre, edad, sexo (M,F), aficiones (Lectura,
Viajes, Deportes, Cine, Gastronomía, Ordenadores,
JuegosDeRol, Modelismo,Perros). Una persona puede tener ninguna, uno o
más aficiones. Implementar los subalgoritmos que permitan (definir previamente el tipo
de datos adecuado para almacenar esta información):
a) Introducir en la estructura los datos de una persona
b) Buscar una persona (por el nombre)
c) Dar de baja una persona (eliminar sus datos, se localiza por el nombre)
d) Casar. Dado el nombre de una persona, se busca una afín a ella, se presentan
por pantalla sus datos y se eliminan los dos de la base de datos. Una persona
será afín a otra (a efectos de Casar) si coinciden todas sus aficiones.*/

#include<iostream>
#include<string>

using namespace std;

typedef int listaficiones[3];

typedef struct{
 string nombre;
 unsigned edad;
 char sexo;
 listaficiones aficiones;
}cliente;

typedef cliente NClientes[100];

typedef struct {
   unsigned numero_de_clientes;
   NClientes NC;
}TListaClientes;

void inicializar_registro(TListaClientes &);
void menu();
void registrar(TListaClientes &);
bool buscar(string , int&,TListaClientes);
void mostrar(int , TListaClientes);
bool casar(string , TListaClientes &);
bool borrar(string, TListaClientes &);
bool afic_iguales(int, int&, TListaClientes);
void mosafi(int ,int,TListaClientes );

int main(){
   TListaClientes lista;
   string n;
   char c='\n';
   int nr;
   inicializar_registro(lista);
   menu();
   while(c!='E'){
   cin>>c;
   //toupper(c);
   switch(toupper(c)){
     case 'A' :
         registrar(lista);
         cout<<"Persona registrada."<<endl;
         break;
     case 'B' :
         cout<<"Nombre buscado: ";
         getline(cin, n);
         buscar(n,nr,lista);
         mostrar(nr,lista);
         break;
     case 'C' :
       cout<<"Nombre del cliente que desea borrar: ";
       getline(cin, n);
       if (borrar(n,lista)){
           cout<<endl<< "cliente borrardo."<<endl;
       }
       else cout<<"cliente no existe!!"<<endl;
     break;
     case 'D' : cout<<"Nombre del cliente que desea casar: ";
     getline(cin, n);
     if(casar(n,lista)) cout<<"operacion realizada"<<endl;
     else cout<<"afin no encontrado.";
    }
   }
}

void inicializar_registro(TListaClientes &lis){
 lis.numero_de_clientes=0;
}

void menu(){
 cout<<"A.Registrar persona."
 <<endl<<"B.Buscar persona por nombre."
 <<endl<<"C.Eliminar una persona."
 <<endl<<"D.Casar. Hay que dar un nombre."
 <<endl<<"E.Salir."<<endl;

}
void registrar(TListaClientes &l){
       int sexo;
       cout<<"Este es el registro numero"<<l.numero_de_clientes+1<<endl;
       cout<<"NOMBRE: ";
       getline(cin,l.NC[l.numero_de_clientes].nombre);
       //cin.ignore();
       //cin.get();
       cout<<"Sexo, 1.(masculino) 2.(femenino): ";
       cin>>sexo;
       if(sexo==1){
       l.NC[l.numero_de_clientes].sexo='M';
       }
       else l.NC[l.numero_de_clientes].sexo='F';
       cout<<"Edad: ";
       cin>>l.NC[l.numero_de_clientes].edad;
       cout<<"Elige 3 aficiones: "<<endl<<" 1.Lectura "<<endl<<" 2.Viajes "<<endl<<" 3.Deportes "<<endl<<" 4.Cine "<<endl<<" 5.Gastronomía "<<endl<<" 6.Ordenadores "<<endl<<" 7.JuegosDeRol "<<endl<<" 8.Modelismo "<<endl<<" 9.Perros "<<endl;
       for(int j=0; j<3 ;j++){
           cin>>l.NC[l.numero_de_clientes].aficiones[j];
       }
       l.numero_de_clientes++;

}
bool buscar(string nomb,int& i,TListaClientes lista){
  bool a=false;
  for(int j=0;j<lista.numero_de_clientes;j++){
   if(nomb==lista.NC[j].nombre){
       a=true;
       i=j;
   }
  }
  return a;
}
void mostrar(int s,TListaClientes l){
   cout<<endl<<"Nombre: "<<l.NC[s].nombre;
   cout<<endl<<"Sexo: "<<l.NC[s].sexo;
   cout<<endl<<"Edad: "<<l.NC[s].edad;
   cout<<endl<<"Aficiones: "<<endl;
   for(int i=0; i<3; i++){
       mosafi(i,s,l);
   }
}
void mosafi(int af,int s,TListaClientes lista){
   switch(lista.NC[s].aficiones[af]){
     case 1: cout<<"Lectura"<<endl;
     break;
     case 2: cout<<"Viajes"<<endl;
     break;
     case 3: cout<<"Deportes"<<endl;
     break;
     case 4: cout<<"Cine"<<endl;
     break;
     case 5: cout<<"Gastronomía"<<endl;
     break;
     case 6: cout<<"Ordenadores"<<endl;
     break;
     case 7: cout<<"JuegosDeRol"<<endl;
     break;
     case 8: cout<<"Modelismo"<<endl;
     break;
     case 9: cout<<"Perros"<<endl;
   }
}
bool borrar(string n,TListaClientes &l){
   int i;
   bool a;
   a=buscar(n,i,l);
   if(a){
       for(int j=i; j<l.numero_de_clientes ; j++){
           l.NC[j]=l.NC[j+1];
       }
       l.numero_de_clientes--;
   }
   return a;
}
bool casar(string n,TListaClientes &lista){
   bool a,b;
   int i,j,parej;

   a=buscar(n,i,lista);
   if (a){
      a=false;
      for(j=0; j<lista.numero_de_clientes || a==false ; j++){
       if (lista.NC[j].nombre!=n){
         if(afic_iguales(i,j,lista)) parej=j;a=true ;
       }
      }
   }
 return a;
}
bool afic_iguales(int i, int &j, TListaClientes l){
  bool b=true;
  for(int k=0; k<3 ;k++){
   for(int y=0; y<3 && b==true; y++){
       if(l.NC[i].aficiones[k]!=l.NC[j].aficiones[y]) {
           b=false;
       }
   }
  }
  return b;
}
#6
Hola tengo un problemiya al leer los datos, pongo el nombre y se acaba el programa porque pasa esto?? y otra cosa, el getline es como se introduce una cadena en el string?? GRACIASSS:)

/*3-Una farmacia desea almacenar sus productos en una estructura. De cada producto hay
que almacenar la siguiente información: código, nombre, descripción (cadena de
caracteres), laboratorio, proveedor, precio y fecha de caducidad. Diseñar la estructura de
datos y un procedimiento que permita introducir los datos de un medicamento en esa
estructura.*/

#include <iostream>

using namespace std;

typedef struct{

unsigned codigo;
char nombre;
string descripcion;
char laboratorio;
char proveedor;
unsigned precio;
unsigned fechacaducidad;

}producto;

typedef producto P[20];

int main(){
P p;
cout<<"introduce el producto: "<<endl;
cout<<"NOMBRE: ";
cin>>p[0].nombre;
cout<<endl<<"CODIGO: ";
cin>>p[0].codigo;
cout<<endl<<"PRECIO: ";
cin>>p[0].precio;
cout<<endl<<"DESCRIPCION: ";
getline(cin,p[0].descripcion);
cout<<endl<<"LABORATORIO: ";
cin>>p[0].laboratorio;
cout<<endl<<"PROVEEDOR: ";
cin>>p[0].proveedor;
cout<<endl<<"FECHA DE CADUCIDAD(INTRODUCIR DIAMESAÑO): ";
cin>>p[0].fechacaducidad;

}
#7
El programa me compila perfectamente, pero al introducirle los números se para no hace nada y no encuentro el error, podrían ayudarme por favor:(

Hacer un subalgoritmo que reciba un array de N números enteros y devuelva el valor mínimo de todos.


#include <iostream>
using namespace std;

const unsigned MAX=20; //el array va de 0 a 19 k son los 20 cuadraditos

typedef int nument[MAX];

int minimo(nument);

int main(){
//habia que inicalizar el array?¿
nument num;
int nu;
cout<<" Cuentos numero vas a introducir: ";
cin>>nu;
cout<<"introduce una secuencia de numeros enteros: ";

for(int i=0;i<nu;i++){
   cin>>num[i];
}
num[nu]=' ';
cout<<"El numero mas pequeño es "<<minimo(num)<<endl;

return 0;
}

int minimo(nument Array){
int aux1,aux2;
for(int i=0; i<MAX-1; i++){
  while(Array[i+1]!=' '){
    if(Array[i]>=Array[i+1]){
      aux1=Array[i];
      aux2=Array[i+1];
      Array[i+1]=aux1;
      Array[i]=aux2;
   }
  }
}
return aux2;
}
#8
MUCHAS GRACIAS :) ya me multiplica las matrices perfectas xDD
#9
Tengo un pequeño problema al almacenar la matriz o al calcular el resultado en el subalgoritmo MulMatrizAB(...), podrian ayudarme ha encontrar el problema?? Graciass  :D
El enunciado decia lo siguiente:
Hacer un subalgoritmo que calcule el producto de dos matrices ANxK x B KxM, y lo
almacene en una matriz CNxM.
Aqui les dejo mi codigo:

#include<iostream>

using namespace std;

const int N=2;
const int M=3;
const int K=2;

typedef int MatrizA[N][K];
typedef int MatrizB[K][M];
typedef int MatrizC[N][M];

void mostarResul(MatrizC );
void MulMatrizAB(MatrizA ,MatrizB ,MatrizC &);


int main(){
MatrizA A;
MatrizB B;
MatrizC C;

cout<<"Introduce una matriz A 2x2, por filas " ;
for(int i=0;i<N;i++){
   for(int j=0;j<K; j++){
     cin>>A[i][j];
   }
}
cout<<"introduce una matriz B 2x3, por filas " ;
for(int i=0;i<K;i++){
   for(int j=0;j<M; j++){
     cin>>B[i][j];
     C[i][j]=0;
   }
}
MulMatrizAB(A,B,C);
mostarResul(C);
}
void MulMatrizAB(MatrizA a,MatrizB b,MatrizC &c){
   int z=0;
   for(int i=0 ; i<N ; i++){
     for(int j=0 ; j<M ; j++){
       for(int h=0 ; h<K ; h++){
         z=(a[i][h]*b[h][j])+z;
         if(h==1){
          c[j][i]=z;
          z=0;
         }
       }
     }
   }
}
void mostarResul(MatrizC c){
for(int i=0; i<N ; i++){
   for(int j=0; j<M ;j++){
    cout<<c[i][j]<<"  ";
   }
   cout<<endl;
}
}

#10
Programación C/C++ / TAB CLista de template
10 Junio 2014, 14:02 PM
Buenas el problema que tengo es que no se como usar el template en el cpp del hpp en este programita:


#include <iostream>
#include <string>
#include "TLista.hpp"
using namespace std;
using namespace bblLista;

int main()
{
    char tipo;
    CLista<tipo> a;
    unsigned nnodos;
    char car;
    unsigned num;

    cout<<"MENU:"<<endl<<"1.INSERTAR NODOS"<<endl<<"2.ELIMINAR NODO"<<endl<<"3.ESCRIBIR LISTA"<<endl<<"4.BORRAR LISTA"<<endl;
    cin>>num;
    switch(num){
        case 1:
          cout<<"Cuantos nodos desea insertar? ";
          cin>>nnodos;
          for(unsigned i=0;i<=nnodos; i++){
          cout<<"Introduce el caracter: ";
          cin>>car;
          insertar(a,car);
          }
        break;
        case 2:
          cout<<"Escriba el caracter del nodo que desea eliminar: ";
          cin>>car;
          eliminar(a,car);
        break;
        case 3:
           consultarlista(a);
        break;
        case 4:
           borrarlista(a);
        break;
    }


}


el CLista.hpp

#ifndef _TLISTA_HPP_
#define _TLISTA_HPP_

#include <iostream>
#include <cstdlib>

using namespace std;

namespace bblLista{
  const unsigned int MAX_LISTA = 100; // Máximo tamaño de la lista

  template <typename tipo>
  class CLista{
    public:
       CLista();
       void insertar(CLista &lista, const char car);
       void eliminar(CLista &lista,const char car);
       void consultarlista(CLista &lista);
       void borrarlista(CLista &lista);
    private:

      struct TpNodo{
         tipo car;
         TpNodo *sig;
      };
      typedef TpNodo *puntalista;
      puntalista lista;
      unsigned longitud;
      //metodos pribados
      void insertaralprincipio(CLista &lista, const char car);
      void insertaralfinal(CLista &lista, const char car);
  }; // Fin de CLista
} // Fin de bblLista

#endif


y aqui es donde tengo el problemaa:

#include "CLista.hpp"
#include <iostream>
#include <cstdlib>
using namespace std;
using namespace bblLista;
  template <typename tipo>
  CLista<tipo>::CLista(): longitud(0) {};

  template <typename tipo>
  void CLista<tipo>::insertaralprincipio(CLista lista, const tipo car){
      TpNodo pun;//puntero auxiliar

      pun=new TpNodo;
      pun->car=car;
      pun->sig=lista;//recuerda que esetamos insertando al principio
      lista=pun;//lista señalaba a otro nodoya creado.
  }

  template <typename tipo>
  void CLista<tipo>::insertaralfinal(CLista &lista, const tipo car){
      TpNodo pun;
      pun=lista;
      while(pun->sig != NULL){
        pun=pun->sig;
      }
      pun->sig=new TpNodo;
      pun=pun->sig;
      pun->car=car;
      pun->sig=NULL;

      }



  template <typename tipo>
  void CLista<tipo>::insertar(CLista &lista, const tipo car){
      if(lista !=NULL){
        insertaralfinal(lista,car);
      }
      else insertaralprincipio(lista,car);
      ++longitud;
  }
  void CLista<tipo>::eliminar(CLista &lista,const tipo car){
      TpNodo pun,aux;
      pun=lista;
      while(pun->car!=car || pun->sig !=NULL){
        aux=pun;
        pun=pun->sig;
      }
      if(pun->sig==NULL){
        aux->sig=NULL;
        delete pun;
      }
      else {
        aux->sig=pun->sig;
        delete pun;
      }
     --longitud;
}

template <typename tipo>
void CLista<tipo>::consultarlista(CLista &lista){
      TpNodo pun;
      pun=lista;
      for(unsigned i=0; i<= longitud; i++){
        cin<<pun->car;
        pun=pun->sig;
      }
}

template <typename tipo>
void CLista<tipo>::borrarlista(CLista &lista){
    TpNodo aux;
  while(lista !=NULL){
    aux=lista;
    lista=lista->sig;
    delete aux;
  }
}