Dev - C++ - Duda Lenguaje C

   
Vista:

Duda Lenguaje C

Publicado por Cosito Comue (2 intervenciones) el 01/11/2015 12:27:01
Tenía una duda de un enunciado: En un hospital se registra la atención de los N pacientes en un vector ATENCION en el cual el elemento del vector representa la cantidad de atenciones recibidas y el subíndice el código del paciente:
a) Ingresar los datos en el vector.
b) Encuentre los códigos de pacientes con mayor y menor cantidad de atenciones, muestre los resultados en la función main().

El problema que tengo es cuando tengo q guardar la posicion del paciente con mayor y menor cantidad de atenciones, me podrian dar una mano? Les mando el codigo que prepare. Gracias:

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
#include <stdlib.h>
#include <stdio.h>
 
main(){
 
	int N, i, ATENCION[20], mayor = 0, posmenor = 0, posmayor = 0;
 
	printf("\n\nIngrese cantidad de pacientes: ");
	scanf("%d", &N);
 
	for(i = 1; i <= N; i++){
 
		printf("\n\nIngrese cantidad de atenciones recibidas por el paciente %d: ", i);
		scanf("%d", &ATENCION[i]);
 
	}
 
	for(i = 1; i <= N; i++){
 
		if(ATENCION[i] > mayor){
 
			mayor = ATENCION[i];
			posmayor = i;
 
		}
	for(i = 1; i <= N; i++){
 
		if(ATENCION[i] < mayor){
 
			mayor = ATENCION[i];
			posmenor = i;
 
		}
 
	}
 
}
	printf("\n\nEl paciente con mayor cantidad de atenciones recibidas es el paciente: %d", posmayor);
	printf("\n\nEl paciente con menor cantidad de atenciones recibidas es el paciente: %d", posmenor);
}
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

Duda Lenguaje C

Publicado por Rene Gar (50 intervenciones) el 01/11/2015 16:08:10
Tienes problemas en las llaves ya que un for esta dentro de otro cuando deberia estar separados, ojo el codigo debe ser lo mas simple posible y tiene que estar bien identado para su mejor lectura

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
#include <stdlib.h>
#include <stdio.h>
 
int main()
{
 
    int N, i, ATENCION[20], mayor = 0, posmenor = 0, posmayor = 0;
 
    printf("Ingrese cantidad de pacientes: ");
    scanf("%d", &N);
 
    for(i = 1; i <= N; i++){
        printf("\n\nIngrese cantidad de atenciones recibidas por el paciente %d: ", i);
        scanf("%d", &ATENCION[i]);
    }
 
    //ESTE for recorre el arreglo y encuentra la posiciion del paciente con mayor numero de  atenciones
    for(i = 1; i <= N; i++){
      if(ATENCION[i] > mayor){
          mayor = ATENCION[i];
          posmayor = i;
       }
    }
      //ESTE for recorre el arreglo y encuentra la posiciion del paciente con menor numero de  atenciones
     for(i = 1; i <= N; i++){
        if(ATENCION[i] < mayor){
                mayor = ATENCION[i];
                posmenor = i;
        }
    }
 
    printf("\n\nEl paciente con mayor cantidad de atenciones recibidas es el paciente: %d", posmayor);
    printf("\n\nEl paciente con menor cantidad de atenciones recibidas es el paciente: %d", posmenor);
 
    return 0;
}


Tu problema se puede resolver de manera mas sencilla pero mi trabajo no es hacer tu tarea si no ayudarte donde te atores saludos...
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

Duda Lenguaje C

Publicado por Cosito Comue (2 intervenciones) el 01/11/2015 16:39:39
Muchisimas Gracias! Una llave me resolvio todo! jeje Saludos.
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

Duda Lenguaje C

Publicado por aguml (305 intervenciones) el 01/11/2015 16:10:24
No puedo verlo en el pc pero tu código tiene varios fallos y creo que esto si te iria:
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
#include <stdlib.h>
#include <stdio.h>
 
main(){
   int N, i, ATENCION[20], mayor,menor,posmayor,posmenor;
 
   do {
      printf("\n\nIngrese cantidad de pacientes: ");
      scanf("%d", &N);
      if (N >0 && N != 20){
         for(i = 0; i < N; i++){
            printf("\n\nIngrese cantidad de atenciones recibidas por el paciente %d: ", i);
            scanf("%d", &ATENCION[i]);
         }
         mayor=menor=ATENCION[0];
         if(N>1){
            for(i = 1; i < N; i++){
                if(ATENCION[i] > mayor){
                   mayor = ATENCION[i];
                   posmayor=i;
                }else if(ATENCION[i] < menor){
                   menor = ATENCION[i];
                   posmenor=i;
                }
            }
         }
      }
   }while (N <=0 || N > 20);
   printf("\n\nEl paciente con mayor cantidad de atenciones recibidas es el paciente: %d", posmayor);
   printf("\n\nEl paciente con menor cantidad de atenciones recibidas es el paciente: %d", posmenor);
}
Lo ideal en tu caso sería usar memoria dinámica por si se añaden más de 20 pero bueno.
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