![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 03.03.2011
Сообщений: 17
|
![]()
Почему не работает ввод числа типа 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; } |
![]() |
![]() |
![]() |
#2 |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
![]()
повезло вам с преподом если он принимает такое:
Код:
|
![]() |
![]() |
![]() |
#3 |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
![]()
вы выводите текст на русском языке, видимо использовали setlocale.
Если при этом был использован макрос LC_ALL - то чтобы вводить дробные числа нужно использовать запятую вместо точки для разделения дробной и целой частей. Нужно использовать LC_CTYPE |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ошибка типа 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 |