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

#1061
Ya que la solución depende del lenguaje utilizado nos ayudarías indicando cual es. Por favor lee Reglas del subforo.

* En el caso de C mediante la lectura de una linea con fgets y su escaneo con sscanf.

* En el caso de C++ mediante la lectura de una linea con getline y el uso de las clases string y stringstream.

Un saludo
#1062
Cita de: avesudra en  2 Diciembre 2012, 16:46 PM
Hola carlosbds4 , la lógica de tu programa está perfecta , sólo que tenías un error en la línea 11
Esa sentencia esta bien, no se ve porque no utilizo las etiquetas de código y por ello el texto aparece en cursiva.

----

Cita de: carlosbds4 en  2 Diciembre 2012, 16:29 PM
hola necesito un programa que me diga cuantos espacios en blanco hay en una frase por ejemplo

hola me llamo carlos
son 4 espacios en blanco
pero no me sale :( me pordrian ayudar esto es lo k llevo
No quiero sonar grosero pero ese programa es uno de los primeros ejemplos del libro "The C Programming Language".

Supongamos por un momento que, por alguna extraña coincidencia, tu terminas con el mismo programa. Bueno, si lo hiciste tu debes saber muy bien como cuenta los caracteres porque ... los cuenta correctamente. Las modificaciones para contar solo las ocurrencias del carácter ' ' son menores.

Un saludo
#1063
Cita de: carlosbds4 en  2 Diciembre 2012, 17:03 PM
no el problema sigue :( uso devc y el codeblocks pero en ninguno copila
Supongo el lenguaje utilizado es C++, ¿Correcto?

Deficiencias hay muchas. Errores importantes se encuentran en la sentencia condicional:
Código (cpp) [Seleccionar]

if ((txt >="a") && (txt <="z"))
  Lower++;
else if ((txt >="A") && (txt <="Z"))
  Uper++;

Ya que estas comparando direcciones de memoria, para solucionarlo la comparación debe ser entre caracteres indicando el indice en el array para el primer operando y usando caracteres literales para el segundo. De esta forma:
Código (cpp) [Seleccionar]
if (txt[i] >= 'a' && txt[i] <= 'z')
  Lower++;
else if (txt[i] >= 'A' && txt[i] <= 'Z')
  Uper++;


Otros errores que se deben corregir: cambiar los encabezados por los correctos, eliminar la inclusion de conio ya que no la utilizas en tu programa, etc.

Un saludo
#1064
Si no tienes un libro de calidad te conviene conseguir uno, puedes revisar las recomendaciones utilizando el motor de búsqueda de los foros.

Los errores se deben a que esta muy mal estructurado el programa, en seudocodigo debería ser:
Repetir:
   Leer un numero
   Si esta en el intervalo [-15, 15] imprimirlo
Mientras el numero no sea 999


Si eso lo pasamos a lenguaje C el bucle de tu programa con las correcciones es:
do {
   puts("Introduce un valor (999 para terminar):");
   scanf("%d", &t);
   
   if (t >= -15 && t <= 15)
      fprintf(fileOut, "%d ", t);
}while (t != 999);


Otro error es (en tu programa original):
scanf("&d",&t);
Donde el carácter '&' debe sustituirse por '%'.

De nuevo consigue un libro y, para facilitar la detección de errores, compila en el modo mas estricto posible (como hacerlo debe indicarse en su documentación).

Un saludo
#1065
Cita de: thapitufa en  2 Diciembre 2012, 04:05 AMme sale expected primary-expression before else y expected ; before else

esta la parte dode me tira error

if(strncmp(palabra,arreglo,n)==0)
cout<<"la palabra se encuentra en el toke #"<<i+1<<endl;
else
cout<<"la palabra no se encuentra....
Por favor lee las Reglas del subforo.

El primer problema con ese fragmento es copiarlo manualmente, con ello alteraste el original y el error que mencionas no aparece en el.

Las lineas en cuestión se encuentran en su programa (publicado en otro tema) en la función "inicio":
Código (cpp) [Seleccionar]
void inicio(char *s1, char *s2, int n)
{
   char palabra[50];
   int i = 0;
   char *arreglo[i];
   
   for (int j = 0; h < i; j++){
      if (strncmp(palabra, arreglo[i], n) == 0){ // <==
         cout << "La palabra se encuentra en el token #" << i+1 << endl;
      else
         cout << "la palabra no se encuentra en el toke#" << i+1 << endl;
   }
   
   i++;
}

El segundo problema es la cantidad de errores, demasiados en mi opinión. La gran mayoría se solucionan con un poco de esfuerzo y un compilador ejecutado en su modo mas estricto (el error que mencionas se debe a la llave extra en el condicional).

Un saludo
#1066
Cita de: twins en  1 Diciembre 2012, 23:05 PM
Exactamente yo utilizo el compilador mingw, este compilador pone una pausa automaticamente al finalizar el programa
Para ser exactos es el IDE (entorno de desarrollo integrado, por ejemplo Code::Blocks) el que genera la pausa.

Cita de: twins en  1 Diciembre 2012, 23:05 PMtu puedes poner una pausa poniendo antes del return(0) la opcion getchar dos veces si no te funciona debes incluir la libreria #include<stdlib.h>
Dos problemas con esa solución son: 1) Siendo estrictos la pausa no es parte del programa (de nuevo eso es responsabilidad del IDE) y 2) No funciona si en la ultima entrada de datos se introduce un espacio seguido del avance de linea (en ese caso hay que colocar tres llamadas a getchar, historia sin fin).

Por ultimo antes de utilizar la función getchar se debe incluir el encabezado <stdio.h>.

Un saludo
#1067
Cita de: Uqui en  1 Diciembre 2012, 01:08 AMescuche que 6.0 o anteriores son recomendables ya que son independientes del .NET Framework, es eso cierto?
No.

Si tu sistema operativo es MS Windows XP SP2 puedes instalar las versiones express de Visual Studio 2008 (Visual C++, Visual Basic, etc.). Si tu SO es posterior puedes instalar las versiones 2010 o 2012 de esa suit, basta con revisar la sección de requisitos en la pagina de MS. En mi opinión lo mejor es descargar la imagen de disco (el archivo .iso) ya que puedes instalar desde una unidad virtual (o quemarla).

Y no hay problema en cuanto a dependencias: puedes desarrollar aplicaciones en Visual C++ que dependan de ese framework o bien solo utilicen la API del SO, eso queda a elección del programador.

Un saludo
#1068
En un caso ideal estaría separado en dos partes:

* El grueso de tu aprendizaje corre a cuenta de un libro o curso de calidad, puedes revisar recomendaciones sobre los primeros utilizando el motor de búsqueda de los foros.

* Las dudas sobre un tema en particular se resuelven en foros como este.

Un saludo
#1069
Es el operador condicional, una explicación en detalle de su funcionamiento la puedes consultar en un buen libro o en la red (Google no muerde) por ejemplo en esta pagina cortesía de C con clase.

Un saludo
#1070
Solo un comentario:
fgets(ln,79,stdin); // 79 para dejar espacio al NULL del final
Cuando se llama a la función sus argumentos indican donde se localiza el contenedor, la capacidad de este en caracteres y el stream donde se extraerán estos, respectivamente.

La función extrae caracteres del stream y los almacena en el contenedor hasta que se cumpla uno de dos escenarios:

A) El numero de caracteres almacenados es igual a N-1.
B) El carácter almacenado es '\n'.

Cuando eso sucede la función almacena el carácter '\0' en la siguiente posicion y termina retornando la dirección del contenedor (o NULL en caso de error o fin de archivo). Por ende no es necesario reservar manualmente un carácter. En resumen la forma politicamente correcta es:
#define NUM_CHARS  128 /* Solo un ejemplo */

/* ... */

char linea[NUM_CHARS];

/* ... */

fgets(linea, NUM_CHARS, stdin);


----

Pero cuando se utiliza la función scanf (familia incluida) con el especificador "%Ns" si se debe tener esa precaución ya que ella almacena como máximo el numero de caracteres indicados y a continuación almacena el '\0'. Con ella debemos utilizar:
#define NUM_CHARS  128 /* Solo un ejemplo */

/* ... */

char linea[NUM_CHARS];

/* ... */

scanf("%127s", linea);


Para automatizar la generación de la cadena de formato "%127s" se puede utilizar (por supuesto previamente a la llamada) la función sprintf con un array auxiliar.

Un saludo