sopik Опубликовано 30 мая, 2010 Жалоба Поделиться Опубликовано 30 мая, 2010 sopik: А у них бывают отрицательные? :)) Программу смотреть не стал, к тому же у меня другой компилятор, но относительно этого - просто в prosmotr перед printf дай if(a1.ocenka>2) не помогло Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 30 мая, 2010 Жалоба Поделиться Опубликовано 30 мая, 2010 (изменено) sopik: Ну, у тебя по программе разбросаны разные мелкие ошибки, начиная с того, что создавал ты один файл, а пытался просмотреть другой. Но, как я понял, ты выложил сюда не окончательный вариант программы, раз уж у тебя проблема была только в "не могу организовать вывод абитуриентов с положительными оценками". Вот функция prosmotr целиком, у меня она работала нормально. void prosmotr (FILE*nf){clrscr(); nf=fopen("file.dat","rb");while(1){ fread(&a1, sizeof(a1),1,nf); if(feof(nf))break; if(a1.ocenka>2)printf("\n %d %s %s %s %d", a1.nomer,a1.fio,a1.adres,a1.predmet,a1.ocenka);}printf("\n"); fclose(nf); getch(); } Изменено 30 мая, 2010 пользователем Тролль 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
sopik Опубликовано 31 мая, 2010 Жалоба Поделиться Опубликовано 31 мая, 2010 Вот функция prosmotr целиком, у меня она работала нормально. а у меня ошибка : operands are of differing что это такое не знаю Ссылка на комментарий Поделиться на другие сайты Поделиться
sopik Опубликовано 31 мая, 2010 Жалоба Поделиться Опубликовано 31 мая, 2010 В этом виде все работает, в пункте poisk выполняется абитуриента с оценкой больше или равной 3 мне нужно реализовать поиск всех абитуриентов с оценками выше 3 по заданному предмету. Подскажите как подправить? #include <stdio.h>#include<conio.h>#include<string.h>struct abityrent{int nomer;char fio[50];char adres[50];char predmet[20]; int ocenka;} a1,styd;void cozdat (FILE*);void prosmotr (FILE*);void poisk (FILE*);void exit (FILE*);main(){char c;FILE*nf;while (1){clrscr();puts("++++ меню ++++");puts("1-создать");puts("2-посмотреть");puts("3-поиск");puts("0-выход");c=getch();switch©{case '1':cozdat(nf); break;case '2' :prosmotr(nf); break;case '3' :poisk(nf); break;case '0' :return 0;defaults: puts("*неверный ввод");}}}///////////////////////////////////////////////////////////////void cozdat(FILE*nf){char ch;nf=fopen("file1.dat","wb");clrscr();printf("\n ввод абитуриентов\n");do{printf("\n номер*:\n");scanf("%d",&a1.nomer);printf("\n фио:\n");scanf("%s",a1.fio);printf ("\n-адрес*:\n");scanf("%s",a1.adres);printf ("\n предмет :\n");scanf("%s", a1.predmet);printf("\n оценка: \n");scanf("%d",&a1.ocenka);fwrite(&a1, sizeof(a1),1,nf);printf("\n закончить? д/н* \n");ch=getch();}while(ch !='д');fclose(nf);}/////////////////////////////////////////////////////////////////////////void prosmotr (FILE*nf){clrscr();nf=fopen("file1.dat","rb");{fread(&a1, sizeof(a1),1,nf);while(!feof(nf)){printf("\n %d %s %s %s %d",a1.nomer,a1.fio,a1.adres,a1.predmet,a1.ocenka);fread(&a1, sizeof(a1),1,nf);}fclose(nf);getch();}}///////////////////////////////////////////////////////////////////////////void poisk(FILE*nf){clrscr();nf=fopen("file1.dat","rb");if feof(nf){puts("*нет данных");}else{fread(&a1,sizeof(a1),1,nf);styd=a1;while(!feof(nf)){fread(&a1,sizeof(a1),1,nf);if(styd.ocenka<3)styd=a1;}puts("студенты с положительными оценками л:");printf("\n %d %s %s %s %d",styd.nomer, styd.fio, styd.adres,styd.predmet, styd.ocenka);}fclose(nf);getch();} Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 31 мая, 2010 Жалоба Поделиться Опубликовано 31 мая, 2010 (изменено) sopik: Подправить твою функцию poisk можно было бы так: void poisk(FILE*nf){clrscr(); char predmet[20];nf=fopen("file1.dat","rb");if (feof(nf))puts("*нет данных");else{printf ("\n предмет :\n");scanf("%s", predmet); puts("студенты с положительными оценками:"); fread(&a1,sizeof(a1),1,nf);styd=a1; while(!feof(nf)){ if(styd.ocenka>3 && !strcmp(predmet,styd.predmet)) printf("\n %d %s %s %s %d",styd.nomer, styd.fio, styd.adres,styd.predmet, styd.ocenka); fread(&a1,sizeof(a1),1,nf); styd=a1;}fclose(nf); getch();}} P.S. Да, у тебя же положительными оценками тройки не считаются :D Изменил >=3 на >3 Изменено 31 мая, 2010 пользователем Тролль 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
sopik Опубликовано 31 мая, 2010 Жалоба Поделиться Опубликовано 31 мая, 2010 спасибо тебе большое!!!!!! все подправил все нормально!!!!! Ссылка на комментарий Поделиться на другие сайты Поделиться
Vinni Опубликовано 1 июня, 2010 Жалоба Поделиться Опубликовано 1 июня, 2010 прога в Qbasiс Даны натуральные числа к1, к2, к3..., m - число последовательностей. каждая тройка чисел задает координаты центра квадрата (ki, ki+1) и длину стороны ki+2. построить и закрасить разными цветами квадраты я сам тут нифига не понял, но билет звучит именно так.. Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 2 июня, 2010 Жалоба Поделиться Опубликовано 2 июня, 2010 Vinni: я сам тут нифига не понялТут и понимать нечего, кроме того, что вас учат тому, что никому не нужно и устарело на несколько десятилетий. SCREEN 12: DIM X(100), Y(100), L(100)FOR J = 1 TO 100INPUT "L: "; L(J): IF L(J) = 0 THEN EXIT FORINPUT "X: "; X(J): INPUT "Y: "; Y(J)NEXTCLSFOR I = 1 TO J - 1LINE (X(I) + 320 - L(I) / 2, Y(I) + 240 - L(I) / 2)_-(X(I) + 320 + L(I) / 2, Y(I) + 240 + L(I) / 2), I MOD 15 +1, BFNEXT Вводятся по подсказкам длины сторон квадратов и координаты их центров. Начало координат считается в центре экрана (+-320 по X и 240 по Y). При вводе длины стороны, равной нулю, ввод заканчивается и рисуются квадраты. Ссылка на комментарий Поделиться на другие сайты Поделиться
Vinni Опубликовано 2 июня, 2010 Жалоба Поделиться Опубликовано 2 июня, 2010 Vinni: Тут и понимать нечего, кроме того, что вас учат тому, что никому не нужно и устарело на несколько десятилетий. SCREEN 12: DIM X(100), Y(100), L(100)FOR J = 1 TO 100INPUT "L: "; L(J): IF L(J) = 0 THEN EXIT FORINPUT "X: "; X(J): INPUT "Y: "; Y(J)NEXTCLSFOR I = 1 TO J - 1LINE (X(I) + 320 - L(I) / 2, Y(I) + 240 - L(I) / 2)_-(X(I) + 320 + L(I) / 2, Y(I) + 240 + L(I) / 2), I MOD 15 +1, BFNEXT Вводятся по подсказкам длины сторон квадратов и координаты их центров. Начало координат считается в центре экрана (+-320 по X и 240 по Y). При вводе длины стороны, равной нулю, ввод заканчивается и рисуются квадраты. спасибо) Ссылка на комментарий Поделиться на другие сайты Поделиться
Vinni Опубликовано 2 июня, 2010 Жалоба Поделиться Опубликовано 2 июня, 2010 после той проги препод сказал что я умный и дала кучу заданий(( я в q bsic ни бум-бум(( помогите кто чем может 1)определить сумму элементов массива X(n) с четными номерами. вывести массив и полученную сумму. упорядочить массив X(n) по возрастанию. вывести полученный массив. исходный массив элементов получить с помощью датчика случайных чисел. значения буквенных переменных задавать с клавиатуры. 2) Дана матрица целых чисел Х(n,m). Найти максимальный элемент матрицы 3) Определить сумму ASCII-кодов символов, составляющих строку a$. Вывести полученное значение и строку b$, состоящую из символов, ASCII-коды которых на заданное число n больше соответствующих символов строки a$ 4) даны действительные числа x1, y1, x2, y2 (x1>0, y1<0). определить квадраты плоскости, в которых лежит отрезок, концами которого являются точки (х1, у1) и (ч2, у2) Ссылка на комментарий Поделиться на другие сайты Поделиться
Yezhishe Опубликовано 2 июня, 2010 Жалоба Поделиться Опубликовано 2 июня, 2010 To Vinni после той проги препод сказал что я умный и дала кучу заданий(( я в q bsic ни бум-бум((помогите кто чем может А устроившись на работу - программы отсюда же будут делаться? Не проще ли немного поучиться по специальности? Или уж избрать иное поприще... Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 2 июня, 2010 Жалоба Поделиться Опубликовано 2 июня, 2010 Vinni: Yezhishe плохого не посоветует. Сам Бейсик тебе, скорее всего, не понадобится, а вот умение учиться, изучать что-то и сдавать - да. Ни бум-бум - так голова есть? Стань бум-бум. Как говорил один баран из мультфильма при виде ворот, головой работать надо :blink: 1. INPUT "N: "; n: RANDOMIZE TIMER: DIM a(n): CLSFOR i = 1 TO n: a(i) = INT(RND * 200) - 99: NEXTFOR i = 1 TO n: PRINT USING "####"; a(i); : NEXT: PRINTs = 0: FOR i = 1 TO n: s = s + a(i): NEXT: PRINT "S="; sFOR j = 2 TO n: FOR i = j TO nIF a(i) < a(i - 1) THEN SWAP a(i - 1), a(i)NEXT: NEXTFOR i = 1 TO n: PRINT USING "####"; a(i); : NEXT: PRINT 2. INPUT "N,M : "; n, m: RANDOMIZE TIMER: CLSDIM a(n, m): FOR i = 1 TO n: FOR j = 1 TO m: a(i, j) = INT(RND * 200) - 99: NEXT: NEXTFOR i = 1 TO n: FOR j = 1 TO m: PRINT USING "####"; a(i, j); : NEXT: PRINT : NEXTmx = a(1, 1): FOR i = 1 TO n: FOR j = 1 TO m: IF mx < a(i, j) THEN mx = a(i, j)NEXT: NEXT: PRINT "MAX="; mx 3. CLS : INPUT "string "; a$: s = 0FOR i = 1 TO LEN(a$): s = s + ASC(MID$(a$, i, 1)): NEXT: PRINT "SUM="; sINPUT "N "; n: b$ = a$FOR i = 1 TO LEN(b$): MID$(b$, i, 1) = CHR$(ASC(MID$(b$, i, 1)) + n): NEXTPRINT b$ Четвертое задание по сути простое, там только выбор одного из шести возможных вариантов ответа, но проверок воз и маленькая тележка - слишком долго стучать по клавиатуре. Ссылка на комментарий Поделиться на другие сайты Поделиться
Vinni Опубликовано 2 июня, 2010 Жалоба Поделиться Опубликовано 2 июня, 2010 Не проще ли немного поучиться по специальности? Или уж избрать иное поприще... это не моя специальность. это как фиологу учить матан. я учу то, что мне действительно нужно и интересно. с информатикой всегда проблемы были Тролль: спасибо большое Ссылка на комментарий Поделиться на другие сайты Поделиться
Yezhishe Опубликовано 2 июня, 2010 Жалоба Поделиться Опубликовано 2 июня, 2010 Ну если не твоя специальность - то (пардон) занафигом? Есть же такое понятие, как "специализация"... Ссылка на комментарий Поделиться на другие сайты Поделиться
nolx Опубликовано 3 июня, 2010 Жалоба Поделиться Опубликовано 3 июня, 2010 нужно решить по этой программе замените по заданию: 1.вычисление количества положительных элементов в четных строках матрицы 2.вычисление сумм положительных и отрицательных элементов и количество отдельных элементов матриц Program Procedur; uses crt; type matr=array [1..5,1..5] of integer; const A: matr= ((1,2,5,5,3), (1, 3, 4, 5, 3), (6, 7, 4, 6, 8), (4, 6, 8, 4, 8), (9, 6, 4, 9, 7)); var i,j:integer; b:matr; function element(const m:matr):integer; var max:integer; begin clrscr; for i:=1 to 5 do for j:=1 to 5 do if m[i,j] mod 3=0 then max:=m[i,j]; for i:=1 to 5 do for j:=1 to 5 do if (m[i,j] mod 3=0)and (m[i,j]>max) then max:=m[i,j]; element:=max end; procedure Vichet(var a: matr); begin for i:=1 to 5 do if i mod 2=0 then for j:=1 to 5 do a[i,j]:=a[i,j]-a[i-1,j]; end; begin randomize; for i:=1 to 5 do for j:=1 to 5 do b[i,j]:= random(10)-5; writeln(element(A), '-rezultat funkcy'); for i:=1 to 5 do begin for j:=1 to 5 do write(b[i,j]:5); writeln end; vichet(b); writeln('New'); for i:=1 to 5 do begin for j:=1 to 5 do write(b[i,j]:5); writeln end; end. Ссылка на комментарий Поделиться на другие сайты Поделиться
Shadow TH Опубликовано 3 июня, 2010 Жалоба Поделиться Опубликовано 3 июня, 2010 Здравствуйте. Нужно решить интеграл методом Чебышева в QBasic'е. Заранее спасибо. Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 3 июня, 2010 Жалоба Поделиться Опубликовано 3 июня, 2010 Shadow TH: CLS : a = 1.1: b = 2.56: m = 4t = SQR(2) / 2: i = 0: h = (b - a) / mFOR e = 1 TO m: w = a + h: c = (w + a) / 2d = (w - a) / 2: x = c - d * t: GOSUB Si = i + f: x = c: GOSUB Si = i + f: x = x + d * t: GOSUB Si = i + f: a = w: NEXTi = i * h / 3: PRINT i: ENDS: f = (1 + .5 * x * x) / (1.2 + SQR(.6 * x * x + 1.5)): RETURN Тут в первой строке - пределы интегрирования и число интервалов разбиения интервала интегрирования (4). В последней строке - подинтегральное выражение. Ссылка на комментарий Поделиться на другие сайты Поделиться
Shadow TH Опубликовано 4 июня, 2010 Жалоба Поделиться Опубликовано 4 июня, 2010 Спасибо :rolleyes: Ссылка на комментарий Поделиться на другие сайты Поделиться
maksimilian Опубликовано 5 июня, 2010 Жалоба Поделиться Опубликовано 5 июня, 2010 Дан вещественное число 0<e<1 . Найти первый из элементов последовательности {a(n)} , для которого выполняется условие модуль a(n)-a(n-1)<e , если последовательность создается по следующему закону a(1)=x; a(n+1)=(x^(2*n)*sinx)/n^2*a(n) Ссылка на комментарий Поделиться на другие сайты Поделиться
maksimilian Опубликовано 5 июня, 2010 Жалоба Поделиться Опубликовано 5 июня, 2010 реализация в паскале Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 5 июня, 2010 Жалоба Поделиться Опубликовано 5 июня, 2010 maksimilian: var n:integer; a,b,x,e:real; begin write('e ? '); readln(e); write('x ? '); readln(x); b:=x; n:=1; repeat inc(n); a:=b; b:=exp(2*n*ln(x))*sin(x)/n/n*a; until abs(a-b)<e; writeln(b); readlnend. Ссылка на комментарий Поделиться на другие сайты Поделиться
MakentoIII Опубликовано 6 июня, 2010 Жалоба Поделиться Опубликовано 6 июня, 2010 Тролль ответь Ссылка на комментарий Поделиться на другие сайты Поделиться
DJFlint Опубликовано 6 июня, 2010 Жалоба Поделиться Опубликовано 6 июня, 2010 ! Предупреждение:Дражайший, что за требования? Вам кто-то обязан? Ссылка на комментарий Поделиться на другие сайты Поделиться
Yezhishe Опубликовано 6 июня, 2010 Жалоба Поделиться Опубликовано 6 июня, 2010 ! Предупреждение:To MakentoIIIПрочтите пожалуйста, вот этот текст...Внимательно и вдумчиво. Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 6 июня, 2010 Жалоба Поделиться Опубликовано 6 июня, 2010 Тролль ответьОтветил в ПМ. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти