buenas tardes/dias/noches amigos, veran tengo un problema , ya lo he buscado en google , y tambien en mi manual escolar de programacion pero no logro encontrar que es lo que esta mal, lo que pasa es que en el programa mencionado despues de realizar todos los procesos que estan dentro del do , al ponerle que los repita usando while, el printf que dice " ingrese nombre del maestro" solo funciona la primera vez que el programa es ejecutado, ya cuando se le indica que se quiere repetir el proceso no me aparece para ingresar dicho "nombre del maestro" y se queda guardado el que use anteriormente,incluso en lugar de usar "ifs" volvi a realizar el programa usando "switch" y me seguia ocurriendo lo mismo,les dejo el codigo a continuacion para ver si me podrian hechar una mano, gracias de antemano
Código [Seleccionar]
#include<stdio.h>
#include<math.h>
#include<conio.h>
#include<windows.h>
main()
{
int niv,i,c,u,d,t,ct;
char nom[30];
float si,sf ;
i=0;
c=0;
u=0;
d=0;
t=0;
ct=0;
system ("cls");
do
{
system("cls");
c++;
printf("nombre del maestro: ");
scanf("%[^\n]",nom);
gets(nom);
printf("ingrese salario inicial: ");
scanf("%f",&si);
printf("ingrese nivel (1,2,3,4) ");
scanf("%d",&niv);
if(niv==1)
{
sf=si*1.035;
u++;
}
else
{
if (niv==2)
{
sf=si*1.041;
d++;
}
else
{
if (niv==3)
{
sf=si*1.048;
t++;
}
else
{
if (niv==4)
{
sf=si*1.053;
ct++;
}
else
{
}
}
}
}
printf("\n el salario final del maestro %ld sera de: %.2f",nom,sf);
printf("\n desea repetir el proceso? 1. si 2. no");
scanf("%d",&i);
}
while(i==1);
printf("\n el numero de maestros analizados es de: %d",c);
printf("\n el numero de maestros con nivel uno es de: %d",u);
printf("\n el numero de maestros con nivel dos es de: %d",d);
printf("\n el numero de maestros con nivel tres es de: %d",t);
printf("\n el numero de maestros con nivel cuatro es de: %d",ct);
getche();
}