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

#1021
Programación C/C++ / Re: Duda en programa
23 Diciembre 2012, 02:12 AM
No es por desanimar pero deberías recomendarle a tu profesor que lea |Lo que no hay que hacer en C/C++. Nivel basico|, eso porque casi todo el programa deja mucho que desear (desde la perspectiva de enseñar bien el lenguaje C++).

Código (cpp) [Seleccionar]
for(int i=0;i<strlen(palabra);i++){//esta parte no la entiendo
Revisa tu material de referencia, la sección sobre bucles. Si no tienes un buen curso o libro revisa las recomendaciones mediante el motor de búsqueda de los foros.

Código (cpp) [Seleccionar]
if(!isalpha(palabra[i])){//esta parte no la entiendo
La función isalpha retorna verdadero si el carácter pasado como argumento es alfabético.

Debido a que la condicion utiliza el operador de negacion "!" la puedes leer así: "Si el carácter en la posición 'i' de la cadena 'palabra' NO es alfabético entonces ...".

Código (cpp) [Seleccionar]
else total++;//esta parte no la entiendo
El operador "++" incrementa el valor de la variable en una unidad.

Por ultimo el comentario en el programa esta mal ya que este solo cuenta el numero de caracteres alfabéticos en la frase. De nuevo si no tienes un libro o curso de calidad a conseguir uno. Y dale un buen zape a tu profesor.

Un saludo
#1022
En un plano teórico si procesas un archivo mediante la llamada a función, después el siguiente archivo (otra llamada), etc. entonces no, no deberías tener problemas.

Pero seria mejor que publicaras el código fuente de la función, así podemos darte una respuesta sin dejar lugar a dudas.

Un saludo
#1023
Cita de: arcadio2r en 20 Diciembre 2012, 11:08 AMLa pregunta que hago hace referencia a un "void main". En este caso, el codigo finaliza correctamente con y sin el "exit(x)". ¿Pero sin el exit el compilador liberará los recursos del proceso?
No se recomienda el uso de "void main()" porque su soporte depende del compilador utilizado y, si se soporta, utilizar "return N;" (en main) o "exit(N);" es un error ya que la definición utilizada no permite retornar un valor. Mas información en la pagina |Lo que no hay que hacer en C/C++. Nivel basico|

En cuanto a recursos depende a que te refieras. El estándar de C solo indica que en una terminación normal del programa los bufers se vacían, los archivos se cierran y algunos otros detallitos mas (por ejemplo los archivos creados mediante la función tmpfile se eliminan).

Para cualquier otro recurso no hay otra opción que revisar la documentación del compilador.

Un saludo
#1024
Cita de: Bl4ck3lf en 20 Diciembre 2012, 16:54 PMlo que quiero aprender a hacer es con un for pedirle al usuario los 5 números y que los guarde en su respectiva variable para poder trabajar después con ellas, no ir preguntando y guardando una por una, que es mas código, menos profesional y mas engorroso.
En C no puedes generar el nombre de una variable en tiempo de ejecución (como muestras en el script con num + 1 ==> num1, num + 2 ==> num2, etc.).

En su lugar y como ya te comentaron debes utilizar un array, en cada iteracion del bucle utilizas "num[ i ]" para indicar el objeto con indice "i" en el array "num".

Un saludo
#1025
Programación C/C++ / Re: tipos de enteros en C
20 Diciembre 2012, 02:24 AM
Cita de: lucaslopez0000 en 19 Diciembre 2012, 21:11 PMme refiero a la interfaz de uso del programa , un poco liosa encontrarle las opciones .
el compilador es bueno ( derivado de gcc ) , pero el IDE es poco intuitivo ( a mi parecer )
Un principiante en C o C++ para crear un proyecto en Dev-C++ solo tiene que utilizar las opciones de menú para Nuevo proyecto, aplicación de consola, etc. Otra opción es utilizar el administrador de archivos para crear el archivo con extensión .c o cpp (dependiendo del caso) y, si no se han modificado el manejo de extensiones, doble clic y con ello se abre el archivo en Dev-C++.

Una vez editado el código fuente para compilar y ejecutar se seleccionan las opciones de menú Ejecutar --> Compilar y Ejecutar --> Ejecutar.

Mi punto es, a Dev-C++ se le puede criticar por sus limitaciones y falta de actualizaciones pero decir que no es intuitivo me parece difícil de argumentar.


Cita de: lucaslopez0000 en 19 Diciembre 2012, 21:11 PMEs que yo soy muy arcaico  ;D y uso gedit y gcc desde la terminal ¿ problem ?
En ese caso me extraña que, en estos momentos y en MS Windows, no utilices un editor de texto para programadores (Emacs, XEmacs, gVim, SciTE, etc.) y un entorno similar a Linux (por ejemplo Cygwin). Mas cerca de Linux no se puede y, con un poco de suerte, asunto solucionado.

Un saludo
#1026
En el lenguaje C para terminar una aplicación desde la función main basta con una sentencia "return N;" ya que en esa función es equivalente a "exit(N);".

Desde cualquier otra función debes utilizar "exit(N);".

Un saludo
#1027
Programación C/C++ / Re: ayuda en c vectores
18 Diciembre 2012, 15:37 PM
Cita de: howaboutno en 18 Diciembre 2012, 13:55 PMestaba pensando en esto pero no cuenta...
sugerencias?
Antes de realizar el bucle debes asignar los valores a los elementos del array. En el bucle debes verificar si el elemento v[ t ] es igual a valor o valor por dos.

Y cuando tengas una duda lo mejor es publicar código compilable, en buen cristiano el programa completo.

Un saludo
#1028
Programación C/C++ / Re: problema en c
18 Diciembre 2012, 15:32 PM
Cita de: winnipu en 18 Diciembre 2012, 11:20 AMAsi lo he dejado:
Veis algun error?
Se te olvido la asignación a la variable "mayor", debería ser (las llaves estaban de mas):
int i,x,mayor;

mayor = valor[0];
for (i = 1; i < 10; i++)
   if (valor[i] > mayor)
      mayor = valor[i];


Dos recomendaciones: no coloques comentarios en cada linea indicando lo que hace el lenguaje y cambia esta expresión de la forma en que ya te indique:
if((valor[i]-x)>0) ...

Un saludo
#1029
Algo que preocupa, en base a los fragmentos de código fuente, es no utilizar la biblioteca estándar de C++. Por ejemplo puedes leer la linea con getline, obtener las palabras de ella con un objeto de tipo stringstream, evitar los duplicados con un mapa, etc.

Un ejemplo de ello (sin validaciones) es:
Código (cpp) [Seleccionar]
#include <iostream>
#include <string>
#include <sstream>
#include <map>
#include <vector>
#include <algorithm>
using namespace::std;

typedef vector<map<string, int>::iterator>::size_type vec_iter_sz;

bool cmp(map<string, int>::iterator a, map<string, int>::iterator b);

int main()
{
   cout << "Introduce la linea: ";
   string linea;
   getline(cin, linea);
   
   stringstream in(linea);
   string palabra;
   map<string, int> frec;
   vector<map<string, int>::iterator> ndx;
   while (in >> palabra) {
      map<string, int>::iterator it = frec.find(palabra);
     
      if (it == frec.end()) {
         frec[palabra] = 1;
         ndx.push_back(frec.find(palabra) );
      } else
         frec[palabra]++;
   }
   
   sort(ndx.begin(), ndx.end(), cmp);
   for (vec_iter_sz i = 0; i != ndx.size(); i++)
      cout << ndx[i]->first << " (" << ndx[i]->second << ")" << endl;
     
   return 0;
}

bool cmp(map<string, int>::iterator a, map<string, int>::iterator b)
{
   return a->second < b->second || a->second == b->second && a->first <= b->first;
}


Un saludo
#1030
Programación C/C++ / Re: tipos de enteros en C
18 Diciembre 2012, 02:44 AM
Cita de: lucaslopez0000 en 17 Diciembre 2012, 18:42 PMEspero que no me comais , pero no tengo pc personal y voy al del ciber , que como todos , tienen el podrido winbugs. [...] No se si será cosa del podrido dev c++ ( con lo bonito que era en linux con gedit y gcc  :-( )
No quiero sonar grosero y tampoco es mi intención iniciar una flamewar pero me parece que te estas dejando llevar por el prejuicio. Si consideramos que los compiladores utilizados con Dev-C++ son versiones de gcc para MS Windows (MinGW y CygMing) no veo como pueda existir tal diferencia a menos (y de nuevo) que sea debido a una cuestión de percepción.

Cita de: lucaslopez0000 en 17 Diciembre 2012, 18:42 PMEn definitiva : ¿ Existe algun tipo de variable que cambie su tamaño a medida que se requiera mas espacio ?
No. En C el tamaño de los tipos esta dado en bytes. Siguiendo tu ejemplo los valores 9 y 130 son de tipo int y utilizan un espacio igual a "sizeof(int)", cualquier operación entre ellos (aritmética, a nivel de bits, etc.) siempre se realiza como mínimo con ese tipo.

Como ya te comentaron si requieres de soporte para números realmente grandes fuera del rango del tipo "long" (C90) o "long long" (C99) la solución es una biblioteca de terceros.

Un saludo