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ú

Temas - Morringos

#1
Buenas a todos brothers, resulta ser que el día de ayer, traté de hacer un programa sencillo que te pidiera un número, pero que te estará dsplegando el mensaje donde pide que el usuario ingrese el número en dado caso de que el usuario haya ingresado algo inválido.

Lo raro es que con Windows (Eclipse ó CodeBlocks y MinGW) me funciona perfecto, pero al compilarlo en Linux (CodeBlocks o CodeLite) el programa ya no funciona, se me cicla. Les muestro el código para ver si me pueden dar una idea del error. O sea, si en Windows me vuelve a aparecer el mensaje y espera a que el usuario teclee de nuevo, en Linux me lo vuelve a mostrar pero de forma acelerada, sin dejar al usuario ingresar de nuevo.


#include <stdio.h>





int main (int argc, char **argv){



double a = 0.0;



printf("Ahora imprimiremos el mensaje\n");



do{

printf("\nPor favor ingrese el numero nuevamente:\n");

fflush(stdin);



}while((scanf("%lf",&a)) == 0.0);



return 0;

}


Intenté poniendo la función "fflush" para ver si me solucionaba algo, pero al parecer no.
Bueno, espero y me haya dado a entender.
Saludos.
#2
Buenas noches, tardes o días a todos   :xD, hoy vengo con una duda que llevo minutos tratándole de solucionarla y es debido al funcionamiento de la función "scanf", les aclaro que soy novato en esto de lenguaje C. Ok, ahí les va a el código para explicarles mi duda.


#include <stdio.h>


float maximum(float x, float y);
float minimum(float x, float y);
void prn_info(void);

int main()
{
    int i,n;
    float max, min, x;

    prn_info();
    printf("Input n:   ");
    scanf("%d", &n);
    printf("\nInput %d real numbers:    ", n);
    scanf("%f", &x);
    max = min = x;

    for (i = 2; i <= n; ++i){
        scanf("%f", &x);
        max = maximum(max, x);
        min = minimum(min, x);
    }

    printf("\n%s%11.3f\n%s%11.3f\n\n",
           "Maximum value:",max,
           "Minimum value:", min);

    return 0;
}

float maximum(float x, float y){
    if (x > y)
        return x;
    else
        return y;
}

float minimum(float x, float y){
    if (x < y)
        return x;
    else
        return y;
}

void prn_info(void){
    printf("\n%s\n%s\n\n",
           "This program reads an integer value for n, and then",
           "processes n real numbers to find max and min values.");
}


Es un código que lo vi de un libro que estoy leyendo de C, pero la gran duda es el por qué la variable "i" la inicializa con el valor de 2 en el ciclo for, y luego, en el ciclo for vuelve a utilizar la función "scanf", eso es lo que no entiendo el por qué eso. Al momento de que el usuario ponga por ejemplo, n=2, y ponga los números 10 y 20, la primera sentencia "scanf" captura el primer número y luego en el ciclo for captura el 2do número, o cómo es que funciona en si esa partesita y la función "scanf"?.

Bueno, espero y haya sido claro con mi duda, que la verdad no logro sacarle bien la lógica al código, mas bien, creo que se debe a la falta del entendimiento de la función "scanf", si alguien puediera explicarmelo, sería de gran ayuda, o tal vez, un link donde explique su funcionamiento.

Saludos.
Gracias.
#3
Buenas a todos, la verdad, creo que si es algo básica mi duda y eso, pero sinceramente, hoy es mi primer día en C, ya que necesito aprenderlo para hacer un proyecto donde maneje C junto con ensamblador.

El caso es que leí que la nueva versión estándar de C (C99) incluye ésta librería para el uso de variables booleanas, pero al momento de incluirla en C++ Builder XE, no me la detecta, me sale error, ¿alguna idea? ¿Algún otro IDE que me recomienden? Y última cosa... ¿Me recomiendan C ó C++? A lo que he leído, me interesa más C porque como que es un poco más manual que C++, y me gustaría aprenderlo y ya después aprender C++. ¿Qué me recomiendan?

Saludos y gracias por su tiempo.  :D
#4
Buenas a todos, tengo una duda en ensamblador, lo cual apenas estoy aprendiendo, pero me he encontrado con dos problemas los cuales no les he podido encontrar una solución y tampoco la causa, les pongo un código de ejemplo:


title "Ejemplo X"
    .model small
    .stack 1064
    .data
        var1 db 48,36
    .code
     
    mov ax, @data
    mov ds, ax
     
    mov ax, var1                 ;Operand types do not match
    mov dx, ax
    mov ah, 09h
    int 21h
     
     
    mov ah, 4ch
    int 21h
     
    end


Donde está el comentario, es en donde me detecta el error puesto como comentario, también, como la variable "var1" es de tipo byte, encontré las instrucciones: "movs", "movsx" y "moszx", pero cuando las trato de utilizar de la siguiente manera: "movs ax, var1", me marca un error diciéndome: "Ilegar instruction for currently selected processor(s).

¿Alguien tiene alguna idea sobre el por qué me pasa eso y sobre cómo solucionar lo que quiero hacer?

Gracias
Saludos.