marcelo Публикувано Февруари 26, 2009 Report Share Публикувано Февруари 26, 2009 Някои може ли да ми помогне с това условие от задача за с++ -намиране на броя на прекъсващите жени (прекъсват студенти с повече от 2 двойки).Благодаря предварително! Цитирай Link to comment Сподели другаде More sharing options...
Sprint-Debugger Публикувано Февруари 26, 2009 Report Share Публикувано Февруари 26, 2009 Поне дай цялата задача, защото така нищо не се разбира. И все пак щом ти искат някакво условие, ползвай if. Например: ...if(student>=2) br++;... student и br са променливи Цитирай Link to comment Сподели другаде More sharing options...
marcelo Публикувано Февруари 26, 2009 Author Report Share Публикувано Февруари 26, 2009 Условието е: За група студенти за зададени име, ЕГН, фак. №, оценки по 10 дисциплини, среден успех. Да се създаде програма, използваща подпрограми за: -създаване на файл с информация за групата студенти,без да се въвежда среден успех; -изчисляване на средния успех на всеки един от студентите; -намиране на броя на прекъсващите жени (прекъсват студенти с повече от 2 двойки). Това съм сътворил до момента:#include <stdio.h> #include <conio.h> struct student{ char ime[31]; char EGN[11]; long FN; int oc[10];float sru; }; FILE *fp; char fime[31]; student stud; // vuvejdane na 1 sudent void readStud(student *st) { int i; printf("ime:");gets(st->ime); printf("egn:");gets(st->EGN); printf("fak.nomer:");scanf("%ld",&st->FN); printf("ocenki po 10 disiplini\n"); for (i=0;i< 10;i++){ printf("Po %d-a disciplina:",i+1);scanf("%d",&st->oc[i]); } int j,s=0; for(j=0;j<10;j++) s+=st->oc[j]; st->sru=s/10.0; getchar(); } //izvejdane na studenti void writeStud(student st) { int i; printf("ime: %s\n",st.ime); printf("egn: %s\n",st.EGN); printf("fak.nomer:%06ld\n",st.FN); printf("Ocenki: "); for (i=0;i<10;i++) printf("%d ",st.oc[i]); printf("\n"); printf("Sreden uspeh: %4.2f\n",st.sru); } // suzdavane na fail void sazdaj(){ fp=fopen(fime,"w");fclose(fp); printf("failut e suzdaden!\n"); } //dobavqne kym failut void dobavi (){ fp=fopen(fime,"a+b"); char ch; do { readStud(&stud); fwrite(&stud,sizeof(stud),1,fp); printf("o6te (d/n)?");ch=getchar();getchar(); }while (ch!='n'); fclose (fp); } void spisukall() { int k=0; fp = fopen(fime,"rb"); fread(&stud,sizeof(stud),1,fp); while (!feof(fp)) { writeStud(stud); k++; fread(&stud,sizeof(stud),1,fp); } fclose(fp); printf("Namereni: %d\n",k); } //glavna programa main () { char otg[3]; printf("zadaite ime na failut:");gets(fime); do { printf(" Menu\n"); printf(" 1. Suzdavane na prazen fail\n"); printf(" 2. Dobavqne kum failut\n"); printf(" 3. Obsht spisuk\n"); printf(" Izbor (0-za krai): ");gets(otg); switch (otg[0]) { case '1':sazdaj();break; case '2':dobavi();break; case '3':spisukall();break; } }while (otg[0]!='0'); } Цитирай Link to comment Сподели другаде More sharing options...
crio Публикувано Февруари 26, 2009 Report Share Публикувано Февруари 26, 2009 Според мен, най-лесно ще е да проверяваш всеки student по следния начин:bool check(student s){ int i = 0,c = 0; if(s.EGN[8] % 2 == 1){ while(i < 10){ if(s.oc[i] == 2) c++; i++; } } if(c => 2) return true; return false; } Може и да има грешки в кода ми, но нямам под ръка редактор. Цитирай Link to comment Сподели другаде More sharing options...
marcelo Публикувано Февруари 27, 2009 Author Report Share Публикувано Февруари 27, 2009 Според мен, най-лесно ще е да проверяваш всеки student по следния начин:bool check(student s){ int i = 0,c = 0; if(s.EGN[8] % 2 == 1){ while(i < 10){ if(s.oc[i] == 2) c++; i++; } } if(c => 2) return true; return false; } Може и да има грешки в кода ми, но нямам под ръка редактор. Този код трябва да е като отделна функция нали? Цитирай Link to comment Сподели другаде More sharing options...
expire Публикувано Април 14, 2010 Report Share Публикувано Април 14, 2010 Здравейте и от мен... първо искам да се извиня на автора на темата, че пиша в нея по моят въпрос, но просто условието на задачата ми е същото, само с 1 различно подусловие и реших да не създавам още една такава тема... Значи задачата е това:За групата студенти са зададени име, ЕГН, фак. номер, оценките по 10 дисциплини, среден успех. Да се създаде програма, използваща подпрограми за:- създаване на масив с информация за групата студенти, без да се въвежда ср. успех;- изчисляване на средния успех на всеки един от студентите;- да се създаде масив с фак. номер на студентите, които трябва да се явят на изпит по първата дисциплина. трябва ми последното подусловие... надявам се някой да помогнеблагодаря предварително на всички Цитирай Link to comment Сподели другаде More sharing options...
false Публикувано Април 14, 2010 Report Share Публикувано Април 14, 2010 Нека приемем, че ползваш структура от данни, подобна на тази: struct students { char studName[40]; // store student name unsigned F_num[20]; // store facultet number char EGN[20]; // store student EGN double Ratings[10]; // store student ratings double avgRatings; // store average rating for any student } std[max_students]; Ако условието за поява на изпит е да има оценка по предмета ( 2.00 >= оценка < 2.50 ), то въртиш един цикъл и обхождаш всички членове на структурата като проверяваш стойността на Ratings[0], ако оценката наистина е двойка - пазиш факултетния номер в предварително създаден двумерен масив. Обхождането си го представям по този начин: for(unsigned i=0, j = 0; i<stud_MAX; i++) { if( std[i].Ratings[0] < 2.50 ) // condition { stud_exam[j++][0] = std[i].F_num; } } j - брояч за stud_exam масивът, който се инкрементира само когато е изпълнени условието за изпитstud_exam[m][n] - двумерен масив, предварително деклариран, задължително от тип unsigned - пази факултетните номера когато е изпълнено условието, примерна декларация: unsigned stud_exam[stud_MAX][1], как се подава двумерен масив на функция: http://bytes.com/topic/c/answers/726259-how-pass-multi-dimensional-array --- Not tested! Цитирай Link to comment Сподели другаде More sharing options...
artful21 Публикувано Ноември 19, 2010 Report Share Публикувано Ноември 19, 2010 Здравейте имам проблем с една програма която ми е доста важна. Да се напише програма,която въвежда символен низ с максимална дължина L.Да се състави нов стринг,в който всеки символ от ниския регистър е обърнат в символ от висок регистър и обратно,а празните интервали са пропуснати.Програмата да заделя необходимата динамична памет за низовете. Трябва ми кода и блок-схема на алгоритъма (поне едно от двете).Ако някои може да ми помогне ще съм му изключително благодарен. Цитирай Link to comment Сподели другаде More sharing options...
IVAN Публикувано Ноември 19, 2010 Report Share Публикувано Ноември 19, 2010 Здравейте имам проблем с една програма която ми е доста важна. Да се напише програма,която въвежда символен низ с максимална дължина L.Да се състави нов стринг,в който всеки символ от ниския регистър е обърнат в символ от висок регистър и обратно,а празните интервали са пропуснати.Програмата да заделя необходимата динамична памет за низовете. Трябва ми кода и блок-схема на алгоритъма (поне едно от двете).Ако някои може да ми помогне ще съм му изключително благодарен. И на 100 места да го пуснеш като коментар, еднаква помощ ще получиш... изтрих ти другите два Цитирай Link to comment Сподели другаде More sharing options...
Препоръчан пост
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.