Necesito validar que la variable tipo solo tome como valor el 1 o 2, para esto utilize un do-while
pero el ciclo se repetia una y otra vez, ahora utilizo while y pasa lo mismo, donde podria estar el error?
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
void ingresar();
void calcular();
int valor=0,tiempo=0,tipo=0,metros=0;
float costo=0;
char nombre[10], apellido[10];
int main(){
ingresar();
calcular();
}
void ingresar(){
printf(" Empresa Maya");
printf(" \nIngrese nombre:");
scanf("%s",&nombre);
printf(" \n Ingrese Apellido:");
scanf("%s",&apellido);
printf(" \n Ingrese tiempo de cliente:");
scanf("%d",&tiempo);
printf(" \n Seleccione el tipo de maya:");
printf(" \n 1..Maya Plana");
printf(" \n 2..Maya en Rollo");
printf(" \n opc: ");
scanf("%d",&tipo);
while(tipo!=1 || tipo!=2){
printf(" \n 1..Maya Plana");
printf(" \n 2..Maya en Rollo");
printf(" \n opc: ");
scanf("%d",&tipo);
}
printf(" \n Cantidad de metros:");
scanf("%d",&metros);
}
void calcular(){
if(tiempo<6 && tipo==1){
costo=(400*(8/100))*metros;
}
if(tiempo<6 && tipo==2){
costo=(250*(8/100))*metros;
}
printf(" \n costo: %d",costo);
}
while(tipo!=1 || tipo!=2)
si tipo es diferente de 1 o tipo es diferente de 2 va a entrar al ciclo... es decir...
si tipo es 1
tipo no es diferente de 1 pero tipo es diferente de 2... entra...
recuerda la tabla de verdad de "or"
(http://html.rincondelvago.com/000264780.jpg)
entonces debería ser
while(tipo!=1 && tipo!=2)
porque si tipo es diferente de uno y tipo es diferente de 2, repite
Gracias, ahora funciona bien exepto que durante la ejecucion si pasa mucho tiempo sin introducir datos el compilador se reinicia, un doble gracias si me ayudas.
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
void ingresar();
void calcular();
void imprimir();
static int plana=400, rollo=250;
int tiempo=0,tipo=0,metros=0;
char nombre[10], apellido[10];
int des=0;
int main(){
ingresar();
calcular();
imprimir();
printf("\n\n");
system("pause");
}
void ingresar(){
printf(" \t\t\t***EMPRESA MAYA***");
printf(" \n\nIngrese Nombre:");
scanf("%s",&nombre);
printf(" \n Ingrese Apellido:");
scanf("%s",&apellido);
printf(" \n Ingrese tiempo de cliente:");
scanf("%d",&tiempo);
printf(" \n Seleccione el tipo de maya:");
do{
printf(" \n 1..Maya Plana");
printf(" \n 2..Maya en Rollo");
printf(" \n opc: ");
scanf("%d",&tipo);
}while((tipo!=1) && (tipo!=2));
printf(" \n Cantidad de metros:");
scanf("%d",&metros);
}
void calcular(){
int costo=0;
if(tiempo==5 && tipo==1){
costo=plana*metros;
des=costo*0.08;
}
if(tiempo>=6 && tipo==1){
costo=plana*metros;
des=costo*0.06;
}
if(tiempo==5 && tipo==2){
costo=rollo*metros;
des=costo*0.08;
}
if(tiempo>=6 && tipo==2){
costo=rollo*metros;
des=costo*0.06;
}
}
void imprimir(){
printf(" \n\nDescuento cliente");
printf(" \n\nNombre: %s\tApellido: %s", nombre,apellido);
printf(" \n El descuento es: %d BsF",des);
}