• Sábado 15 de Marzo de 2025, 04:26

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - ProfesorX

Páginas: 1 ... 11 12 [13] 14 15 ... 32
301
C/C++ / Re: como asigno un valor a cada posicion de un vector de 10?
« en: Miércoles 6 de Octubre de 2010, 19:27 »
Recomiendo que uses etiquetas [ code] [ /code] (sin espacios en los corchetes) para encerrar el codigo, hace que sea mas legible.

Pues te dire que la manera que lo haces por medio de un ciclo for es la manera correcta, lo estas haciendo bien, pero tienes un error en una linea anterior:

int dim[10]={i};

Esto no es correcto estas declarando un vector para guardar el tamaño de un vector, cuando deberias usar una variable normal para guardar el tamaño.

Corrigiendo ese detalle, el codigo quedaria:

Código: C++
  1.  
  2. int main()
  3. {
  4.     int dim;
  5.     cout << "Ingresa la dimension del vector" << endl;
  6.     cin >> dim; // Supongamos que ingrese 10
  7.     int vector[dim]; // mi vector es de tamaño 10
  8.  
  9.     for(int i=0;i < dim;i++)
  10.     {
  11.         vector[i] = i + i;
  12.         cout << vector[i] << " ";
  13.     }
  14.  
  15.     return 0;
  16. }
  17.  
  18.  

Ahora, si lo que quieres es inicializar el vector sin utilizar un ciclo, entonces en la declaracion del vector, usa corchetes y separa los valores con comas, como en el ejemplo siguiente:

Código: C++
  1.  
  2.     int vector[10] = {3, 6, 9, 12, 15, 18, 21, 24, 27, 30};
  3.  
  4.  
Saludos :)

302
C++ Builder / Re: Ayudita
« en: Lunes 4 de Octubre de 2010, 23:01 »
No se hacen tareas.

El procedimiento correcto, es que lo hagas tu mismo, y entonces, si tienes algun problema con la compilacion, o algun otro error que no puedas resolver, entonces publicas el codigo que hiciste, y entonces te aseguro que alguien te ayudara.

De otra forma, no esperes que alguien haga la tarea por ti.

Saludos :)

303
C/C++ / Re: Liberar el puntero de un puntero
« en: Domingo 3 de Octubre de 2010, 23:08 »
Como bien dice el compañero, por cada malloc, debe de haber un free.

Yo añadiria ademas que por lo regular al liberar punteros, se deben liberar en order inverso a como fueron creados, no es obligatorio, pero si recomendado, ejemplo:

Código: C++
  1.  
  2.     int *puntero1, *puntero2, *puntero3;
  3.  
  4.     puntero1 = (int*) malloc(sizeof(int));
  5.     puntero2 = (int*) malloc(sizeof(int));
  6.     puntero3 = (int*) malloc(sizeof(int));
  7.  
  8.  
  9.     free(puntero3);
  10.     free(puntero2);
  11.     free(puntero1);
  12.  
  13.  

Saludos :)

304
C/C++ / Re: duda con un switch
« en: Viernes 1 de Octubre de 2010, 04:09 »
Lo que sucede es que cuando llamas a main() dentro de default, estas usando algo que de llama recursion, o sea, que estas llamando una nueva version de main(), entonces cuando termina la ejecucion del main mas interno, regresa al main mas externo, y como dentro de cada main() tienes un getchar(), entonces llamaras a getchar() tantas veces como funciones main() hayas llamado.

Entonces ahi tambien esta la respuesta a tu segunda pregunta tambien, no, no es correcto llamar a main() en default, lo correcto seria que utilizaras un ciclo do..while para hacer la validacion de la opcion del menu y regresar al inicio.

Hay ocasiones en que la recursion si es util para ciertas aplicaciones, pero este no es el caso.

Por ejemplo, un ejemplo de una funcion en que pudiera ser util la recursion es para el calculo del factorial,, es mas, te aconsejo que busques informacion de como se calcula el factorial de manera recursiva, para que te des mejor cuenta del uso de la recursion.

Saludos :)

305
C/C++ / Re: Darle un valor a una var dentro de la definicion de una clas
« en: Viernes 1 de Octubre de 2010, 01:03 »
Dale valor a tu variable dentro del metodo costructor de tu clase. Si no sabes que es un constructor, investiga sobre constructores y destructores en C++, solo te dire que el metodo costructor de una clase debe llevar estrictamente como nombre, el nombre de tu clase, asi se diferencia de los demas metodos de una clase:

Código: C++
  1.  
  2. class miclase
  3. {
  4. public:
  5.     int mivariable;
  6.  
  7.     // Este metodo es el constructor, si te fijas
  8.     // tiene el mismo nombre que tu clase
  9.     miclase()
  10.     {
  11.         mivariable = 4;
  12.     }
  13.  
  14. };
  15.  
  16.  
  17.  

Saludos :)

306
C/C++ / Re: Problema struct y strcpy.
« en: Jueves 30 de Septiembre de 2010, 03:11 »
Me parece que ya se cual es el error, que pasa si la cadena que vas a copiar es mas grande que el tamaño de la variable. En ese caso habria corrupcion de memoria, y por lo tanto, un segment fault.

Seria mejor que utilizaras strncpy en lugar de strcpy, ya que de esa forma garantizas que nunca trataras de leer mas caracteres de los que puede guardar tu variable, recuerda siempre leer un caracter menos del tamaño de tu arreglo, para guardar lugar al caracter de fin de cadena ''

En este caso tu variable tiene 19 espacios, entonces lees 18, y en la ultima posicion que es la 18 guardas el ''. Recuerda, los arreglos comienzan en cero, por lo tanto un arreglo de 19 espacios va del 0 al 18

Código: C++
  1.  
  2.      aux=(struct ristras_numericas *)malloc(sizeof(struct ristras_numericas));
  3.      p=strtok(cadena,"!n");
  4.      
  5.      strncpy(aux->ristra_numerica, p, 18);
  6.      aux->ristra_numerica[18] = '';
  7.  
  8.  

Saludos :)

307
C/C++ / Re: Problema raro al ejecutar programa.
« en: Jueves 30 de Septiembre de 2010, 01:30 »
Asegurate que el archivo que quieres abrir, se encuentre en la misma carpeta del ejecutable, y ademas que no este vacio.

308
C/C++ / Re: longitud de puntero a char
« en: Miércoles 22 de Septiembre de 2010, 19:49 »
Citar
En efecto , quiero usar no se como aun..sizeof() y que me de el valor del contenido del puntero, y no el tamaño del puntero en si

Eso nunca lo vas a lograr, aunque te des de topes con la pared.

Sucede que aunque los arreglos y los punteros estan relacionados, y en algunas ocasiones puedes intercambiar el uso de arreglos por el uso de punteros, NO son lo mismo.

Cuando defines un arreglo (en este caso un arreglo de char, pero esto es cierto para cualquier tipo de arreglo, sea int, float, etc), estas reservando una cantidad fija de memoria, que nunca va a cambiar.  O sea que cuando pones char[10] estas diciendo que el arreglo tendra 10 elementos, y eso nunca cambiara en el bloque en que lo hayas definido. Cuando tu colocas cadena[]="hola que tal", aunque no le hayas puesto explicitamente que el arreglo es de 13 caracteres, el compilador deduce automaticamente su tamaño, y no te dejara cambiarlo. Por lo tanto como es una cantidad fija de memoria asignada, sizeof() sabe cuanta memoria utiliza la variable, y te devuelve el tamaño del arreglo, pareciendo que fuera equivalente a strlen(), pero recuerda sizeof() devuelve el valor en bytes, si la cadena fuera de wide char (unicode) los caracteres unicode utilizan 2 bytes, por lo tanto sizeof devovelveria en este caso 25, que seria (12* 2) + 1. y por lo tanto no seria la longitud de la cadena.

Ahora si en lugar de utilizar un arreglo de char utilizas un apuntador a char, no estamos definiendo una cantidad fija de memoria como en el caso de un arreglo, en este caso no es posible saber donde termina, recuerda, los apuntadores solo guardan una direccion en la memoria, en este caso donde comienza el arreglo, pero no donde termina. Entences sizeof solo regresara el tamaño del apuntador. De hecho el tamaño del apuntador NO depende del tipo de variable al que apunta, sino del tamaño de las direcciones de memoria, entonces un apuntador a cualquier tipo de variable, sea char, float, int, etc. todas usaran 4 bytes, ya que en este caso las direcciones son de 4 bytes (o sistema de 32 bits), Cuando comiencen a utilizarse mas los sistemas de 64 bits, el tamaño de los apuntadores seran 8 bytes, y no 4 :)

Es debido a esta imposiblidad de saber donde termina un arreglo cuando se usan apuntadores, que se utiliza el caracter nulo para determinar el fin de la cadena. Internamente la funcion strlen verifica cuando llega al nulo, asi sabe su tamaño.

Esper con esto haberte aclarado la mente un poco respecto a arreglos y apuntadores.

Saludos :)

309
C/C++ / Re: Función con & delante
« en: Sábado 18 de Septiembre de 2010, 20:35 »
A ver, vamos por partes.

El que tu digas que una funcion llamada ObtenerDireccionEntero devuelve la direccion de un entero, no tiene mucho sentido, pues el operador & ya devuelve una direccion, y se puede utiliza para devolver la direccion de cualquier tipo de variable, no solo las de tipo entero, entonces no tiene caso "inventar" una funcion para devolver la direccion de variables, si ya existe un operador en C/C++ que hace precisamente eso.

En segundo lugar, int *ObtenerDireccionEntero(int num), NO devuelve una direccion, en realidad lo que devuelve es un apuntador a un entero, que de manera implicita los apuntadores manejan direcciones de memoria, y que estas direcciones se manejen por medio de enteros, no significa que podamos usar variables de tipo entero como sustituto de variables apuntador. De hecho, segun el tipo de apuntador (char, int, float, etc), el compilador genera el codigo adecuado para manejarlo, ya que cada tipo de variable utiliza internamente diferente cantidad de memoria (char un byte, int 2 bytes, float 6 bytes), entonces cuando declaramos un arreglo dinamico de apuntadores por medio de memoria dinamica (lease malloc, o new) se genera codigo para que se desplace por el arreglo de manera correcta, de esa forma si tenemos un arreglo dinamico de floats, casa vez que el apuntador se mueve hacia adelante, se mueve 6 bytes, y no un byte como si fuera char, no se si me explique lo suficiente.

Por ultimo, si querias saber que pasaria si substituyes * por &, en realidad lo que pasaria es que te devolveria el valor contenido en la direccion de memoria y no la direccion de memoria en si, aunque eso lo podrias saber directamente usando la variable, en lugar de la funcion.

A continuacion te muestro un programa que te muestra los diferentes supuestos. En mi caso me mostro una advertencia porque estoy tratando de obtener la direccion de una variable local que fue destruida, lo que podria causar porblemas si trato de usar esa direccion, ya que como dije antes fue destruida, y entonces usarla podria corromper la memoria de otra variable.

El 1er numero que imprime es la direccion de la variable local num.
El 2o numero veras que es el valor contenido en la variable local num, en este caso 10, que es el que le pasamos como parametro por medio de la variable numero
El 3er Numero es la direccion de numero, obtenido por medio de la funcion.
El 4o  Numero es la direccion de numero, obtenido por medio del operador &, como veras da el mismo numero, con lo que como dje antes, es innecesario crear una funion qe devuelva la direccion, si ya existe.

Saludos :)

Código: C++
  1.  
  2. #include <cstdio>
  3. #include <cstdlib>
  4.  
  5. int r;
  6.  
  7. int *ObtenerDireccionEntero1(int num)
  8. {
  9.    
  10.     return &num;
  11. }
  12.  
  13. int &ObtenerDireccionEntero2(int num)
  14. {
  15.    
  16.     return num;
  17. }
  18.  
  19. int *ObtenerDireccionEntero3(int* num)
  20. {
  21.    
  22.     return &*num;
  23. }
  24.  
  25.  
  26. int main()
  27. {
  28.     int numero = 10;
  29.  
  30.     printf("%dn", ObtenerDireccionEntero1(numero));
  31.     printf("%dn", ObtenerDireccionEntero2(numero));
  32.     printf("%dn", ObtenerDireccionEntero3(&numero));
  33.     printf("%dn", &numero);
  34.  
  35.     return 0;
  36. }
  37.  
  38.  

310
C# / Re: Problema con espacios de nombre
« en: Viernes 10 de Septiembre de 2010, 18:23 »
Las variables que quieres modificar ¿estan explicitamente definidas como public? Si no antepones la palabra clave public antes del nombre de tu variable, no podras acceder a ella, ya que por defecto si no antepones public al nombre de la variable, se considera de tipo private, y solo es accesible dentro de la clase.

Otra forma de acceder a variables en caso de que no quieras definirlas como public, es por medo de propiedades (properties set/get), busca informacion sobre ello.

Saudos :)

311
C/C++ / Re: Error Dev-c++
« en: Martes 7 de Septiembre de 2010, 23:05 »
Esta es la parte relevante
"There doesn`t seem to be GNU Make file in path or in Dev-C++'s Bin path.

Traducido dice: No se encuentra el archivo Gnu Make en la ruta o en la ruta de Dev-c++ bin

Significa que tienes que poner la ruta del archivo mingw32-make.exe, buscalo en tu disco, si no se encuentra, significa que esta mal instalado. Desinstala y vuelve a instalar

Aunque como dijo el compañero, Dev-cpp esta obsoleto, sugiero tambien que utilices Code:blocks, o Visual C++ Express.

Saludos :)

312
C/C++ / Re: Binarios
« en: Lunes 6 de Septiembre de 2010, 18:44 »
El operador and binario convierte a 0 si los alguno de los digitos son cero, y 1 si los dos digitos son uno, o dicho de otra forma:

0 & 0 = 0
0 & 1 = 0
1 & 0 = 0
1 & 1 = 1

Para entenderlo mejor, podrias poner en papel la conversion de los numeros en binario, y asi te das mejor cuenta de como trabaja:

C = 4 = 100 (binario)
si i=0 entonces 1 << i seria 1 << 0, o sea cero corrimiento, por lo tanto 1 << 0 = 001
luego usando el and
100 & 001 = 000

si i=1 entonces 1 << i seria 1 << 1, o sea un corrimiento, por lo tanto 1 << 1 = 010
luego usando el and
100 & 010 = 000

si i=2 entonces 1 << i seria 1 << 2, o sea dos corrimientos, por lo tanto 1 << 2 = 100
luego usando el and
100 & 100 = 100

Repitiendo, y como puedes ver, solamente obtienes 1 cuando los dos digitos son 1, si algun digito es cero, inmediatamente el resultado es cero.

Si tienes mas dudas, como dje antes, escribe la conversion a binario del numero en papel, y te daras cuenta mejor que es lo que pasa.

Saludos :)

313
C/C++ / Re: Error al incluir archivo
« en: Viernes 3 de Septiembre de 2010, 18:51 »
Cita de: "marodal"
Me creo un proyecto General Vacio...mi primera pregunta es: ¿Es este tipo de proyecto el correcto para mi proposito? Tened en cuenta que todos los archivos de mi proyecto van a ser .c y .h

R.- Si.

Citar
Al compilar el proyecto, siempre me da error en un archivo:
c:documents and settingsadministradormis documentosvisual studio 2008projectspcanusr_301.c(46) : fatal error C1083: No se puede abrir el archivo incluir: 'cal_conf.h': No such file or directory

No lo entiendo, por que este archivo se encuentra en el directorio de mi proyecto.

R.- Esto pudiera ser a que por defecto Visual Studio solo busca por archivos de inclusion en los directorios de archivos de inclusion, si el include utiliza <>, ejemplo:

#include <cal_conf.h>

La solucion a esto es a) agregar el directorio del proyecto (o el directorio en donde tengas tus archivos de inclusion .h) a la lista de directorios de inclusion, o b) cambiar <> por "" como en el siguiente ejemplo:

#include "cal_conf.h"

De esa forma, al compilar, buscara el archivo en la lista de archivos de inclusion y en el directorio donde tienes tus archivos de proyecto.

Citar
Otra pregunta que tengo, es que cuando abro el main.c, siempre me pregunta el Visual Studio que si quiero normalizar el archivo, puesto que los finales de linea no son coherentes. Debo aceptar, o denegar.

R.- Acepta, por alguna razon no te reconoce bien el fromato de archivo, asi que normalizalo.

Saludos :)

314
C# / Re: No tengo datagrid
« en: Viernes 3 de Septiembre de 2010, 18:35 »
No se que version de visual studio tengas, ya que no lo mencionas, pero en la version que tengo (2010) el control DataGrid es obsoleto, ahora se utiliza el DataGridView, aunque aun puedes acceder por compatibilidad a la clase DataGrid dentro de System.Windows.Forms, lo siguiente extraido de la documentacion de Visual Studio:

Citar
public class DataGrid : System.Windows.Forms.Control
    Miembro de System.Windows.Forms

Resumen:
Muestra datos de ADO.NET en una cuadrícula desplazable.El control System.Windows.Forms.DataGridView reemplaza y agrega funcionalidad al control System.Windows.Forms.DataGrid; sin embargo, el control System.Windows.Forms.DataGrid se conserva para compatibilidad con versiones anteriores y para uso futuro, si así se elige.

Saludos :)

315
C/C++ / Re: escribiendo binarios
« en: Lunes 30 de Agosto de 2010, 19:21 »
De hecho tu error no esta ahi, todo tu programa esta equivocado, no es la forma correcta de hacer lo que quieres, pero explicarte todo lo que debes hacer, me llevaria demasiado espacio y tiempo, me puedo dar cuenta claramente que te falta experiencia en lenguaje C, asi que te recomendaria que comenzaras con conceptos un poco mas basicos y sencillos antes de ponerte con algo mas avanzado.

Si aun asi, tienes la intension de hacerlo, te aclarare unos puntos y te dare unos consejos para hacerlo, obviamente no todo, pero te guiara un poco mejor en el camino corecto.

1. sizeof() no regresa el tamaño del archivo, solamente regresa el tamaño (en bytes) de variables en memoria. En C los archivos se manejan por medio de variables especiales llamadas apuntadores, entonces el nombre de esa variable no es el archivo en si, es solamente un apuntador al archivo, por lo tanto repitiendo lo dicho antes, usando sizeof(fichOrg) no obtienes el tamaño del archivo, solo el tamaño de la variable apuntador al archivo.

2. El metodo correcto para obtener el tamaño de tu archivo dependera del compilador y del sistema operativo que estes utilizando. Suponiendo que trabajas con Visual Studio y windows (yo solo trabajo en windows), la manera de obtener el tamaño seria por medio de WIN32_FIND_DATA Structure y FindFirstFile. Si utilzas otro compilador u otro sistema operativo, te tocara averiguar la manera de obtener el tamaño del archivo.

Saludos :)

316
C/C++ / Re: Solucionen este conveniente II Gracias
« en: Jueves 26 de Agosto de 2010, 19:27 »
A mi tambien me da 3 con los valores que mencionas, con ese programa, cambiando solamente i=i+1 y c=c+1 por i++, c++, (lo probe de las 4 formas y da lo mismo) asi que me parece que el error lo tienes tu, debes estar cambiando algo mas aparte de los contadores para que te de un resultado diferente.

Saludos :)

317
C# / Re: Novato en C#
« en: Miércoles 25 de Agosto de 2010, 23:25 »
Aplica lo mismo que te explique antes, usa la propiedad Enabled para deshabilitar los botones, solo necesitas añadir a Form1 una variable contador de tipo entero, inicializada con cero, que guarde las veces que borras una imagen y luego en el evento click del boton borrar (o sea en BtnBorrar_Click), incrementas esa variable, y preguntas (if) si el contador es igual a 3, si es verdadero, quiere decir que borraste tres imagenes, y entonces deshabilitas los botones menos el de cerrar.

Saludos :)

318
C# / Re: Novato en C#
« en: Miércoles 25 de Agosto de 2010, 19:21 »
Primero que nada cuando publiques codigo encierralo en etiquetas [ code] [ /code] (sin espacios en los corchetes), ya que mejora la legibilidad del codigo.

Los botones tienen una propiedad llamada Enabled que puede ser true si el boton esta habilitado, y false si el boton no esta habilitado, por defecto Enabled es true, o sea, boton habilitado. Si quieres deshabilitarlo cambialo a false, lo que puedes hacer es que primero dentro del constructor del formulario habilitas/deshabilitas los botones que quieras, y despues dentro del evento click del boton cambias el Enabled del boton que quieras de false a true y viceversa, pongo solo algunos ejemplos:

Código: C#
  1.  
  2.         public Form1()
  3.         {
  4.             InitializeComponent();
  5.             BtnBorrar.Enabled = false;
  6.             BtnMostrar.Enabled = true;
  7.         }
  8.  
  9.         private void BtnMostrar_Click(object sender, EventArgs e)
  10.         {
  11.             //Mostrar el cuadro de diálogo Abrir archivo. Si el usuario hace clic en Aceptar, se carga
  12.             //la imagen que el usuario escojio
  13.             if (openFileDialog1.ShowDialog() == DialogResult.OK)
  14.             {
  15.                 pictureBox1.Load(openFileDialog1.FileName);
  16.                 BtnBorrar.Enabled = true;
  17.                 BtnMostrar.Enabled = false;
  18.             }
  19.         }
  20.  
  21.  

Saludos :)

319
C/C++ / Re: Solucionen este conveniente Gracias
« en: Martes 24 de Agosto de 2010, 19:04 »
El problema esta la condicion del while, preguntas si i < n (n es el limite) pero dentro del ciclo incrementas i antes de sumar el numero, por lo tanto i siempre contendra un numero siguiente al limite, y te sumara un numero mas, o sea que si quieres la suma de los numeros del 1 al 6, te sumara del 1 al 7, si quieres del 1 al 7 te sumara hasta el 8 y asi sucesivamente.

La solucion seria cambiar la condicion de while de menor o igual a solo menor:

Código: C++
  1.  
  2.  while(i<n)
  3.  
  4.  

Haciendo ese pequeño cambio debe funcionar correctamente.

Saludos :)

320
C/C++ / Re: Problema con este codigo
« en: Sábado 21 de Agosto de 2010, 01:43 »
Antes que nada, un consejo, utiliza las etiquetas de [ code][ /code] (sin espacios en los corchetes) para encerrar tu codigo, ya que mejora la legibilidad del mismo.

Ahora, el error esta aca:

Código: C++
  1.  
  2. class empleado{
  3.     char codigo[4];
  4.     char turno[20];
  5.  
  6.  

ya que codigo tiene espacio para 4 caracteres, y necesitas espacio para 5 caracters ya que las cadenas en C/C++ utilizan un caracter adicional llamado nulo '' para representar el fin de la cadena. Entonces tu clave A100 en realidad son 4 caracteres mas el nulo, lo que equivale a 5. Cuando utilices variables para cadenas siempre reserva un espacio adiional para el nulo, o sea si vas a guardar 10, reserva 11, si vas a guardar 15, reserv 16 y asi sucesivamente.

O sea que lo unico que debes cambiar es:

Código: C++
  1.  
  2. class empleado{
  3.     char codigo[5];
  4.     char turno[20];
  5.  
  6.  

Y con eso ya debe funcionar correctamente.

Saludos :)

321
C/C++ / Re: Problema al ejecutar codigo
« en: Miércoles 18 de Agosto de 2010, 03:24 »
Bueno, para empezar, las cadenas en C se representan como vectores de char, entonces un arreglo de cadenas en realidad se representaria como una matriz de char, siendo la fila el numero de cadenas que quieres guardar, y la columna, la longitud de cada cadena o dicho de otra manera, si quieres guardar 6 nombres, y cada nombre contiene 30 caracteres entonces la definicion correcta seria nomb[6][30].

Numero 2: los numeros telefonicos es mas recomendable guardarlos como string y no como int, ya que no vamos a realizar ninguna operacion aritmetica (suma, resta, etc) con ellos, y ademas si el numero es muy largo, no cabria en una variable int. suponiendo que tu numero tiene diez digitos, incluyendo clave de larga distancia lo correcto seria definirlo tel[6][10]

Numero 3, los arreglos en C comienzan en cero, entonces tu ciclo for tambien debe comenzar en cero.

Numero 4, es mas recomendable usar fgets para leer en lugar de scanf o gets, ya que fgets permite especificar cuantos caracteres vamos a leer, y asi evitar un desbordamiento de buffer. la sintaxis de fgets es:

char * fgets ( char * str, int num, FILE * stream );

donde str es la cadena a leer, num es el numero de caracteres a leer, y stream es el archivo de donde vamos a leer, si queremos leer del teclado debemos usar como archivo stdin, que representa la entrada estandar por teclado.

Explicado esto, te pongo parte del codigo con las correcciones hechas, te queda de tarea terminarlo :)

Código: C++
  1.  
  2.     char tel[6][10], nomb[6][30],dir[6][30];
  3.  
  4.     for(i = 0;i <= 5; i++)
  5.     {
  6.         printf("nIngrese datos del individuo %d",i);
  7.         printf("nNombre:");
  8.         fgets (nomb[i], 30, stdin);
  9.         fflush(stdin);
  10.         printf("Direccion:");
  11.         fgets (dir[i], 30, stdin);
  12.         fflush(stdin);
  13.         printf("Telefono:");
  14.         fgets (tel[i], 10, stdin);
  15.     }
  16.  
  17.  

Saludos :)

322
C# / Re: Ayudenme a mejorar este codigo con algun clase
« en: Jueves 12 de Agosto de 2010, 22:15 »
Cita de: "es_binario"
ahora si me puedes decir como pones el codigo en esa libretita ya que se vee mas claro.

Simplemente encierras tu codigo en etiquetas [ code] [ /code] (sin espacio en los corchetes), o si te fijas cuando publicas o respondes un mensaje aparece una barra de herramientas, hay una que dice  code que esta junto a la que dice quote, entonces selecciones tu texto, eliges code y de que lenguaje (Assembly, C, C++, etc.) quieres que te resalte el texto y eso es todo.

Saludos :)

323
C/C++ / Re: Duda con la interepretación de este programa.
« en: Lunes 9 de Agosto de 2010, 19:17 »
Casi correcto.

1. void MinusculasMayusculas(char str[]) //Aqui la matriz str copia el argumento cadena

En realidad no se copìa cadena, sino que trabajas directamente con el contenido de la variable cadena, ya que En C y C++, los arreglos se pasan por referencia y no por valor. O dicho en otras palabras, los arreglos en realidad funcionan como punteros, y como tales, se pasan direcciones, no se copian valores.

2. for( i = 0; str != ''; ++i) //se situa en la cadena letra 0, si es distinto de n aumentara a letra 1 , letra 2, etc...

En realidad inicializa el indice en cero, que seria equivalente a ponerte en la letra cero de la cadena como dices, pero como condicion de salida del ciclo for utiliza str != '' (el caracter '' en realidad es el caracter nulo, no el 'n' que es el salto de linea) ya que las cadenas en C y C++ terminan en nulo (''), por lo tanto preguntar si la letra i de la cadena es nulo, es la manera mas eficiente de verificar que llegamos al fin de la cadena.

3. if(str >= 'a' && str <= 'z') // Si introducimos la 'a' se cumple y seguimos

Aqui preguntamos si la letra i de la cadena se encuentra entre el rango 'a'..'z', es decir, si es una letra minuscula, y de ser minuscula, se entra a la condicion para volverla mayuscula.

Con eso espero que te quede mas claro

Saludos :)

324
C/C++ / Re: inconveniente con typedef struct (c)
« en: Jueves 5 de Agosto de 2010, 20:01 »
Creo que el problema se debio a que era un archivo de C y no de C++, porque el codigo lo probe en C++ y si funcionaba, ya que siempre pruebo mis codigos antes de publicarlos.

En mi caso lo puse en un archivo con extension .cpp y funcionaba sin anteponer el struct dentro de la estructura, pero tu lo tenias en un archivo con extencion .c y dado que Dev-C o mas especificamente, mingw, que es en realidad el compilador, elige que compilador utiliza (C o C++) en base a le extencion del archivo, es por eso que marco error.

Pero si pruebas el codigo en un achivo con extencion .cpp compilara correctamente.

Saludos :)

325
C/C++ / Re: inconveniente con typedef struct (c)
« en: Miércoles 4 de Agosto de 2010, 05:02 »
Debes definir node_t antes de usarlo como tipo, la manera correcta seria:

Código: C++
  1.  
  2. typedef struct node_t {
  3.     node_t* prev;
  4.     void* data;
  5.     node_t* next;
  6. } node;
  7.  
  8.  

Páginas: 1 ... 11 12 [13] 14 15 ... 32