Dev - C++ - Ayuda en Funciones de programación en C

 
Vista:
sin imagen de perfil

Ayuda en Funciones de programación en C

Publicado por ivan (2 intervenciones) el 20/03/2018 17:02:02
mi primera funcion funciona bien ya que me pide el ingreso del clima, pero la segunda funcion que es la que saca el promedio de las 7 temperatura me maca error en retorno 1, ya intente de todo y no logro comprender cual es mi prblema, y eso me tiene atascado para continuar con el programa

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
#include<stdio.h>
#include<conio.h>
void leertemp(float temp[]);
float promTemp(float temps[]);
 
main( )
{
float temps[7];
//float tempro1[7]; 
float promc=0;
 
 
leertemp(temps);
promc= promTemp(temps);
 
 
}
 
 
 
void leertemp(float temp[])
{
int dia;
for ( dia = 1; dia <=7; dia++)
{
printf( " Ingresa la temperatura del dia %d",dia);
scanf("%d",&temp[dia-1]);
 
 
}
 
}//fin leyendo temperaturas 
float promTemps(float temps[])
{
 
int dia;
float prom=0;
for(dia=1; dia<=7; dia++)
 
{
 
prom= prom+temps[dia];
 
}
return(prom/7);
printf(" la suma es %.2f",prom);
 
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 160
Ha aumentado 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Ayuda en Funciones de programación en C

Publicado por Andrés (53 intervenciones) el 20/03/2018 20:40:16
El main tiene problemas en la forma en la que esta declarado, en leerTemp, scanf debería usar %f, el printf en proTemps debería ir antes del return, float promTemps(float temps[]) debería ser float promTemp(float temps[])
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 160
Ha aumentado 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Ayuda en Funciones de programación en C

Publicado por Andrés (53 intervenciones) el 20/03/2018 21:44:05
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
#include <stdio.h>
#include <stdlib.h>
 
static const char* dias[] = {"_", "Lunes: ", "Martes: ", "Miércoles: ", "Jueves: ", "Viernes: ", "Sábado: ", "Domingo: "};
static const unsigned char LEN = 8;
 
static void leer_temperaturas(float*);
static void sumar_temperaturas(float*);
static inline void imprimir_resultados(const float*);
 
int main(int argc, char* argv[])
{
	float temperaturas[LEN];
 
	leer_temperaturas(temperaturas);
 
	sumar_temperaturas(temperaturas);
 
	imprimir_resultados(temperaturas);
 
	return EXIT_SUCCESS;
 
}
 
static void leer_temperaturas(float* temperaturas)
{
	printf("Ingreso de temperaturas\n");
 
	for (register unsigned char dia = 1; dia < LEN ; dia++)
	{
		printf("%s", dias[dia]);
		scanf("%f", (temperaturas+dia));
		fflush(stdin);
	}
 
}
 
static void sumar_temperaturas(float* temperaturas)
{
 
	for (register unsigned char dia = 1; dia < LEN ; dia++) {
		*(temperaturas) += *(temperaturas+dia);
	}
 
}
 
static inline void imprimir_resultados(const float* temperaturas)
{
	printf("Suma de temperaturas: %.2f\n", *(temperaturas));
	printf("Promedio: %.2f\n", *(temperaturas)/(LEN-1));
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Ayuda en Funciones de programación en C

Publicado por ivan (2 intervenciones) el 21/03/2018 20:00:14
Hola Andres muchas gracias por tu respuesta, no te imaginas lo mucho que me esta ayudando a entender, sobre todo los argumentos punteros y funciones ya estoy modificando mi programa. tengo una duda hacer una función donde se compare con otra función? para a si sacar los dias con climas mayores al promedio ?
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
#include<stdio.h>
#include<conio.h>
#include <stdlib.h>
#define tamano 8
#define numsem 7
void leerclima(float *);
 void  escribirpromedio( float *);
void mayorespromedio(float*);
 
  const  char *sem[]= {"  ", "Lunes: ", "Martes: ", "Miercoles: ", "Jueves: ", "Viernes: ", "Sabado: ", "Domingo: "};
 char TEM=tamano;
 
 
int main (int arg, char*argv[])
 
{
float clima [TEM];
	leerclima(clima);
 escribirpromedio(clima);
mayorespromedio(clima);
 
 
 
 
 
 
}
 
void leerclima(float *clima)
{
 
	printf(" Ingrese la temperatura   : \n");
 
	for (register unsigned char dia = 1; dia < TEM ; dia++)
	{
		printf("%s", sem[dia]);
		scanf("%f", (clima+dia));
		fflush(stdin);
	}
}
 
 
 void  escribirpromedio( float *clima)
{
for( register unsigned char dia = 1; dia<TEM ; dia++ )
{
 
*(clima)+=*(clima+dia);
 
}
printf("\n\n El Promedio de clima de la semana es : %.2f\n",*clima/numsem);
}
void mayorespromedio(float*clima)
 {
 
 escribirpromedio(clima);
 //float prom2= escribirpromedio(clima); aqui me marca error void mayorespromedios(float*)
 for ( register unsigned char dia = 1 ; dia<TEM ; dia++ )
 
if (*clima >prom2)
 
 printf ("     dias que pasan el promedio %s:",sem[dia]);
 
}
 
//}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 417
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Ayuda en Funciones de programación en C

Publicado por Thanatos (199 intervenciones) el 22/03/2018 05:16:25
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
#include <stdio.h>
 
enum { NDIAS = 7 };
 
void leer(float *);
float sumar(const float *);
float promediar(const float *);
void mostrarMayores(const float *);
 
int main(void)
{
    float temperaturas[NDIAS] = { 0 };
 
    printf("Ingrese las temperaturas:\n");
    leer(temperaturas);
 
    printf("Suma: %.2f\n", sumar(temperaturas));
    printf("Promedio: %.2f\n", promediar(temperaturas));
 
    printf("Temperaturas mayores al promedio:\n");
    mostrarMayores(temperaturas);
 
    return 0;
}
 
void leer(float *temperaturas)
{
    for (unsigned i = 0; i < NDIAS; ++i)
    {
        printf("Dia #%u: ", i + 1);
        scanf("%f", &temperaturas[i]);
    }
}
 
float sumar(const float *temperaturas)
{
    float suma = 0.0f;
 
    for (unsigned i = 0; i < NDIAS; ++i)
    {
        suma += temperaturas[i];
    }
    return suma;
}
 
float promediar(const float *temperaturas)
{
    return sumar(temperaturas) / NDIAS;
}
 
void mostrarMayores(const float *temperaturas)
{
    float promedio = promediar(temperaturas);
 
    for (unsigned i = 0; i < NDIAS; ++i)
    {
        if (temperaturas[i] > promedio)
        {
            printf("Dia #%u: %.2f\n", i + 1, temperaturas[i]);
        }
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 160
Ha aumentado 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Ayuda en Funciones de programación en C

Publicado por Andrés (53 intervenciones) el 22/03/2018 07:07:23
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
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
 
static const char* dias[] = {"_", "Lunes: ", "Martes: ", "Miércoles: ", "Jueves: ", "Viernes: ", "Sábado: ", "Domingo: "};
static const unsigned char LEN = 8;
 
static void leer_temperaturas(float*);
static void sumar_temperaturas(float*);
static inline void imprimir_resultados(const float*, const float*);
static float obtener_promedio(const float*);
 
static void comparar_promedio(const float*, const float*, bool(*)(const float*, const float*));
static inline bool es_menor(const float*, const float*);
static inline bool es_mayor(const float*, const float*);
 
int main(int argc, char* argv[])
{
	float temperaturas[LEN];
 
	leer_temperaturas(temperaturas);
 
	sumar_temperaturas(temperaturas);
 
	float promedio = obtener_promedio(temperaturas);
 
	imprimir_resultados(temperaturas, &promedio);
 
	printf("\nTemperaturas menores al promedio\n");
	comparar_promedio(temperaturas, &promedio, es_menor);
 
	printf("\nTemperaturas mayores al promedio\n");
	comparar_promedio(temperaturas, &promedio, es_mayor);
 
	return EXIT_SUCCESS;
 
}
 
static void leer_temperaturas(float* temperaturas)
{
	printf("Ingreso de temperaturas\n");
 
	for (register unsigned char dia = 1; dia < LEN ; dia++)
	{
		printf("%s", dias[dia]);
		scanf("%f", (temperaturas+dia));
		fflush(stdin);
	}
 
}
 
static void sumar_temperaturas(float* temperaturas)
{
 
	for (register unsigned char dia = 1; dia < LEN ; dia++)
        {
		*(temperaturas) += *(temperaturas+dia);
	}
 
}
 
static inline void imprimir_resultados(const float* temperaturas, const float* promedio)
{
	printf("\nSuma de temperaturas: %.2f\n", *(temperaturas));
	printf("Promedio: %.2f\n", *promedio);
 
}
 
static float obtener_promedio(const float* temperaturas)
{
	return *(temperaturas)/(LEN-1);
}
 
static void comparar_promedio(const float* temperaturas, const float* promedio, bool(*cmp)(const float* valor, const float* promedio))
{
	for (register unsigned char dia = 1; dia < LEN ; dia++)
	{
		if(cmp((temperaturas+dia), promedio))
		{
			printf("%s %.2f\n", dias[dia], *(temperaturas+dia));
		}
	}
}
 
static inline bool es_menor(const float* valor, const float* promedio)
{
	return *valor < *promedio;
}
 
static inline bool es_mayor(const float* valor, const float* promedio)
{
	return *valor > *promedio;
}


Screenshot-from-2018-03-22-00-06-26
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar