| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > блок схема |
| Автор: ess399 21.11.2009, 18:26 |
| не пойму в чем ошибка блок схемы код:#include<string.h> #include<conio.h> #include<stdio.h> #include <ctype.h> struct STUDENT { char kafedra[20],famil[20],spec[20]; int ocenka; }; int main() { int n,i,j,s, count; char c; struct STUDENT arr[10]; struct STUDENT temp; i=0; while(c!='N') { puts("Vvesti dannue pro studenta(Y/N)"); scanf("%s",&c); if (tolower©=='n') {break;} printf("Vvedite famil %u stud-",i+1); scanf("%s",&arr[i].famil); printf("Vvedite kafedru %u stud-",i+1); scanf("%s",&arr[i].kafedra); printf("Vvedite ocenku %u stud-",i+1); scanf("%d",&arr[i].ocenka); printf("%s,%s,%d\n",arr[i].famil,arr[i].kafedra,arr[i].ocenka); i=i+1; printf("%d\n",i);} n=i; // ñîðòèðîâêà for(i=0; i<n-1; i++) for(j=i+1; j<n; j++) { if(!strcmp(arr[i].kafedra, arr[j].kafedra) && i==j-1) { i++; j++; } if(!strcmp(arr[i].kafedra, arr[j].kafedra) && i!=j-1 && j<n) { temp=arr[i+1]; arr[i+1]=arr[j]; arr[j]=temp; i++; } } s=0; count=0; printf("Kafedra: %s\n", arr[0].kafedra); for(i=0; i<n; i++) { printf("%s\n", arr[i].famil); count++; s+=arr[i].ocenka; if(strcmp(arr[i].kafedra, arr[i+1].kafedra) && i!=n-1) { printf("Srednii ball kafedry %s: %f\n", arr[i].kafedra, (float)s/count); printf("Kafedra: %s\n", arr[i+1].kafedra); s=0; count=0; } } printf("Srednii ball kafedry %s: %f", arr[i-1].kafedra, (float)s/count); getch(); } |
| Автор: null56 21.11.2009, 18:32 | ||
|
| Автор: Luyan 21.11.2009, 22:02 | ||
tolower - что это?, там должна быть с попробуйте так:
и функция у вас int main() - поэтому поставьте в конце return 0; |
| Автор: mes 21.11.2009, 22:45 |
это особенность форума заменять в тексте (с) на ©. кстати это тоже одна из причин для оформления тегами кода. |
| Автор: ess399 22.11.2009, 04:49 |
| код то рабочий, блок схема алгоритма составлена неверно ,преподователь сказал ,только незнаю почему ,помоему схема составлена нормально. |
| Автор: Luyan 22.11.2009, 13:40 | ||
|
| Автор: mes 22.11.2009, 15:04 |
| Luyan, спасибо за конвертацию. ess399, в коде программы явно виден ввод и вывод.. а в блок-схеме отсутствуют соответствующие элементы.. К тому же элементам "процесс" не соответствует их функциональность. Вот к примеру что за процесс "сортированный список" ? |
| Автор: ess399 22.11.2009, 15:48 |
| #include<string.h> #include<conio.h> #include<stdio.h> #include <ctype.h> struct STUDENT { char kafedra[20],famil[20],spec[20]; int ocenka; }; int main() { int n,i,j,s, count; char c; struct STUDENT arr[10]; struct STUDENT temp; i=0; do { printf("Vvedite famil %u stud-", i+1); scanf("%s",&arr[i].famil); printf("Vvedite kafedru %u stud-", i+1); scanf("%s",&arr[i].kafedra); printf("Vvedite ocenku %u stud-", i+1); scanf("%d",&arr[i].ocenka); printf("%s,%s,%d\n", arr[i].famil, arr[i].kafedra, arr[i].ocenka); i=i+1; printf("%d\n",i); puts("Vvesti dannue pro studenta(Y/N)"); scanf("%s",&c); }while ( (c != 'n' ) && (c != 'N') ); n=i; // sortirovka for(i=0; i<n-1; i++) for(j=i+1; j<n; j++) { if(!strcmp(arr[i].kafedra, arr[j].kafedra) && i==j-1) { i++; j++; } if(!strcmp(arr[i].kafedra, arr[j].kafedra) && i!=j-1 && j<n) { temp=arr[i+1]; arr[i+1]=arr[j]; arr[j]=temp; i++; } } s=0; count=0; printf("Kafedra: %s\n", arr[0].kafedra); for(i=0; i<n; i++) { printf("%s\n", arr[i].famil); count++; s+=arr[i].ocenka; if(strcmp(arr[i].kafedra, arr[i+1].kafedra) && i!=n-1) { printf("Srednii ball kafedry %s: %f\n", arr[i].kafedra, (float)s/count); printf("Kafedra: %s\n", arr[i+1].kafedra); s=0; count=0; } } printf("Srednii ball kafedry %s: %f", arr[i-1].kafedra, (float)s/count); getch(); return 0; } что то я вообще запутался |
| Автор: Luyan 22.11.2009, 16:37 |
что именно не понятно? в блок схеме есть условие "показать весь список", в программе у вас его нет. И почему элемент "весь список" вы отправляете снова в начало программы? do - while я предложил для того, чтобы данные вводились, по крайней мере, один раз и список не был бы пуст. У вас же нет проверки выводить или не выводить пустой список. |
| Автор: ess399 22.11.2009, 17:26 |
| вот что получилось |
| Автор: mes 22.11.2009, 18:42 |
не то.. имхо, Вы не понимаете смысла блоков и ставите их наугад.. советую заново проштудировать в пройденном на эту тему. как совет для самостоятельной проверки Вашей схемы, попробуйте ее прочитать... только не так как делаете Вы сейчас, читая просто текст, а с участием значений блоков. P.S. мелочь, но в "условиях" (ромбах) желательно ставить вопрос. Добавлено через 3 минуты и 50 секунд ess399, когда Вы все таки начнете оформлять код иотредактируете предыдущие записи ? Добавлено через 7 минут и 27 секунд Поломав глаза, все таки глянул в код.. И где ж у Вас условие указанное в блок схеме как "Сортировать список..." ? Добавлено через 8 минут и 23 секунды Вобщем вот Вам http://ru.wikipedia.org/wiki/%D0%91%D0%BB%D0%BE%D0%BA-%D1%81%D1%85%D0%B5%D0%BC%D0%B0 информации на этой странице достаточно, чтоб сдеалать Ваше задание. |
| Автор: ess399 22.11.2009, 21:01 |
| В общем вышла такая блок схема,мне пока очень тяжело, я недавно только учить программирование начал , незнаю как завтра здавать буду, да и преподователь ничему неучит а требует. |
| Автор: mes 22.11.2009, 21:30 | ||
ну если Вы даже тут игнорируете замечания и советы, представляю как Вы поступаете с учителем. почему у вас не от условий идут две стрелки ? где блоки сортировки, например где блоки цикла ? почему "закрыть программу" у Вас в блоке вывода ? где меню в коде ? код Вы написали ? если нет, то что голову морочите, что у Вас блок схема не получается.. как она может получиться если Вы не понимаете что у Вас происходит. если все ж писали Вы, то просто замените каждый логический абазац на блоки из приведенной выше ссылки.. Добавлено через 8 минут и 17 секунд у Вас нет ограничения на кол-во вводимых студентов - хотя массив ограничен. лучше использовать функцию swap..
не вдавался вподробности (в частности из за отвратительной видимости кода), но подобное увелечение переменных влечет выход за допустимые границы массива. да и вся сортировка выглядит сомнительной.. |
| Автор: ess399 22.11.2009, 22:15 |
| код конечно не я ,мне еще тяжело в етом, просто похожий нашел в инете. |
| Автор: mes 22.11.2009, 22:51 | ||
ну тогда Вам прежде всего надо разобраться что происходит в коде, а уж потом составлять схему.. Хотя пожалуй Вы полагаете, что все напишут за Вас - тогда Вы запостили не в том разделе, Вам требуется Vingrad - Колледж/Центр помощи. Прямую ссылку давать не буду, ищите, удачи |
| Автор: Luyan 23.11.2009, 00:11 | ||
добавьте ещё защиту, на адекватный ввод оценок, а то у вас оценки можно вводить даже отрицательные
|
| Автор: ess399 23.11.2009, 00:43 |
| спасибо с кодом ,исправил ошибки, буду дальше думать в составлении схемы. |