#include <stdio.h>
#include <stdlib.h>
int main()
{
//lo primero son las variables
float n1;
float n2;
float suma,resta,producto;
float division;
char final;
char cadena[21]="calculadora by alberto m";
printf("introduce numero 1:\n");
scanf("%f",&n1);
printf("introduce numero 2:\n");
scanf("%f",&n2);
suma=n1+n2;
resta=n1-n2;
producto=n1*n2;
division=(float)n1/(float)n2;
printf("la suma es %.2f\n",suma);
printf("la resta es %.2f\n",resta);
printf("la multiplicacion es %.2f\n",producto);
printf("la division es %.2f\n",division);
printf("Calculadora by Alberto M\n\n",final);
system("pause");
return 0;
}#include <stdlib.h>
#include <stdio.h>
int main()
{
//Añadimos las variables
float n1;
float n2;
float n3;
float suma;
float media;
int total;
//Añadimos las ordenes
printf("introduce el primer numero:\n");
scanf("%f",&n1);
printf("introduce el segundo numero:\n");
scanf("%f",&n2);
printf("introduce el tercer numero:\n");
scanf("%f",&n3);
total=3;
suma=n1+n2+n3;
media=(float)suma/(float)total;
printf("la media obtenida de los 3 numero es %.2f\n\n",media);
printf("Calculador de media v1.0 realeased by Alberto yeah\n\n");
system("pause");
return 0;
}
Ferdy escribió:http://en.wikipedia.org/wiki/Scanf
... las ansias de aprender xD scanf("%d",&a);int a;
printf("la variable a contiene %d",a);![carcajada [carcajad]](/images/smilies/nuevos/risa_ani2.gif)
Korso10 escribió:PD: Ferdy, aparte de tener que hacer un casting para hacer la division, que dificultad ves tu aqui para un programador experimentado?
Supongo que a lo que se refiere Ferdy, es mas metodológicamente y referente a la simplicidad del código, ya que generalmente la gente tiende a emperifollar demasiado el código y dar muchas vueltas inútiles. Supongo.

PD: Ferdy, aparte de tener que hacer un casting para hacer la division, que dificultad ves tu aqui para un programador experimentado?
#include <stdio.h>
int
main(void)
{
int a,b,suma,resta,multi;
double auxa,auxb,divi;
scanf("%d%d",&a,&b);
auxa = (double)a;
auxb = (double)b;
suma = a+b;
resta = a-b;
multi = a*b;
divi = auxa/auxb;
printf("suma: %d\nresta: %d\nmulti: %d\ndivi: %lf\n",suma,resta,multi,divi);
getchar();
getchar();
return 0;
}#include <stdio.h>
main()
{
int a,b;
float c,d;
printf("Introduce datos: ");
scanf("%d %d",&a,&b);
c = (float) a;
d = (float) b;
printf("El valor de la suma es: %d\n",(a+b));
printf("El valor de la resta es: %d\n",(a-b));
printf("El valor de la multiplicación es: %d\n",(a*b));
printf("El valor de la división es: %f\n",(c/d));
}
Jaime escribió:Por probar:
Supongo que Ferdy habla del control de errores.
Yo usaría fgets, antes que scanf y evaluar que los datos obtenidos realmente son enteros.
Además con fgets, limitas el tamaño de la entrada.
Un saludo.
char c1, c2, c3, c4;
/* leer valores para c1 c2 y c3 */
c4 = c1 + c2 +c3;
if (c1 + c2 + c3 != c4)
printf("Es esto posible?\n");
else
printf("No, siempre imposible\n");Ferdy escribió:Dicho sea de paso, este tipo de programas 'tontos' son bastante más difíciles de lo que parecen (si lo quieres hacer bien). De hecho, conozco a pocos "programadores" que sean capaces de implementarlo bien en C o en Java, por ejemplo.
Ferdy escribió:Pse, si querías más información es cuestión de pedirla. Soy estudiante de informática y trabajo en entornos académicos. Algunos proyectos de software libre llevan código mío.
Bueno, la idea no es darle vueltas por darle vueltas. Simplemente demostrar que una cosa que parece tan fácil, no lo es realmente. No conocer estas cosas suele dar lugar a fallos de seguridad relativamente graves. He publicado cosas de este estilo y me he dado cuenta de que normalmente la gente no conoce realmente las herramientas que tiene entre manos. Por ejemplo:char c1, c2, c3, c4;
/* leer valores para c1 c2 y c3 */
c4 = c1 + c2 +c3;
if (c1 + c2 + c3 != c4)
printf("Es esto posible?\n");
else
printf("No, siempre imposible\n");
No se trata de probar valores a lo loco... al fin y al cabo un ordenador puede calcularlos en unos minutos... la pregunta es 'por qué'.
- ferdy
Ferdy escribió:Pse, si querías más información es cuestión de pedirla. Soy estudiante de informática y trabajo en entornos académicos. Algunos proyectos de software libre llevan código mío.
Bueno, la idea no es darle vueltas por darle vueltas. Simplemente demostrar que una cosa que parece tan fácil, no lo es realmente. No conocer estas cosas suele dar lugar a fallos de seguridad relativamente graves. He publicado cosas de este estilo y me he dado cuenta de que normalmente la gente no conoce realmente las herramientas que tiene entre manos. Por ejemplo:char c1, c2, c3, c4;
/* leer valores para c1 c2 y c3 */
c4 = c1 + c2 +c3;
if (c1 + c2 + c3 != c4)
printf("Es esto posible?\n");
else
printf("No, siempre imposible\n");
No se trata de probar valores a lo loco... al fin y al cabo un ordenador puede calcularlos en unos minutos... la pregunta es 'por qué'.
- ferdy
Slurp escribió:Hombre, la complejidad seguiría siendo la misma, variaría la constante nada más, así que no creo que perdiese mucho en un programa grande ¿no?
Ahora que lo miro otra vez, si b es -1 por ejemplo la primera condición se iría al carajo con lo cual tendría que ser más bien
if (b > 0 && MAX_INT - b > a)
suma = a +b;
if (b < 0 && MIN_INT - b < a)
... y el resto por el estilo o peor porque no estoy para calentarme ahora la cabeza con más "ysis", y las multiplicaciones y divisiones ni te cuento... Es demasiado.
.Slurp escribió:Pero ya me has picado, ¿esas cosas en programas de verdad se controlan? Porque tendría que ser algo así como
int a, b;
leer los números
if (MAX_INT - b > a)
suma = a + b;
if (MIN_INT + b < a)
resta = a - b;
etc.
¿no? ¿No es un poco demasiado?
d4rkb1t escribió:Si, y tanto que es posible que entre en el primer caso, simplemente con que la suma salga de 8 bits (o 1 byte) que es un char, eso ya peta.
Es correcto, verdad?
d4rkb1t escribió:Para slurp:
Si, y no. La verdad es que no veras muchos programas que lo implementen, sinceramente. En este caso tenemos que ir mas a lo profundo y segun codigo, mucho mas complejo que el simple echo de "programar", que es el analisis de complejidad, y el analisis temporal del programa.
En este caso hacer
suma = a + b;
resta = a - b;
Tiene una complejidad temporal de "n" (creo que era 4, ahora no me acuerdo, pero te pongo n para que lo entiendas).
Hacer esto:
if (MAX_INT - b > a)
suma = a + b;
if (MIN_INT + b < a)
resta = a - b;
Es sumarle a ese "n", 2 mas (por hacer la resta entre MAX_INT y b, y por comparar).
Que pasa... que aqui jugamos (como siempre en programación) con la siguiente frase: que buscamos, y para que usuario y/o algoritmo esta implementado nuestro codigo?.
Segun para lo que, con lo primero basta, y si quieres estabilidad y muchisima seguridad tan solo con hacer un TAD (tipo abstraco de datos) y encapsular bien los datos y las funciones ya estara, aunque claro, eso requiere algo mas que saber "programar" n.n'...
Lo dicho, si estoy equivocado, decidmelo.
#include <stdio.h>
#define MAX_INT
#define MIN_INT
int
main(void)
{
int a,b;
long int res;
do{
scanf("%d%d",&a,&b);
}while(a>=MAX_INT || b>=MAX_INT || a<=MIN_INT || b<=MIN_INT);
res = a+b;
printf("suma: %ld\n",res);
getchar();
getchar();
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main()
{
//lo primero son las variables
int n1;
int n2;
int suma,resta,producto;
float division;
printf("introduce numero 1:\n");
scanf("%i",&n1);
printf("introduce numero 2:\n");
scanf("%i",&n2);
suma=n1+n2;
resta=n1-n2;
producto=n1*n2;
division=n1/n2;
printf("la suma es %i\n",suma);
printf("la resta es %i\n",resta);
printf("la multiplicacion es %i\n",producto);
printf("la division es %f\n",division);
system("pause");
return 0;
}
#include <stdlib.h
#include <stdio.h>
int main()
{
//Añadimos las variables
int n1;
int n2;
int n3;
int suma;
float media;
int total;
//Añadimos las ordenes
printf("introduce el primero número:\n");
scanf("%i",&n1);
printf("introduce el segundo número:\n");
scanf("%i",&n2);
printf("introduce el tercer número:\n");
scanf("%i",&n3);
prinft("has introducido ya los tres numeros? Si=1 No=0\n");
Scanf("%i",&total);
total=total;
suma=n1+n2+n3;
media=suma/total;
printf("la media obtenida de los 3 número es %f",media);
system("pause");
return 0;
}
Ferdy escribió:Controlar el overflow en la división suele ser lo más complicado.
- ferdy



D Iverson88 escribió:mirar mi ultimo post plish!! que he editado ^^ gracias
#include <stdlib.h
#include <stdio.h>
int main()
{
//Añadimos las variables
int n1;
int n2;
int n3;
int suma;
float media;
int total;
//Añadimos las ordenes
printf("introduce el primer número:\n");
scanf("%i",&n1);
printf("introduce el segundo número:\n");
scanf("%i",&n2);
printf("introduce el tercer número:\n");
scanf("%i",&n3);
prinft("has introducido ya los tres numeros? Si=1 No=0\n");
Scanf("%i",&total);
total=total;
suma=n1+n2+n3;
media=suma/total;
printf("la media obtenida de los 3 número es %f",media);
system("pause");
return 0;
}#include <stdlib.h>
#include <stdio.h>
int main()
{
//Añadimos las variables
int n1;
int n2;
int n3;
int suma;
float media;
int total;
//Añadimos las ordenes
printf("introduce el primer numero:\n");
scanf("%i",&n1);
printf("introduce el segundo numero:\n");
scanf("%i",&n2);
printf("introduce el tercer numero:\n");
scanf("%i",&n3);
total=3;
suma=n1+n2+n3;
media=suma/total;
printf("la media obtenida de los 3 numero es %f\n\n",media);
system("pause");
return 0;
}Korso10 escribió:...
bastian escribió:De todas formas, tengo el Java bastante olvidado, pero ¿no tiene java excepciones para el overflow? En .NET sí, con lo que es bastante sencillo programar esto
bastian escribió:EDITO: Acabo de mirarlo y ya veo que no. Solución: No usar lenguajes tan rudimentarios. D

#include <stdio.h>
void main()
{
int n1,n2,n3,suma;
float media;
int total;
printf("introduce el primero número:\n");
scanf("%i",&n1);
printf("introduce el segundo número:\n");
scanf("%i",&n2);
printf("introduce el tercer número:\n");
scanf("%i",&n3);
total=3;
suma=n1+n2+n3;
media=(float)suma/total;
printf("la media obtenida de los 3 número es %.2f\n",media);
}
#include <stdio.h>
#include <stdlib.h>
int main()
{
//lo primero son las variables
float n1;
float n2;
float suma,resta,producto;
float division;
char final;
char cadena[21]="calculadora by alberto m";
printf("introduce numero 1:\n");
scanf("%f",&n1);
printf("introduce numero 2:\n");
scanf("%f",&n2);
suma=n1+n2;
resta=n1-n2;
producto=n1*n2;
division=(float)n1/(float)n2;
printf("la suma es %.2f\n",suma);
printf("la resta es %.2f\n",resta);
printf("la multiplicacion es %.2f\n",producto);
printf("la division es %.2f\n",division);
printf("Calculadora by Alberto M\n\n",final);
system("pause");
return 0;
}#include <stdlib.h>
#include <stdio.h>
int main()
{
//Añadimos las variables
float n1;
float n2;
float n3;
float suma;
float media;
int total;
//Añadimos las ordenes
printf("introduce el primer numero:\n");
scanf("%f",&n1);
printf("introduce el segundo numero:\n");
scanf("%f",&n2);
printf("introduce el tercer numero:\n");
scanf("%f",&n3);
total=3;
suma=n1+n2+n3;
media=(float)suma/(float)total;
printf("la media obtenida de los 3 numero es %.2f\n\n",media);
printf("Calculador de media v1.0 realeased by Alberto yeah\n\n");
system("pause");
return 0;
}#include <stdio.h>
#include <stdlib.h>
int main()
{
char nombre[20];
char lydia[20];
char n1[20];
printf("introduce tu nombre por favor:\n\n");
scanf("%s",&nombre);
switch(nombre)
{
case 1:
printf("Te llamas %s Eres la elegida,alberto te quiere mucho\n\n",nombre);
break;
default:
printf("Lo siento no estas en el corazon de alberto\n\n");
}[code]#include <stdio.h>
#include <stdlib.h>
int main()
{
char nombre[20];
char lydia[20];
char n1[20];
printf("introduce tu nombre por favor:\n\n");
scanf("%s",&nombre);
switch(nombre)
{
case 1:
printf("Eres la elegida,alberto te quiere mucho\n\n",nombre);
break;
default:
printf("Lo siento no estas en el corazon de alberto\n\n");
}
system("pause");
return 0;
}[/code]
system("pause");
return 0;
}Iverson88 escribió:Buenas aqui estoy otra vez con algunas dudas, mirad le estoy haciendo un ejecutable basico a mi novia asin pa tontear jeje y no controlo mucho las cadenas, aber si me podeis ayudar:#include <stdio.h>
#include <stdlib.h>
int main()
{
char nombre[20];
char lydia[20];
char n1[20];
printf("introduce tu nombre por favor:\n\n");
scanf("%s",&nombre);
switch(nombre)
{
case 1:
printf("Te llamas %s Eres la elegida,alberto te quiere mucho\n\n",nombre);
break;
default:
printf("Lo siento no estas en el corazon de alberto\n\n");
}[code]#include <stdio.h>
#include <stdlib.h>
int main()
{
char nombre[20];
char lydia[20];
char n1[20];
printf("introduce tu nombre por favor:\n\n");
scanf("%s",&nombre);
switch(nombre)
{
case 1:
printf("Eres la elegida,alberto te quiere mucho\n\n",nombre);
break;
default:
printf("Lo siento no estas en el corazon de alberto\n\n");
}
system("pause");
return 0;
}[/code]
system("pause");
return 0;
}
he probado tambien a cambiar el scanf por gets(nombre) y nada
me da error en el switch: switch quantity not an integer
Gracias
tambien he probado asin:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char nombre[20];
printf("introduce tu nombre por favor:\n\n");
scanf("%s",&nombre);
if (!strcmp(nombre,"lydia"))
printf("Te llamas %s Eres la elegida,alberto te quiere mucho\n\n",nombre);
else
printf("Lo siento no estas en el corazon de alberto\n\n");
}
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char nombre[20];
printf("introduce tu nombre por favor:\n\n");
scanf("%s",&nombre);
if (!strcmp(nombre,"lydia") || !strcmp(nombre,"Lydia"))
printf("Te llamas %s Eres la elegida,alberto te quiere mucho\n\n",nombre);
else
printf("Lo siento no estas en el corazon de alberto\n\n");
system("pause");
return 0;
}