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

#871
El mensaje de error en la linea 49:
scanf("%d %d %d", &equis1, equis2 /* <== */, &equis3);
Se genera porque en el tercer argumento te falta el operador "dirección de" (el '&').

El error de la linea 51:
modulo = mod(equis1,equis2,equis3);
printf("El módulo será: %f\n", mod /* <== */);

Se debe a que utilizas "mod" (el nombre de la función) cuando debería ser "modulo" (el nombre de la variable).

Un saludo
#872
El mensaje de error en la linea 49:
scanf("%d %d %d", &equis1, equis2 /* <== */, &equis3);
Se genera porque en el tercer argumento te falta el operador "dirección de" (el '&').

Un saludo
#873
Programación C/C++ / Re: Duda sobre codigo
13 Abril 2013, 03:41 AM
avesudra ya dio una explicación sobre el condicional.

Solo un comentario: siendo estrictos no es necesario utilizar la función bzero como programación defensiva (para proteger contra el escenario donde sscanf falle).

En lugar de esa funcion se puede almacenar un '\0' en la primera posicion del array. En el contexto de cadenas el efecto es el mismo:
char linea[1024];

/* ... */

if (fgets(linea, 1024, fich)){
   argumento[0] = '\0';
   sscanf(linea, "%s %[^\n]", mandato, argumento);
}


Una mejor opción es verificar el valor de retorno de sscanf

Un saludo
#874
Cita de: ZedGe en 12 Abril 2013, 21:21 PMTengo el siguiente código hecho en linux [...]
Lo primero que debes hacer es seguir todas las indicaciones de naderST .

Cita de: ZedGe en 12 Abril 2013, 21:21 PMmi problema, es que necesito que cada proceso tenga una ID dada por mi, aparte de la propia que se crea, es decir que de los 3 procesos, cada uno tenga una id del 0 al 2, y que imprima esa ID al pasar por el proceso.
Utiliza el valor del contador "i". En el caso de los hijos estará en el rango 0 a N-2 y en el caso del padre sera igual a N-1.

Un saludo
#875
Con esta llamada:
char op;

/* ... */

scanf("%s", &op);

La función scanf almacena en la dirección indicada por "&op" una palabra (secuencia de caracteres diferentes de espacio blanco), a continuación de esta almacena un '\0'. El problema aquí es que "op" solo puede almacenar un carácter mientras que scanf por fuerza almacenara al menos dos (un carácter cualquiera y el '\0').

A partir de ese momento (la llamada a función) cualquier cosa puede pasar, incluyendo el comportamiento que mencionas.

La forma correcta es:
char op;

/* ... */

scanf(" %c", &op);



Un saludo
#876
Programación C/C++ / Re: Problemas con ELSE
11 Abril 2013, 16:39 PM
Cita de: Xgirl12 en 11 Abril 2013, 06:50 AMRetomando este programa, ahora me piden que le añada arreglos (arrays), pero la verdad no sé como es que encajarían aquí, les pido sugerencias de cómo lo podría agregar, es decir, que parte del programa puedo modificar para este asunto.
Primero declaras las variables "Compra", "Desc" y "Total" como arrays:
#include <stdio.h>
#include <stdlib.h>

#define NUM_COMPRAS  10

int main(void)
{
   char nom[10];
   float Compra[NUM_COMPRAS];
   float Desc[NUM_COMPRAS];
   float Total[NUM_COMPRAS];


A continuación creas un bucle donde realizas las operaciones por cada una de las compras:
int i;

for (i = 0; i < NUM_COMPRAS; i++){
   
   /*
   ** Procesamos la compra utilizando
   **
   ** Compra[i]
   ** Desc[i]
   ** Total[i]
   */
   
}

Como indica el comentario debes tratar a las tres variables como arrays indicando su nombre así como el indice del elemento a procesar.

No tiene uso practico, supongo te piden eso para practicar con arrays.

Por ultimo evita el uso de la biblioteca conio de Borland, el porque se explica en el tema |Lo que no hay que hacer en C/C++. Nivel basico|.

Un saludo
#877
Al utilizar un algoritmo sencillo comparas dos elementos para saber cual es mayor, por ejemplo utilizando BubbleSort:
if (elem[i] > elem[i + 1]){

   /* Intercambio */
   
}


La única modificación que debes hacer es la ya indicada por 85: en lugar de comparar los valores directamente (como en el ejemplo anterior) comparas las diferencias entre los valores y el referente (3 en tu caso). Si suena complicado te aseguro no lo es, solo debes utilizar la función abs (prototipo en <stdlib.h>) y una resta. Siguiendo el ejemplo anterior la comparación cambia a:
if (abs(elem[i] - M) > abs(elem[i + 1] - M)){

   /* Intercambio */
   
}


Un saludo
#878
Ademas de las correcciones que ya te indico Luchoz95 se deben hacer algunas mas:

* Debes incluir el encabezado <stdio.h>.

* El incremento "numeroA = numeroA + 1;" debes colocarlo dentro del bucle pero fuera del condicional:
while (numeroA <= numeroB) {
   if (numeroA % 2 == 0)
      printf ("%d ", numeroA);
   else
      printf ("");
   
   numeroA = numeroA + 1;
}


* Considerando que no haces nada si el numero es impar (imprimes "", una cadena vacía) deberías eliminar el "else ...".

Un saludo
#879
Cita de: Puntoinfinito en 10 Abril 2013, 15:05 PM
Cita de: durasno en 10 Abril 2013, 00:49 AMla funcion remove retorna cero en caso de exito, de lo contrario un valor distinto de cero. Entonces la condicion del if seria distinto de 0

Sí, un numero diferente a 0, concretamente el -1. Es lo mismo
No. No es lo mismo.

Hay que tener cuidado cuando el valor de retorno de una función no esta especificado porque eso puede causar problemas, por ejemplo si el programa se porta a otra plataforma.

Un ejemplo en la misma linea es la función "isdigit" (prototipo en <ctype.h>), su especificación indica que retornara un valor diferente de cero si el carácter es un dígito y cero en caso contrario. A mi me encantaría que retornara 1 o 0 pero en mi caso esta retorna 4 o 0.

Otro ejemplo es EOF, este usualmente es -1 pero, de nuevo, lo mejor es no confiarnos y solo asumir que es "algún valor negativo".

Un saludo
#880
Cita de: dato000 en  9 Abril 2013, 23:40 PMDiferencias entre getchar(); y cin.get();?
getchar es parte de la biblioteca estándar de C mientras que get es parte de la biblioteca estándar de C++.

Cita de: dato000 en  9 Abril 2013, 23:40 PMporque es mejor el segundo??
En este caso el efecto es el mismo: tomar y descartar un carácter de la entrada estándar (si se utiliza getchar se debe incluir el encabezado <cstdio>).

Un saludo