|
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 ... 17 18 [19] 20 21 ... 32
451
« en: Domingo 6 de Diciembre de 2009, 22:45 »
Lamentablemente no tengo el Turbo C++, pero me parece que te falta inciuir un archivo. para usar tienes que poner Si eso no resuelve tu problema, deberias poner cual es el error que te marca, para que podamos tener una mejor idea de cual es el problema. Saludos
452
« en: Domingo 6 de Diciembre de 2009, 00:57 »
No se si sea mas simple, pero podrias utilizar una variable de tipo string para guardar el texto. y luego utilizar el metodo Convert.ToByte() para hacer la conversion mediante un ciclo de la siguiente forma. string mensaje = "Hola mundo."; for (int indice = 0; indice < mensaje.Length; indice++) { mBuffer[indice] = Convert.ToByte(mensaje[indice]); }
A ver si te funciona. Saludos
453
« en: Sábado 5 de Diciembre de 2009, 21:49 »
Esas opciones aun existen, solo tienes que hacer un pequeño cambio para activarlas. En el menu Tools/Settings, cambia la configuracion de Basic Settings a Expert Settings. Por eso es bueno revisar todas las opciones nuevas, para descubrir los pequeños cambios  Saludos
454
« en: Viernes 4 de Diciembre de 2009, 19:14 »
Si, por algo SQL se considera el lenguaje por excelencia para manejo de base de datos, es un lenguaje muy poderoso, aunque tambien tiene sus limitaciones, claro  Que bueno que te sirvio la informacion. Saludos
455
« en: Jueves 3 de Diciembre de 2009, 21:39 »
Pues te dire que en el ejemplo ya estas utilizando herencia  en esta linea: class Recorrido:public Coche{
estas diciendo que la clase Recorrido es hijo de la clase Coche, o sea, que hereda de la clase coche. Entonces lo unico que tendrias que implementar son los metodos de cada clase. En los metodos Leer() y Mostrar() de la clase Coche, deberias implementar la lectura de los datos del coche (placa,marca,afab)y mostrar los datos del coche respectivamente. En los metodos Leer() y Mostrar de la clase Recorrido, deberias implementar la lectura de los datos del coche, pero añadirle los datos del recorrido (millas,glncons), y lo mismo para el metodo Mostrar(). Busca ejemplos de herencia y polimorfismo en google, para que te des una mejor idea de lo que debes hacer, pero basicamente solo implementa los metodos. Saludos
456
« en: Jueves 3 de Diciembre de 2009, 21:15 »
Puedes utilizar la clase System.DateTime y la estructura System.TimeSpan para resolverlo. Saludos
457
« en: Jueves 3 de Diciembre de 2009, 21:12 »
Tienes varios errores. 1. En las funciones encriptar y desencriptar regresas un char, pero en el return de las funciones pones 0, o sea nada. 2. Utilizas variables de tipo char para guardar los textos encriptados/desencriptados, cuando deberias utilizar arreglos de char, o sea, encriptar[20], desencriptar[20]. 3. La condicion de los ciclos for esta equivocada, preguntas i = 'n', cuando deberia ser cadena != ' ', ya que lo que debes preguntar es si llegamos al fin de la cadena, ademas ' ' es el terminador de las cadenas.
4. Para imprimir la cadena encriptada/desencriptada utilizas %c, deberias ser %s, una vez que cambies las variables encriptar/desencriptar de tipo char a tipo arreglo de char (o sea, cadena).
5. Tus funciones encriptar/desencriptar regresan un char, cuando deberian regresar un char* (puntero a char), aunque te recomendaria que en lugar de funciones que regresen un valor, utilices funciones void, y mejor pongas como parametros la cadena sin encriptar y la cadena encriptada en la primera funcion, y en la segunda funcion pon como parametro la cadena encriptada y la cadena desencriptada.
Esos serian los principales, corrijelos, y suerte.
Saludos
458
« en: Jueves 3 de Diciembre de 2009, 04:19 »
Primero, por favor no escribas todo en mayusculas, escribir todo en mayusculas, se considera que estas gritando. Segundo. no mencionas si estas usando un manejador de base de datos como SQL Server o MySQL, pero, si tu caso es ese. es facil hacerlo mediante consultas y el operador Like, en combinacion con comodines. Por ejemplo, tomando el ejemplo del libro, la siguiente consulta en MySQL encuentra aquellos libros que contengan las tres palabras al mismo tiempo. SELECT * FROM libros WHERE nombre_libro LIKE '%Caballero%' AND nombre_libro LIKE '%armadura%' AND nombre_libro LIKE '%oxidada%'
La siguiente consulta en MySQL te encuentra aquellos libros que contengan cualquiera de las tres palabras: SELECT * FROM libros WHERE nombre_libro LIKE '%Caballero%' OR nombre_libro LIKE '%armadura%' OR nombre_libro LIKE '%oxidada%'
En MySQL el caracter '%' es el comodin. Si no utilizas MySQL, verifica que caracter utilizan como comodin el manejador de base de datos, y si soporta el operador Like. Saludos
459
« en: Jueves 3 de Diciembre de 2009, 04:08 »
No se hacen tareas.
460
« en: Miércoles 2 de Diciembre de 2009, 22:06 »
dentro de la clase casa tenemos private int n; esto que es? es una propiedad?
Si, si es una propiedad, pero de tipo privado, o sea, que solo puedes acceder a ella cumpliendo el principio de encapsulamiento, segun el paradigma de la POO como te mencione antes, el cual dice (tomado de wikipedia). - Encapsulamiento: Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión de los componentes del sistema. Algunos autores confunden este concepto con el principio de ocultación, principalmente porque se suelen emplear conjuntamente. - Principio de ocultación: Cada objeto está aislado del exterior, es un módulo natural, y cada tipo de objeto expone una interfaz a otros objetos que especifica cómo pueden interactuar con los objetos de la clase. El aislamiento protege a las propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas, solamente los propios métodos internos del objeto pueden acceder a su estado. Esto asegura que otros objetos no pueden cambiar el estado interno de un objeto de maneras inesperadas, eliminando efectos secundarios e interacciones inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstracción. La aplicación entera se reduce a un agregado o rompecabezas de objetos.
El punto de porque se hace asi, te lo marque en negritas, resumiendo, es para evitar efectos inesperados, si accedieramos directamente a la variable miembro. como se supone que get y set van actuar si en esta parte de codigo es cuando se define una propiedad, como get y set pueden actuar al recuperar el valor de dicha propiedad si no se lo estamos pasando, entonces en este caso la propiedad es la que mesione que se encuentra dentro de la clase casa justo antes del constructor la cual es private int n; ? Saludos A ver trato de explicartelo, tu tienes tu propiedad privada n, que representa el numero de habitaciones, si seguimos el principio de encapsulacion, n solo debe poder accederse dentro de la clase, para evitar modificaciones indeseadas a n. Pero en este caso necesitas saber el numero de habitaciones desde fuera de tu clase casa, por lo que creamos mediante get/set una manera de acceder a la variable n. la parte que dice return del get nos regresa el valor de n, y la parte que dice n = value del set, nos guarda el valor en la variable n, value es una variable que se crea atutomaticamente cuando lo usamos dentro de set, para facilitarnos las cosas. ahora, tu podrias olvidarte de la encapsulacion y definir NumHabitaciones de tipo public, lo cual seria equivalente y valido: using System; using System.Collections.Generic; using System.Text; namespace constructor { class casa { //constructor public int NumHabitaciones; public casa(int num) { NumHabitaciones = num; } public double Superficie(double media) { return NumHabitaciones * media; } static void Main(string[] args) { Console.WriteLine(cs.NumHabitaciones); //imprime 3 Console.WriteLine(cs.Superficie(10)); //Imprime 30 Console.Read(); } } }
Nota como elimine la variable interna n, y la reemplace por la variable NumHabitaciones. Pero entonces cualquiera pude acceder a tu variable interna, lo que puede generar cambios inesperados a tu variable, y deja de cumplir con el principio de encaspulacion como dije antes. Espero que con la breve explicacion te quede un poco mas claro. Saludos
461
« en: Miércoles 2 de Diciembre de 2009, 19:09 »
Mucha gente me dice que eso no es del todo sierto que el autor esta mal que esos son metodos y no se q mas.
Pues esa "gente" que te lo dijo esta equivocada, y el autor del libro esta en lo correcto. Las propiedades en C# se definen con set (escritura) y get (lectura), es correcto. Tambien se pueden definir como variables de tipo public dentro de la clase, aunque en el paradigma POO no lo recomienda, en este paradigma se recomienda que nunca se debe acceder directamente a las variables de una clase, estas deben ser siempre privadas (o sea, accesibles solo dentro de la misma clase) y si necesita acceder a ellas, se deben usar "metodos" (en C++) o como te mencionan en el libro por medio de set/get en C#. Saludos
462
« en: Miércoles 2 de Diciembre de 2009, 00:46 »
Te tengo la noticia que aqui no hacemos tareas. Si tienes dudas con algun error que te salga al modificar el programa, te podremos ayudar, pero hacerlo todo por ti no se puede, aunque tengas mucha urgencia por que te hayan enviado el correo tarde Saludos
463
« en: Miércoles 2 de Diciembre de 2009, 00:37 »
Hola el_rolas. El problema no es de C#, es de MySQL, que aunque no mencionaste que motor estas usando deduje que era MySQl por MySqlConnection. En MySQl no existe el comando BACKUP DATABASE, ese comando es de SQL Server. Para hacer respaldos puedes usar la utileria mysqldump, o el comando SELECT * INTO OUTFILE 'file_name' FROM tbl_name. En esta direccion tienes mas informacion: http://dev.mysql.com/doc/refman/5.1/en/backup-methods.htmlSaludos
464
« en: Lunes 30 de Noviembre de 2009, 01:47 »
Tengo una solucion "Facil", pero eso depende de si estas utilizando Visual Studio o no.
Solo ve a Propiedades de Proyecto/General/Juego de caracteres, y descativa el juego de caracteres Unicode, ponlo en "Sin establecer".
De esa formas podra utilizar un char* en lugar de un LPCSTR como parametro de FindFirstFile().
Saludos.
465
« en: Domingo 29 de Noviembre de 2009, 06:50 »
Si, de hecho el manejo de cadenas (string) es basico en C#, los textbox/maskedtexbox guardan todo en la propiedad Text, que en realidad es una cadena (string). Entonces el procedimiento normal es leer todo en cadenas, y dependiendo del tipo de informacion de la cadena, hay que convertirlo al tipo que necesites. Si en un textbox lees un double, conviertes el texto en double, si lees un int, lo conviertes en int, si lees una cadena... bueno, las cadenas no hay que convertirlas a cadena  , pero por ejemplo, supongamos que lees un nombre con apellidos, en un solo textbox, podrias usar el metodo Substring() en combinacion con otros metodos de string para separar los nombres, ya que cada nombre se separa con espacios. En fin, hay muchos metodos interesantes en la clase string, es bueno que le des una leida para que sepas que puedes hacer con las cadenas. Saludos
466
« en: Domingo 29 de Noviembre de 2009, 06:25 »
Lo podias haber buscado en la ayuda del C# pero bueno  El primer parametro indica a partir de que caracter vas a leer (o sea el indice de la cadena), teniendo en cuenta que las cadenas en C# comienzan en cero. El segundo parametro indica cuantos caracteres vas a tomar. Entonces: fechaCad.Substring(0, 2) indica que a partir de la posicion cero, tomes 2 caracteres, o sea, los dos numeros del dia. fechaCad.Substring(3, 2) indica que a partir de la posicion 3 de la cadena, vas a tomar 2 caracteres, o sea, los dos caracteres del mes, pero saltandote los 3 primeros caracteres, que serian "dd/". fechaCad.Substring(6, 4) indica que a partir de la posicion 6 de la cadena vas a tomar 4 caracteres, o sea los 4 caracteres del año pero saltandote los 6 primeros caracteres, que serian "dd/mm/". eespero que con eso te quede acalrado
467
« en: Domingo 29 de Noviembre de 2009, 03:18 »
No podria yo agregarle el comodin a la cadena que creo con el sprintf y despues usar el fopen con esa cadena?. Ya te dije que no se puede, no importa como lo hagas, fopen() no admite comodines, solo permite abrir un archivo a la vez por cada apuntador. En ese caso, lo que podrias hacer, es leer el directorio en base a comodines, (eso si se puede hacer, ya que solo lees los nombres de archivo, no estas abriendo los archivos en si) y entonces por cada nombre de archivo que encuentres que coincida con tu busqueda, lo abres, lees la informacion, lo cierras y lees el siguiente archivo que coincida. El problema es que la manera de leer los nombres de archivo que contiene un directorio, es dependendiente de la plataforma, es decir, del sistema operativo que estas utilizando. Desconozco que plataforma y compilador utilizas, pero, suponiendo que usas Visual C++ y windows  , te muestro un codigo que lee un directorio determinado, utiliza las funciones FindFirstFile, FindNextFile, y FindClose de aqui podrias tomar la base para obtener los nombres de archivo. Esta tomado de la siguiente direccion: http://msdn.microsoft.com/en-us/library/aa365200%28VS.85%29.aspx#include <windows.h> #include <tchar.h> #include <stdio.h> #include <strsafe.h> void DisplayErrorBox(LPTSTR lpszFunction); int _tmain(int argc, TCHAR *argv[]) { WIN32_FIND_DATA ffd; LARGE_INTEGER filesize; TCHAR szDir[MAX_PATH]; size_t length_of_arg; HANDLE hFind = INVALID_HANDLE_VALUE; DWORD dwError=0; // If the directory is not specified as a command-line argument, // print usage. if(argc != 2) { _tprintf(TEXT("nUsage: %s <directory name>n"), argv[0]); return (-1); } // Check that the input path plus 3 is not longer than MAX_PATH. // Three characters are for the "*" plus NULL appended below. StringCchLength(argv[1], MAX_PATH, &length_of_arg); if (length_of_arg > (MAX_PATH - 3)) { _tprintf(TEXT("nDirectory path is too long.n")); return (-1); } _tprintf(TEXT("nTarget directory is %snn"), argv[1]); // Prepare string for use with FindFile functions. First, copy the // string to a buffer, then append '*' to the directory name. StringCchCopy(szDir, MAX_PATH, argv[1]); StringCchCat(szDir, MAX_PATH, TEXT("\*")); // Esta seria una de las partes clave, encuentra el primer archivo // que coincida con el nombre y comodin especificado (szDir). // Find the first file in the directory. hFind = FindFirstFile(szDir, &ffd); if (INVALID_HANDLE_VALUE == hFind) { DisplayErrorBox(TEXT("FindFirstFile")); return dwError; } // Esta es la otra parte clave, el ciclo que impirme el nombre del archivo // y sigue buscando el nombre del siguiente archivo que coincida con el // comodin por medio de FindNextFile // List all the files in the directory with some info about them. do { if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { _tprintf(TEXT(" %s <DIR>n"), ffd.cFileName); } else { filesize.LowPart = ffd.nFileSizeLow; filesize.HighPart = ffd.nFileSizeHigh; _tprintf(TEXT(" %s %ld bytesn"), ffd.cFileName, filesize.QuadPart); } } while (FindNextFile(hFind, &ffd) != 0); dwError = GetLastError(); if (dwError != ERROR_NO_MORE_FILES) { DisplayErrorBox(TEXT("FindFirstFile")); } FindClose(hFind); return dwError; } void DisplayErrorBox(LPTSTR lpszFunction) { // Retrieve the system error message for the last-error code LPVOID lpMsgBuf; LPVOID lpDisplayBuf; DWORD dw = GetLastError(); FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, dw, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL ); // Display the error message and clean up lpDisplayBuf = (LPVOID)LocalAlloc(LMEM_ZEROINIT, (lstrlen((LPCTSTR)lpMsgBuf)+lstrlen((LPCTSTR)lpszFunction)+40)*sizeof(TCHAR)); StringCchPrintf((LPTSTR)lpDisplayBuf, LocalSize(lpDisplayBuf) / sizeof(TCHAR), TEXT("%s failed with error %d: %s"), lpszFunction, dw, lpMsgBuf); MessageBox(NULL, (LPCTSTR)lpDisplayBuf, TEXT("Error"), MB_OK); LocalFree(lpMsgBuf); LocalFree(lpDisplayBuf); }
Si te fijas, el nombre de archivo esta contenido en ffd.cFileName, entonces con eso simplemente harias un fopen(ffd.cFileName) para abrir el archivo. Si te fijas, hay un ciclo que utiliza FindFirstFile y FindNextFile para leer todos los nombres de archivo que coincidan con el comodin especificado. Entonces la apertura/lectura/cerrado de cada archivo tendrias que hacerla en un ciclo  Busca mas informacion en MSDN sobre FindFirstFile, FindNextFile, y FindClose si utilizas windows. Ahora, si utilizas otro sistema operativo y otro compilador, tendiras que buscar la informacion por tu cuenta, ya que yo solo trabajo bajo windows  . Saludos
468
« en: Domingo 29 de Noviembre de 2009, 00:20 »
Es posible, pero no directamente como lo estas haciendo, si te fijas, la funcion DateTime recibe parametros de tipo entero, asi que hay que extraer los valores y convertirlos a tipo entero. Te pongo un ejemplo, suponiendo que la fecha la tienes en una variable con el formato dd/mm/aaaa // Formato de la cadena dd/mm/aaaa fechaCad = "28/11/2009"; fecha = new DateTime (Convert .ToInt32(fechaCad .Substring(6, 4)), Convert.ToInt32(fechaCad.Substring(3, 2)), Convert.ToInt32(fechaCad.Substring(0, 2)));
Ese trozo de codigo es el que utilizo para compara mis cadenas que he leido de un textbox  Si utilizas un formato de fecha diferente, por ejemplo aaaa/mm/dd, deberas modificar los parametros que le pasas a Substring() Saludos
469
« en: Sábado 28 de Noviembre de 2009, 23:53 »
Hola nicksynm, por lo poco que pude leer de la descripcion de tu problema, me parece que estas enfocando mal la manera en que lo debes de resolver, asi que te dare algunos consejos de lo que deberias hacer, a menos claro, que especificamente te dijeron que lo tienes que hacer como lo estas haciendo. Para empezar, te dire que no es posible abrir varios archivos con un mismo fopen(), no sirve de nada usar comodines (* o ?), los comodines solo sirven PARA LISTAR LOS ARCHIVOS QUE CONTIENE UN DIRECTORIO, MAS NO PARA ABRIRLOS. Por lo tanto la sentencia que pones archivo=fopen("idc*","rt") no es valida. Cada archivo que abres necesita un apuntador de archivo (FILE*), o sea que para abrir 10 archivos simultaneamente, necesitarias 10 apuntadores de archivo. Pero ademas tienes un detalle, supon que tienes 50 mascotas, y que cada mascota tiene 20 consultas, eso haria un total de 100 archivos que tienes que abrir. algo muy dificl de manejar. Ademas en tu disco tendrias 100 archivos, cada archivo con solo una linea de texto, lo que no es nada practico. En lugar de eso, yo diria que manejaras solo 4 archivos: Archivo 1. Todos los datos de todos los perros. (id, nombre, raza, dueño, etc) Archivo 2. Consultas de todos los perros (id, datos de la consulta) Archivo 3. Vacunaciones de todos los perros (id, datos de las vacunaciones) Archivo 4. Alergias de todos los perros (id, datos de las alergias) Si te fijas, en el primer archivo irian todos los datos de cada uno de los perros, incluyendo un campo id, que seria unico para cada perro, para saber cuando nos referimos a un perro, y cuando nos referimos a otro diferente. En los archivos siguientes, ya no repetiriamos los datos, solamente pondriamos el id, que es el que identifica al perro, asi sabemos que "X" datos pertenecen a "X" perro, por el id o clave unica. Entonces, cuando queremos saber que consultas ha tenido el perro "X", simplemente pedimos su id, y entonces leemos todo el archivo, pero solamente mostramos en pantalla aquellas consultas cuya id del perro sea igual a la id del perro que queremos. Espero que con estso consejos puedas resolver mejor tu porblema. Saludos
470
« en: Sábado 28 de Noviembre de 2009, 22:40 »
Se que tiene que ver con un codigo llamado Data Timer pero ya le intente acomodar y nada. Creo que no lo lograras, porque no se hace con Data Timer, sino con la clase DateTimeA continuacion un pequeño ejemplo que obtiene los dias transcurridos entre dos fechas que tienen un año de diferencia, o sea que da como resultado 365. using System; namespace ConsoleApplication1 { class Program { static DateTime fecha1 = new DateTime (2000, 12, 1); static DateTime fecha2 = new DateTime (2001, 12, 1); static TimeSpan tiempoTranscurrido; static void Main(string[] args) { tiempoTranscurrido = fecha2.Subtract(fecha1); Console.WriteLine(tiempoTranscurrido.Days); } } }
Saludos
471
« en: Sábado 28 de Noviembre de 2009, 02:07 »
Se abrir el archivo y tambien cerrarlo, pensaba usar el sprintf para asignarle el nombre al archivo. Tambien lo puedo usar para guardar datos en el mismo?. No, para guardar datos usa fprintf como te mencione arriba, no sprintf. Es casi igual que todos los printf, pero en lugar de enviar los resultados a pantalla ( printf) o a una cadena, ( sprintf) te los manda a un archivo. Saludos
472
« en: Viernes 27 de Noviembre de 2009, 19:43 »
Puedes usar las funciones de C fopen(), fclose() y fprintf(), abre el archivo como texto con fopen(), y en la funcion fprintf separa tus argumentos con comas, y agrega un n al final de fprintf para que cada registro te quede en una linea algo mas o menos asi: fprintf(miarchivo , "%s,%s,%,%s,%s,%d,%d,%dn", consulta.motivo, consulta.diagnostico, consulta.tratamiento, consulta.veterinario, consulta.fechacontrol.aa, consulta.fechacontrol.mm, consulta.fechacontrol.dd);
Cuando termines usas fclose() para cerrar tu archivo. Saludos y suerte
473
« en: Jueves 26 de Noviembre de 2009, 20:22 »
te acabo de decir que hacer long double suma(var), resta(var), producto(var); es incorrecto, ademas esta en el lugar incorrecto de tu codigo fuente. para que te des una mejor idea, dberias tener algo asi: #include<stdio.h> #include<string.h> #include<conio.h> // Las cabereras de funciones van antes del main, no dentro del main // y separadas cada cabecera en su propia linea, y no todas // las cabeceras en una sola linea, y finalizadas cada una // con punto y coma long double suma(int V[], int elementos); long double resta(int v[], int elementos); long double producto(int v[], int elementos); int main() { // Codigo de tu programa return 0; }
474
« en: Jueves 26 de Noviembre de 2009, 20:07 »
El compañero tiene razon, si
float suma(var), resta(var), producto(var);
son cabeceras de funciones, no se declaran asi, deben ir ANTES DEL MAIN, y cada cabecera en su propia linea, no se pueden declarar todas las cabeceras en una misma linea como con las variables. Aun asi esta mal lo que haces ya que la sentencia
var = int V[];
no es valida ya que var es de tipo float e int v[] es un arreglo (array) de enteros, los tipos no son compatibles.
otro error, a la hora de definir encabezados de funciones, es necesario definir el tipo de los parametros
float suma(var);
es incorrecto como cabecera de funcion, deberia ser:
float suma(float var);
Me sospecho que tu codigo tiene muchos mas errores, aun cuando creas que el resto de tu codigo esta bien, ya que el compilador no siempre marca todos los errores, a veces algunos errores enmascaran otros, es casi seguro que cuando corrijas los errores del principio, te salten mas errores en la parte de abajo, asi que buena suerte.
Saludods :=
475
« en: Jueves 26 de Noviembre de 2009, 19:42 »
Igual que el compañero te recomiendo que uses etiquetas [ code][ /code] (sin espacio) o la lista desplegable de arriba que dice code, hace que el codigo sea mas facil de leer. Como bien apunta el compañero, la lectura la haces al final del ciclo y no al principio, ademas tienes una lectura inecesaria antes del ciclo while, y tambien la condicion de terminacion del ciclo esta mal, ya que tu contador inicia en cero, deberia ser while (cn<5), ya que de 0 a 4 son 5 numeros. De la forma en que lo haces, en realidad estas leyendo 7 veces, no 5, es raro que no notaras que haces 7 lecturas al ejecutar el programa. Tambien tienes un error de logica en esta parte: while(cp!=0) { prom=sne/cp; }
Si cp != 0 entonces se crea un ciclo infinito, ya que no modificas el valor de cp dentro del ciclo. Lo mas seguro es que querias sacar el promedio solo si habias leido positvos, por lo que deberias usar un if en lugar de un while. Esos son los errores de logica que note a simple vista, quizas tengas mas, asi que te recomiendo que leas un poco mas sobre porgramacion en C/C++ y hagas mas ejercicios, para que poco a poco vayas entendiendo un poco mas sobre el lenguaje. Saludos
Páginas: 1 ... 17 18 [19] 20 21 ... 32
|
|
|