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

Páginas: 1 ... 83 84 85 86 87 [88] 89 90 91 92 93 ... 100
1741
Te recomiendo que vayas resolviendo partes del programa poco a poco.

Una parte será el reconocimiento de las teclas del teclado. Tienes que comprobar que puedes reconocer las flechas y teclas que te hagan falta. Esto lo puedes hacer con esto.

Código: [Seleccionar]
#include <stdio.h>
#include <conio.h>
/* Press Esc to quit */
#define ESC 27
int main() {
    int ch;
    while ((ch=getch()) != ESC) {
        printf("%d",ch);
       /*
        while (kbhit()) {
            printf(" %d",getch());
        }
        */
        if (ch==72) {printf("Detectada pulsacion flecha arriba");}
        printf("\n");
    }
    printf("ESC %d\n",ch);
    return 0;
}

Otra parte será definir la matriz y representarla en pantalla. Puedes probar a crear la matriz como matriz de números enteros aleatorios comprendidos entre 1 y 100 y redibujar la matriz cada vez que se pulse enter.

Posteriormente pasarías al desarrollo de la lógica del programa...


1742
A mí simplemente cambiando el for para que en vez de buscar palabras hasta el final del array busque hasta la longitud válida parece que me funciona bien

Código: [Seleccionar]
//-------------------------------Contador palabras------------------------------
P=0;
for(x=0;x<longi;x++){ //Aquí no debes recorrer hasta 500 sino hasta longitud de cadena
 if(cad[x]==' ' && x!=499 && cad[x+1]!= ' '){
  P++;
  }
}
printf("\nCantidad de Palabras: %d",P+1);

Por ejemplo:

Ingrese un texto: no es cosa de dos

Cantidad de Palabras: 5
Cantidad de Vocales: 6
Cantidad de caracteres: 13
Porcentaje de vocales: 46 Por ciento
Texto al reves:  sod ed asoc se on
Con piso: no_es_cosa_de_dos

Esto parece que está todo correcto.


1743
Codeblocks, lo tienes disponible tanto para windows como para linux y te permite trabajar tanto con c como con c++

La mayoría de la gente prefiere trabajar con un entorno de desarrollo porque ofrece más comodidades (yo mismo suelo trabajar así normalmente).


1744
Habría que revisar con calma muchas cosas para poder determinar algo, el problema puede venir por distintos motivos.

Aparentemente dev-c++ es un proyecto abandonado, y la alternativa sería Orwell Dev-C++, http://sourceforge.net/projects/orwelldevcpp/

Pero desconozco si va bien o no.

Generalmente codeblocks suele ir bien, http://www.codeblocks.org/downloads/26

codeblocks-13.12mingw-setup.exe te instala el ide y el compilador mingw.

Si te decides por instalar otro entorno, posiblemente si sería aconsejable desinstalar previamente lo que tengas, de cualquier manera ten cuidado con las instalaciones y desinstalaciones porque podrías perder cosas si no haces copia de seguridad. También se presenta el problema de no tener garantías sobre el correcto funcionamiento de la nueva instalación, así que no tomaría la decisión demasiado rápido.


1745
A mí el código que te puse en la respuesta anterior sí me funciona bien, o eso parece. Por ejemplo:

Introduzca la llave de búsqueda entera: 6
0
1
2
Encontre el valor en el elemento 3



Introduzca la llave de búsqueda entera: 5
0
1
2
...
hasta 99
Valor no encontrado


Introduzca la llave de búsqueda entera: 100
0
1
2
...
Encontre el valor en el elemento 50


Si tú no obtienes estos resultados puede estar relacionado con algún detalle de la configuración del ide o compilador que estés utilizando.

1746
Si te digo la verdad he leído el enunciado y no lo entiendo bien. Necesitaría un ejemplo para poder entender cosas a las que se refiere, por ejemplo habla de un número central, pero que yo sepa una matriz no tiene un número central, no sé bien a qué se refiere.


1747
Has indicado que cambiaste el código, pega el código tal y como lo tengas ahora para poder revisarlo a ver si encuentro el problema, saludos

1748
hola, comprueba que sea el último espacio si se trata de varios espacios.

Para ello puedes usar:

Código: [Seleccionar]
if(cad[x]==' ' && x!=499 && cad[x+1]!=' ')

Se trataría de comprobar:

- Que no estés en la última letra, si es así no habría que contar palabra
- Que después de ese espacio no venga otro espacio, si es así no habría que contar palabra



1749
A mí el código que has puesto sí me funciona bien, me devuelve el índice del array donde se encuentra el elemento buscado, pero el diseño de la recursión con una variable estática dentro de la función recursiva no es un buen diseño por varios motivos. Para no hacer esto hay varias soluciones posibles, una de ellas introducir el parámetro de evolución dentro de la propia llamada recursiva (con lo cual no dependes de una variable estática), como en este código:

Código: [Seleccionar]
// Ejercicio 6.34: búsqueda lineal (recursivo) //

#include <stdio.h>
#define TAMANIO 100

/* prototipo de la función */
int busquedaLineal( const int arreglo[], int llave, int tamanio, int n );

/* la función main comienza la ejecución del programa */
int main() {
    int a[ TAMANIO ]; /* crea el arreglo a */
    int x; /* contador para inicializar los elementos de 0 a 99 del arreglo a */
    int llaveBusqueda; /* valor para localizar en el arreglo a */
    int elemento; /* variable para almacenar la ubicación de llaveBusqueda o -1 */

    /* crea los datos */
    for ( x = 0; x < TAMANIO; x++ ) {
        a[ x ] = 2 * x;
    } /* fin de for */

    printf( "Introduzca la llave de busqueda entera:\n" );
    scanf( "%d", &llaveBusqueda );

    /* intenta localizar llaveBusqueda en el arreglo a */
    elemento = busquedaLineal( a, llaveBusqueda, TAMANIO, 0);

    /* despliega los resultados */
    if ( elemento != -1 ) {
        printf( "Encontre el valor en el elemento %d\n", elemento );
    } /* fin de if */
    else {
        printf( "Valor no encontrado\n" );
    } /* fin de else */

    system("pause");
    return 0; /* indica terminación exitosa */

} /* fin de main */

/* compara la llave con cada elemento del arreglo hasta que localiza el elemento
   o hasta que alcanza el final del arreglo; devuelve el subíndice del elemento
   si lo encontró o -1 si no lo encontró */
int busquedaLineal( const int arreglo[], int llave, int tamanio, int n ) {

    /* ciclo a través del arreglo */
    if (n < tamanio) {

        if ( arreglo[ n ] == llave ) {
            return n; /* devuelve la ubicación de la llave */
        } /* fin de if */
        else {
            printf("%d\n", n);
            busquedaLineal( arreglo, llave, tamanio, n+1 );
        }

    } /* fin de if */

    else {
        return -1; /* llave no encotrada */
    }

} /* fin de la función busquedaLineal */

Aquí puedes ver algunas referencias:

Rather than using a static variable for index, it would be better to pass it in as an argument to recursive; otherwise, the function is non-reentrant.

http://stackoverflow.com/questions/1697777/recursion-using-c-language

Which has the benefit of not requiring the caller to supply an argument to foo() and also you don't need a static variable (which I always feel is a bad idea).

http://stackoverflow.com/questions/1316809/recursive-function-with-static-variable

1750
Para plantear una función recursiva tienes que definir cuál es el caso base que te permite terminar la recursión, así como una condición que haga ir evolucionando la recursión.

Pareces tratar de hacer evolucionar la recursión usando la variable letra, pero letra está declarada dentro de la función recursiva, con lo cual se crean tantas copias de esta variable como llamadas se hagan a la función.

La llamada pruebaPalindromo(palabra, longitud ); siempre te estaría devolviendo lo mismo, no habría evolución... no veo claro cómo lo quieres plantear ¿cuál es tu idea?

1751
Esto es un ejemplo en este caso usando charAt para extraer los caracteres, length para comprobar la longitud e isDigit para comprobar si es un número:

Código: [Seleccionar]
import java.util.Scanner; //Importación del código de la clase Scanner desde la biblioteca Java
//Código de nuestra clase principal ejemplo aprenderaprogramar.com

public class Ejemplo {
    public static void main (String [ ] args) {
        boolean entradaNumerica = true;
        String entradaTeclado ="";
        System.out.print ("Introduzca un número de 3 dígitos: ");
        Scanner entradaEscaner = new Scanner(System.in);
        entradaTeclado = entradaEscaner.nextLine (); //Invocamos un método sobre un objeto Scanner
        System.out.println ("Entrada recibida por teclado es: \"" + entradaTeclado +"\" ... análisis de longitud");   

        if (entradaTeclado.length() != 3) {
            System.out.println ("No tiene longitud 3, entrada no válida");
        } else { System.out.println ("La longitud es correcta");}

        for (int i=0;i< entradaTeclado.length(); i++) {
            System.out.print ("Analizando si caracteres son dígitos..." + entradaTeclado.charAt(i));

           
            if (Character.isDigit(entradaTeclado.charAt(i)) == false) {
                System.out.println (" ... no es un número, entrada no válida");
                entradaNumerica = false;
                break;

            } else {System.out.println(" ...ok"); }

        }
        if (entradaNumerica == true) {System.out.println ("Todos los caracteres son números"); }
        else {System.out.println ("Hay caracteres no numéricos"); }

        System.out.println ("Proceso de análisis terminó");

    }
}

1752
El código:

opcion=teclado.nextInt();
      
      if (opcion==5){

Lo que hace es comprobar si el usuario introdujo el número 5. Si quieres comprobar que sea un número de 5 dígitos tendrás que usar otro tipo de condicional, por ejemplo convertir la entrada de teclado a un string y después comprobar carácter a carácter si lo introducido es un número o no, y si hay cinco caracteres o no. Puedes usar el método isdigit del api java para comprobar si un carácter es un número.

Si estás usando scanner, puedes usar nextLine para capturar la entrada, eso te devuelve un String, luego comprobar el número de caracteres del string recorriéndolo.

Si pones el código completo lo intento mirar, lo que has puesto parece que es un fragmento y no se puede compilar.  Saludos

1753
Hola, el fallo está en el mismo concepto de excepción que estás considerando.

Si el usuario debe introducir un número que empiece por 5 o que tenga 5 dígitos y no lo hace, esto no genera un error java (una excepción), desde el momento en que el método nextInt() que estás utilizando admite que se le pase cualquier número. Por tanto no debes pensar en tratar con un try - catch una situación de este tipo.

Si el usuario introduce un número que no empieza por 5 está incumpliendo una condición, y el cumplimiento o incumplimiento de condiciones se deben tratar con condicionales if...

if (primerNumero == 5) { ... tratamiento normal ... } else { ... mensaje de error ... }


Una excepción java puede ser un acceso a fichero que está dañado o no existe, una inderminación matemática, o incluso que el usuario introduzca una letra cuando se usa el método nextInt(), o que introduzca un número excesivamente grande (fuera del rango de los int) dado que java espera un tipo int y se le pasa otra cosa. En ese caso sí podrías hacer uso de la gestión de errores con try - catch, pero no para el caso de que no se cumpla una condición, sino para el caso de generarse una verdadera excepción. Saludos  ;D

1754
El primer punto relativo a mostrar un número de pares e impares iniciales en la serie pienso que se puede resolver así:

Usar las variables numeroInicio y numeroFinal para guardar los datos de los números de inicio y fin de la serie

Usar las variables numeroParesAMostrar y numeroImparesAMostrar para definir cuántos números pares o impares de la serie se deben mostrar (comenzando por el principio de la serie)

Usar las variables paresMostrados e imparesMostrados para controlar cuántos pares o impares se han mostrado ya.

Usar la variable parActual e imparActual para saber el próximo número que se debe mostrar.


El proceso sería este:

a) Pedir al usuario el número inicial y final
b) Indicarle al programa cuántos números impares y cuántos pares debe mostrar
c) Determinar si el primer número es par o impar. Si es par, para mostrar impares tendremos que comenzar por el número superior inmediato. Por ejemplo si el usuario introdujo 66 el primer impar a mostrar será 67.
d) Realizar un bucle que vaya mostrando números impares sucesivamente hasta llegar a mostrar el número de impares deseados


Supongamos que introducimos como número inicial 44 y como número final 66, y que numeroImparesAMostrar vale 7. En ese caso se nos mostrarían: 45, 47, 49, 51, 53, 55, 57

Si numeroImparesAMostrar valiera 2 se nos mostraría: 45, 47

Si numeroImparesAMostrar valiera 4 se nos mostraría: 45, 47, 49, 51


El código sería el siguiente (está en Visual Basic, pero creo que viendo la estructura lo puedes pasar al lenguaje que estás utilizando tú):

Código: [Seleccionar]
Public Class Form1
    Dim numeroInicio As Integer
    Dim numeroFinal As Integer
    Dim numeroParesAMostrar As Integer
    Dim numeroImparesAMostrar As Integer
    Dim paresMostrados As Integer
    Dim imparesMostrados As Integer
    Dim parActual As Integer
    Dim imparActual As Integer


    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        numeroParesAMostrar = 2
        numeroImparesAMostrar = 7
        numeroInicio = Val(InputBox("Introduzca número inicial", "Introducción de número"))
        numeroFinal = Val(InputBox("Introduzca número final", "Introducción de número"))
        If (numeroInicio Mod 2 <> 0) Then 'En otros lenguajes mod es % y <> es !=
            imparActual = numeroInicio
        Else
            imparActual = numeroInicio + 1
        End If
        imparesMostrados = 0
        LabelImpares.Text = "Impares inciales en la serie " & vbCrLf
        Do While imparesMostrados < numeroImparesAMostrar
            LabelImpares.Text = LabelImpares.Text & imparActual & vbCrLf
            imparesMostrados = imparesMostrados + 1
            imparActual = imparActual + 2
        Loop
    End Sub
End Class

Aquí está solo para números impares, para números pares la lógica sería la misma. Tendrías que probarlo tanto con impares como con pares a ver si te sirve. Saludos,


1755
Hola, para poder revisarlo necesitaría saber cuál es enunciado del ejercicio, es decir, qué es lo que se pide exactamente, no sé a qué te refieres cuando dices 'solo quiero que me muestre los dos primeros numero'

También qué lenguaje estás utilizando y que pegues el código en modo texto para poder compilarlo y editarlo (para esto en el editor del foro pulsa el icono # y pega el código entre las etiquetas [ code ] ... [ / code] que aparecerán, luego pulsar previsualizar y luego publicar). Saludos cordiales

1756
Aprender a programar desde cero / Re:EJERCICIO ENTREGA CU00679B
« en: 28 de Mayo 2014, 18:04 »
Hola, ¿qué versión de Java estás usando?

El problema lo veo en que Arrays.asList te devuelve un tipo List, no un tipo LinkedList, eso tienes que verlo en la especificación del método del api java. Declarando un List tendríamos:

Código: [Seleccionar]
import java.util.LinkedList;import java.util.Arrays;import java.util.List;


public class CU00679B {
    public CU00679B()    {    }
    public static void main (String[] Args) {
       
         Boolean [] listaBooleanos = {true, true, false, false, true, false};
        List<Boolean> lista = new LinkedList<Boolean>();
        System.out.println ("LinkedList es primero "+ lista);
        lista = Arrays.asList(listaBooleanos);
        System.out.println ("LinkedList es después "+ lista);
    }
}

1757
Estás escribiendo tipoEdad = valorEdad;

pero según el código que pusiste antes la variable no se llama tipoEdad sino Edad, por tanto deberías escribir simplemente edad = valorEdad; (ó Edad = valorEdad; si estás usando mayúsculas).

1758
Hola, para pegar código pulsa el icono # del editor del foro de este modo te aparecen unas etiquetas [ code ] ... [ / code] y entre esas dos etiquetas debes pegar el código y luego pulsar previsualizar para comprobar que se vea bien.

El problema lo tienes en que estás declarando String Ciudad; donde Ciudad lleva mayúsculas y después estás escribiendo ciudad = "Madrid" donde ciudad está escrito con mayúsculas.

Para Java no es lo mismo ciudad con minúsculas que con mayúsculas, tienes que escribirlo siempre de la misma forma (o bien con mayúscula o bien con minúscula)...


1759
Depende de lo que quieras hacer, si quieres desarrollar un programa de escritorio para el ordenador o un juego como el tetris para jugar en local, no te hace falta html ni css. Si quieres desarrollar páginas web o juegos on-line, sí te hace falta. html y css son lenguajes que se usan en todo lo que tenga que ver con desarrollos web.

1760
Este podría ser un replantemiento: al pulsar sobre "editar" que las casillas se conviertan en editables. Una vez se quisieran guardar los cambios habría que pulsar en "Guardar cambios". Esto está hecho por javascript porque creo es lo que le da más agilidad.

Otra opción sería que todo saliera directamente en modo editable (como la última fila de la tabla que pongo como ejemplo) y que no exista el botón editar, sino directamente sólo "Guardar cambios"

De cualquier forma lo que deberías crear es un formulario que envíe los datos de forma que puedas operar sobre la base de datos con esos datos que te llegan cuando pulsas "Guardar cambios"

Código: [Seleccionar]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Ejemplo - aprenderaprogramar.com</title>
<meta charset="utf-8">
<style type="text/css">

body {background-color:white; font-family: sans-serif;}
label {color: maroon; display:block; padding:5px;}
table td {padding: 5px; text-align: center; }
p.simulaLink {color: blue; cursor:pointer;}
</style>

<script type="text/javascript">

function transformarEnEditable(nodo) {
var nodoContent = nodo.querySelectorAll("p");
var idInicial = nodoContent[0].firstChild.nodeValue;
var tituloInicial = nodoContent[1].firstChild.nodeValue;
var textoInicial = nodoContent[2].firstChild.nodeValue;
var catInicial = nodoContent[3].firstChild.nodeValue;
var fechaInicial = nodoContent[4].firstChild.nodeValue;
var rutaImgInicial = nodoContent[5].firstChild.nodeValue;

var nuevoCodigo = '<tr>'+
'<td > <input type="text" name="id" id="id" value="'+idInicial+'" size="10"></td>'+
'<td > <input type="text" name="titulo" id="titulo" value="'+tituloInicial+'" size="10"></td>'+
'<td > <input type="text" name="texto" id="texto" value="'+textoInicial+'" size="20"></td>'+
'<td > <input type="text" name="categoria" id="categoria" value="'+catInicial+'" size="10"></td>'+
'<td > <input type="text" name="fecha" id="fecha" value="'+fechaInicial+'" size="10"></td>'+
'<td > <input type="text" name="imagen" id="imagen" value="'+rutaImgInicial+'" size="10"></td>'+
'<td  ><p class="simulaLink">Guardar cambios</p>'+
'<p>Borrar</p></td>'+
'</tr>';

nodo.innerHTML = nuevoCodigo;
}
</script>

</head>

<body>
<div id="cabecera">
<h1>Consulta de noticias</h1>
<h2>Mostrando noticias</h2>
</div>

<table border="1" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td><p><b>Id</b></p></td>
<td><p><b>Título</b></p></td>
<td><p><b>Texto</b></p></td>
<td><p><b>Categoría</b></p></td>
<td><p><b>Fecha</b></p></td>
<td><p><b>Imagen</b></p></td>
<td> </td>
</tr>

<tr>
<td><p>1</p></td>
<td><p>COBO</p></td>
<td><p>Su nuevo disco</p></td>
<td><p>Música</p></td>
<td><p>30/09/2011</p></td>
<td><p>Cobo.jpg</p></td>
<td><p class = "simulaLink" onclick="transformarEnEditable(this.parentNode.parentNode)">Editar</p>

<p>Borrar</p></td>
</tr>

<tr>
<td><p>2</p></td>
<td><p>Paintball</p></td>
<td><p>Adrenalina sin límites</p></td>
<td><p>Deportes</p></td>
<td><p>29/09/2011</p></td>
<td><p>Paintball.png</p></td>
<td><p>Editar</p>

<p>Borrar</p></td>
</tr>

<tr>
<td><p>3</p></td>
<td><p>Alejandra</p></td>
<td><p>Más descarada que nunca</p></td>
<td><p>Personaje</p></td>
<td><p>28/09/2011</p></td>
<td><p>Alejandra.jpg</p></td>
<td><p>Editar</p>

<p>Borrar</p></td>
</tr>

<tr>
<td > <input type="text" name="id" id="id" value="4" size="10"></td>
<td > <input type="text" name="titulo" id="titulo" value="america" size="10"></td>
<td > <input type="text" name="texto" id="texto" value="la prueba del delito" size="20"></td>
<td > <input type="text" name="categoria" id="categoria" value="Música" size="10"></td>
<td > <input type="text" name="fecha" id="fecha" value="30/08/2007" size="10"></td>
<td > <input type="text" name="imagen" id="imagen" value="carro.jpg" size="10"></td>
<td  ><p class="simulaLink">Guardar cambios</p>
<p>Borrar</p></td>
</tr>

</tbody>
</table>

</body>
</html>


Páginas: 1 ... 83 84 85 86 87 [88] 89 90 91 92 93 ... 100

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".