Arreglos, Cadenas de Caracteres, Entrada y Salida

Anuncio
Entrega extemporánea -15
Nota: 85
UNIVERSIDAD DE COSTA RICA
ESCUELA DE INGENIERÍA ELÉCTRICA
PROGRAMACIÓN BAJO PLATAFORMAS ABIERTAS IE-0117
Francisco Molina Castro - B14194
LABORATORIO 14 - I CICLO 2012
Arreglos, Cadenas de Caracteres, Entrada y Salida
1. Escriba una función que tome como argumento una cadena de caracteres, verifique que los caracteres de la cadena correspondan a un número de punto flotante válido y realice la conversión,
retornando el valor resultante.
El programa ejemplo sería:
# include < s t d i o . h>
# include < s t d l i b . h>
# include < s t r i n g . h>
i n t main ( i n t argc , char ∗ argv [ ] ) {
i n t i =0 , c o n t r o l 1 =0 , c o n t r o l 2 =0 , c o n t r o l 3 =0;
i n t a= s t r l e n ( argv [ 1 ] ) ;
i f ( argc ! = 2 ) {
p r i n t f ( " −9999\n " ) ;
}
else {
f o r ( i =0; i <a ; i + + ) {
i f ( i ==0){
i f ( argv [ 1 ] [ i ]== ’− ’ ) {
++ c o n t r o l 2 ;
}
i f ( argv [ 1 ] [ i ]== ’ . ’ ) {
++ i ;
++ c o n t r o l 1 ;
}
}
else {
i f ( argv [ 1 ] [ i ]== ’− ’ ) {
++ c o n t r o l 2 ;
}
i f ( i s d i g i t ( argv [ 1 ] [ i ] ) = = 0 ) {
++ c o n t r o l 1 ;
}
}
}
}
i f ( control1 >1|| control2 >1){
p r i n t f ( " −9999\n " ) ;
}
else {
double a= s t r t o f ( argv [ 1 ] , NULL ) ;
p r i n t f ( " %f \ n " , a ) ;
}
return 0;
}
1
UNIVERSIDAD DE COSTA RICA
ESCUELA DE INGENIERÍA ELÉCTRICA
PROGRAMACIÓN BAJO PLATAFORMAS ABIERTAS IE-0117
Francisco Molina Castro - B14194
LABORATORIO 14 - I CICLO 2012
Este nos da algunos resultados como:
2
UNIVERSIDAD DE COSTA RICA
ESCUELA DE INGENIERÍA ELÉCTRICA
PROGRAMACIÓN BAJO PLATAFORMAS ABIERTAS IE-0117
Francisco Molina Castro - B14194
LABORATORIO 14 - I CICLO 2012
2. Escriba un programa que reciba, a través de la línea de comandos, el nombre de un archivo que contenga números enteros (uno por línea, máximo 100) en desorden, copie los números a un arreglo,
ordene el arreglo de manera ascendente e imprima la lista de números ordenados en la terminal.
El programa ejemplo sería:
# include < s t d i o . h>
# include < s t d l i b . h>
# include < s t r i n g . h>
i n t compare ( const void ∗ a , const void ∗ b ) {
return ( ∗( i n t ∗) a − ∗( i n t ∗) b ) ;
}
i n t main ( i n t argc , char ∗ argv [ ] ) {
/ ∗ Comprueba que l a c a n t i d a d de argumentos sea l a c o r r e c t a ∗ /
i f ( argc ! = 2 ) {
f p r i n t f ( s t d e r r , " E r r o r : Cantidad de argumentos i n c o r r e c t a \ n " ) ;
exit (1);
}
/ ∗ Punteros a a r c h i v o ∗ /
FILE ∗ o r i g e n ;
/ ∗ Abre l o s a r c h i v o s ∗ /
o r i g e n = fopen ( argv [ 1 ] , " r " ) ;
/ ∗ Comprueba que l o s a r c h i v o s se hayan a b i e r t o c o r r e c t a m e n t e ∗ /
i f ( o r i g e n == NULL ) {
f p r i n t f ( s t d e r r , " E r r o r de e n t r a d a / s a l i d a \ n " ) ;
exit (2);
}
i n t numeros [ 1 0 0 ] , c o n t r o l =0 ,n =0;
while ( f s c a n f ( o r i g e n , " %d " , &numeros [ c o n t r o l ] ) ! = EOF ) {
c o n t r o l ++;
}
q s o r t ( numeros , c o n t r o l , s i z e o f ( i n t ) , compare ) ;
f o r ( n =0; n< c o n t r o l ; n + + ) {
p r i n t f ( " %d " , numeros [ n ] ) ;
}
/∗ Cierra los archivos ∗/
fclose ( origen ) ;
return 0;
}
3
UNIVERSIDAD DE COSTA RICA
ESCUELA DE INGENIERÍA ELÉCTRICA
PROGRAMACIÓN BAJO PLATAFORMAS ABIERTAS IE-0117
Francisco Molina Castro - B14194
LABORATORIO 14 - I CICLO 2012
Este nos da algunos resultados como:
4
Descargar