Problema simple de numeros negativos
Publicado por carlos (95 intervenciones) el 16/01/2018 11:10:42
El problema es simple quiere que no deje poner numeros negativos probe a hacer un simple mayor que 0.El problema es que cuando pongo por ejemplo -32 no me deja pone que es positivo
¿Me equivocado al declarar el tipo de variable o que puede ser alguna otra cosa?Mire en varios foros pero en todos es con else
¿Me equivocado al declarar el tipo de variable o que puede ser alguna otra cosa?Mire en varios foros pero en todos es con else
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#include <stdio.h>
#include <string.h>
struct
{
char nombreFich[41];/* Nombre del fichero */
unsigned long tamanyo;/* El tamaño en bytes */
}fichas[1000];
int numeroFichas=0;/* Número de fichas que ya tenemos */
int i;/* Para bucles */
int opcion;/* La opcion del menu que elija el usuario */
char textoTemporal[40];/* Para cuando preguntemos al usuario */
unsigned long numeroTemporal;
int main(){
do
{
/* Menu principal */
printf("Escoja una opción:\n");
printf("1.-Añadir datos de un nuevo fichero\n");
printf("2.-Mostrar los nombres de todos los ficheros\n");
printf("3.-Mostrar ficheros que sean de mas de un cierto tamaño\n");
printf("4.-Ver datos de un fichero\n");
printf("5.-Salir\n");
/* Para evitar problemas con datos mal introducidos,
leemos con "gets" y luego lo filtramos con "
sscanf" */
gets(textoTemporal);
sscanf(textoTemporal,"%d",&opcion);
/* Hacemos una cosa u otra según la opción escogida */
switch(opcion)
{
case 1:
/* Añadir un dato nuevo */
if(numeroFichas<1000)/* Si queda hueco */
{
printf("Introduce el nombre del fichero: ");
gets(fichas[numeroFichas].nombreFich);
while(strcmp(fichas[numeroFichas].nombreFich,"\0 ")==0){
printf("Introduce el nombre del fichero: ");
gets(fichas[numeroFichas].nombreFich);
}
printf("Introduce el tamaño en KB: ");
gets(textoTemporal);
printf(textoTemporal);
// hacer que cuando pida el numero convertirlo y compararlo ya
//que no puede compararlo por ser string
if(textoTemporal>= "0"){
sscanf(textoTemporal,"%ld",&fichas[numeroFichas].tamanyo);
}
else{
printf("Te has equivocado se va a vaciar el espacio");
fichas[numeroFichas].nombreFich=='\0';
fichas[numeroFichas].tamanyo=='\0';
break;
}
/* Y ya tenemos una ficha más */
numeroFichas++;
}
else
/* Si no hay hueco para más fichas, av
isamos */
printf("Máximo de fichas alcanzado (1000)!\n");
break;
case 2:
/* Mostrar todos */
for(i=0;i<numeroFichas;i++)
printf("Nombre: %s; Tamaño: %ldKb\n",fichas[i].nombreFich,fichas[i].tamanyo);
break;
case 3:
/* Mostrar según el tamaño */
printf("¿A partir de que tamaño quieres que te muestre?");
gets(textoTemporal);
sscanf(textoTemporal,"%ld",&numeroTemporal);
for(i=0;i<numeroFichas;i++)
if(fichas[i].tamanyo>=numeroTemporal)
printf("Nombre: %s; Tamaño: %ld Kb\n",fichas[i].nombreFich,fichas[i].tamanyo);
break;
case 4:
/* Ver todos los datos (pocos) de un fichero */
printf("¿De qué fichero quieres ver todos los datos?");
gets(textoTemporal);
for(i=0;i<numeroFichas;i++)
if(strcmp(fichas[i].nombreFich,textoTemporal)==0)
printf("Nombre: %s; Tamaño: %ld Kb\n",fichas[i].nombreFich,fichas[i].tamanyo);
break;
case 5:
/* Salir: avisamos de que salimos */
printf("Fin del programa\n");
break;
default:
/* Otra opcion: no válida */
printf("Opción desconocida!\n");
break;
}
}
while(opcion!=5);
/* Si la opcion es 5, terminamos */
return 0;
}
Valora esta pregunta
0