Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2011, 21:19   #1
MARTINS
Пользователь
 
Регистрация: 03.03.2011
Сообщений: 17
По умолчанию Неработает float.....

Почему не работает ввод числа типа float в цикле???? Подводит только эта херня, из-за нее не могу дробный средний бал ввести, и именно, в цикле! Если цикл убрать, то все вводится...

#include<stdio.h>
#include<conio.h>
#include<math.h>
struct student {
char name[30];
int kurs;
float gpa;
int forma;
int kontrakt;
int budget;
};
struct student students[30];
main()
{
clrscr();
int i,k,m=0,n;
printf("Введите количество студентов(макс. 30): "); scanf("%d",&n);
for(i=0;i<n;i++)
{
students[i].kontrakt=students[i].budget=0;
}
printf("\nВведите фамилии, курс, средний балл и форму обучения студентов\n");
for(i=0;i<n;i++)
{
printf("\n========================= %d студент =========================\n\n",i+1) ;
printf("Фамилия: "); scanf("%s",&students[i].name);
printf("Курс: "); scanf("%d",&students[i].kurs);
printf("Средний балл: "); scanf("%f",&students[i].gpa);
printf("Форма обучения(контракт - 1/бюджет - 2): "); scanf("%d",&students[i].forma);
if(students[i].forma==1) { printf("Стоимость контракта: "); scanf("%d",&students[i].kontrakt); }
if(students[i].forma==2) { printf("Стипендия: "); scanf("%d",&students[i].budget); }
}
printf("\nСтуденты-бюджетники со средним балом выше 4\n\n");
k=0;
for(i=0;i<n;i++)
{
if(students[i].forma==2&&students[i].gpa>=4) { k++; printf("%d. %s\n",k,students[i].name); }
else continue;
}
printf("\nНажмите любую клавишу для продолжения\n");
getch();
printf("\nСтуденты-контрактники со средним балом выше 4\n\n");
k=0;
for(i=0;i<n;i++)
{
if(students[i].forma==1&&students[i].gpa>=4) { k++; printf("%d. %s\n",k,students[i].name); }
else continue;
}
printf("\nНажмите любую клавишу для продолжения\n");
getch();
for(i=0;i<n;i++)
{
if(students[i].forma==1&&students[i].gpa<3) students[i].forma=0;
else continue;
}
printf("\nСписок студентов-контрактников\n\n");
k=0;
for(i=0;i<n;i++)
{
if(students[i].forma==1) { k++; printf("%d. %s\n",k,students[i].name); m+=students[i].kontrakt; }
else continue;
}
printf("\nОбщая сумма контрактов - %d",m);
getch();
return 0;
}
MARTINS вне форума Ответить с цитированием
Старый 31.05.2011, 11:45   #2
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

повезло вам с преподом если он принимает такое:
Код:
for(i=0;i<n;i++)
{
if(students[i].forma==1) { k++; printf("%d. %s\n",k,students[i].name); m+=students[i].kontrakt; }
else continue;
}
отдельно радует else continue;
rrrFer вне форума Ответить с цитированием
Старый 31.05.2011, 12:09   #3
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

вы выводите текст на русском языке, видимо использовали setlocale.
Если при этом был использован макрос LC_ALL - то чтобы вводить дробные числа нужно использовать запятую вместо точки для разделения дробной и целой частей.
Нужно использовать LC_CTYPE
rrrFer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка типа cannot convert `float*' to `float' for argument `1' ... Trackman Помощь студентам 3 23.05.2011 17:09
sscanf (char to float) - неработает c++ learner Общие вопросы C/C++ 5 12.12.2010 17:41
FLOAT TO TRING И STRING TO FLOAT!! MelKiY_bad C++ Builder 6 07.05.2010 14:31
неработает USB VVkSoft Операционные системы общие вопросы 10 12.02.2010 23:25
Помогите неработает xxxNeXxxx Помощь студентам 4 04.11.2009 23:47