Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Заказы "Сделайте все за меня"


Рекомендуемые сообщения

malish-z

вычеслить g(1,2;s)+g(2*s-1;s*t) где g(a,b)=(a^2+b^2)/(a^2+2ab+3b^2+4). Вычисление функции g(a,b) оформить в виде подпрограммы.
function g(a,b:real):real; begin g:=(a*a+b*b)/(a*a+2*a*b+3*b*b+4) end; var s,t:real; begin write('s t: '); readln(s,t); writeln(g(1.2,s)+g(2*s-1,s*t):0:6); readln end.

P.S. Чуть подправил - забыл, оказывается, ввод t :blink:

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

alfadix

Координаты границы земельного участка задаются последовательностью точек(x,y).Два входных файла содержат координаты границ двух участков. Разработать программу, которая проверяет, имеются ли параллельные сегменты границы и указывает координаты сегментов. Результат записывается в выходной файл.Зарание большое спасибо!
#include<iostream>#include<fstream>#include<iomanip>#include<math.h>  using namespace std;int main(){int i,j,k,k1=0,k2=0; float m1[20],m2[20],dx1,dy1,dx2,dy2; ifstream ifs1("input1.txt"), ifs2("input2.txt"); ofstream ofs("output.txt"); if(ifs1.fail()){cerr<<"Error of opening of the file input1.txt"<<endl; getchar(); return 1;}while(!ifs1.eof())ifs1>>m1[k1++]; for(i=0;i<k1;i++)cout<<m1[i]<<endl; ifs1.close();if(ifs2.fail()){cerr<<"Error of opening of the file input2.txt"<<endl; getchar(); return 1;}while(!ifs2.eof())ifs2>>m2[k2++]; for(i=0;i<k2;i++)cout<<m2[i]<<endl; ifs2.close();ofs.setf(ios::right|ios::fixed);for(i=3;i<k1-2;i+=2){dx1=m1[i-1]-m1[i-3]; dy1=m1[i]-m1[i-2];   for(j=3;j<k2-2;j+=2){dx2=m2[j-1]-m2[j-3]; dy2=m2[j]-m2[j-2];  if(dx1==0&&dx2==0||dx1!=0&&dx2!=0&&fabs(dy1/dx1-dy2/dx2)<0.0001)     {for(k=3;k>=0;k--)ofs<<setprecision(4)<<setw(15)<<m1[i-k]; ofs<<endl;       for(k=3;k>=0;k--)ofs<<setprecision(4)<<setw(15)<<m2[j-k]; ofs<<endl<<endl;}}} ofs.close();}

Входные файлы будут называться input1.txt и input2.txt

Выходной файл будет называться output.txt

В нем строки идут парами, каждая пара строк - граничные точки параллельных сегментов соответственно первого и второго участков.

В каждом входном файле граничные точки участка идут в виде x1 y1 x2 y2 x3 y3 ...

Например,

1.5 2 3.5 4 7 4 3 5

и

2 3 4 5 7 5 6 1

Выходной файл тогда будет выглядеть так:

1.5000 2.0000 3.5000 4.0000

2.0000 3.0000 4.0000 5.0000

3.5000 4.0000 7.0000 4.0000

4.0000 5.0000 7.0000 5.0000

P.S. Слегка изменил условный оператор для исключения возможности деления на ноль.

Изменено пользователем Тролль
  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

zdanilv

Напишите функцию, которая реализовывает обьеденение двоих односвязаних списков.Второй список добавляется в конець первого.

спасибо заранее)))

#include<iostream>#include<iomanip>#include<list>#include <time.h> using namespace std;template<class T> void addlist(T& list1, T& list2, T& list3) {class T::iterator it;for(it=list1.begin(); it!=list1.end(); it++)list3.push_back(*it);for(it=list2.begin(); it!=list2.end(); it++)list3.push_back(*it);}int main(){srand(time(NULL)); const int n=5; int i1[n], i2[n];for(int i=0;i<n;i++){i1[i]=rand()%100; i2[i]=rand()%100;}list<int> list1(i1,i1+n), list2(i2,i2+n), list3; list<int>::iterator it;addlist <list<int> >(list1,list2,list3);cout<<"list1: "; for(it=list1.begin(); it!=list1.end(); it++)cout<<setw(4)<<*it; cout<<endl;cout<<"list2: "; for(it=list2.begin(); it!=list2.end(); it++)cout<<setw(4)<<*it; cout<<endl;cout<<"list3: "; for(it=list3.begin(); it!=list3.end(); it++)cout<<setw(4)<<*it; cout<<endl; getchar();}

Тестовая главная функция main создает два списка list1 и list2, заполненных каждый пятью (n=5) случайными целыми числами, объединяет их при помощи пользовательской функции addlist в список list3 и выводит на экран все три списка.

Изменено пользователем Тролль
  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

а как эту программу написать через функцию?

program P1;

uses crt;

var d:real;

procedure sust(a,b,c:real; var x1,x2:real; var q:boolean);

begin if a=0 then begin x1:=-c/b; x2:=x1 end

else

begin

d:=b*b-4*a*c; q:=d<0;

if not q then

begin

d:=sqrt(d); x1:=(-b+d)/(2*a); x2:=(-b-d)/(2*a)

end end;

writeln(x1:5:2,' ',x2:5:2); end;

var a,c,z,x1,x2,y1,y2:real; q:boolean;

begin write('zadaite a,c='); readln(a,c);

sust(a,1,-4,x1,x2,q); if q then

begin writeln('rozvjazkiv ne isnye');

readln; end;

sust(2,1,-c,y1,y2,q); if q then

begin writeln('rozvjazkiv ne isnye'); readln;

end;if x2=y2 then begin writeln('z ne vuznachena'); readln; end;

z:=(x1+y1)/(x2-y2); writeln('z=',z:5:2);

readkey

end.

Ссылка на комментарий
Поделиться на другие сайты

malish-z

а как эту программу написать через функцию
program P1;uses crt;function q(a,b,c:real; var x1,x2:real):boolean;var d:real; begin q:=false; if a=0 then if b<>0 then begin x1:=-c/b; x2:=x1 end else q:=true else  begin  d:=b*b-4*a*c;   if d>=0 then begin d:=sqrt(d); x1:=(-b+d)/(2*a); x2:=(-b-d)/(2*a) end   else q:=true;  end;end;var a,c,z,x1,x2,y1,y2:real;begin write('zadaite a,c='); readln(a,c);if q(a,1,-4,x1,x2) or q(2,1,-c,y1,y2) then   begin writeln('rozvjazkiv ne isnye'); readln; exit end;if x2=y2 then begin writeln('z ne vuznachena'); readln; exit end;z:=(x1+y1)/(x2-y2); writeln('z=',z:5:2);readkeyend.

Решение квадратного уравнения сделано функцией (q=true - признак отсутствия корней).

Изменено пользователем Тролль
  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

alfadix

Спасибо за помощь. Можно еще комментарии к строчкам.
#include<iostream>  // подключение заголовочного файла стандартного потока ввода-вывода #include<fstream>  // подключение заголовочного файла файлового потока ввода-вывода #include<iomanip>  // подключение заголовочного файла манипуляторов#include<math.h>   // подключение заголовочного файла математических функций using namespace std;  // подключение стандартного пространства именint main(){ // заголовок главной функцииint i,j,k,k1=0,k2=0; float m1[200],m2[200],dx1,dy1,dx2,dy2; // объявление и инициализация переменныхifstream ifs1("input1.txt"), ifs2("input2.txt"); ofstream ofs("output.txt"); // инициализация файловых потоков if(ifs1.fail()){cerr<<"Error of opening of the file input1.txt"<<endl; getchar(); return 1;} // проверка существования первого входного файла while(!ifs1.eof())ifs1>>m1[k1++]; for(i=0;i<k1;i++)cout<<m1[i]<<endl; ifs1.close(); // ввод в массив и вывод на экран содержания первого входного файлаif(ifs2.fail()){cerr<<"Error of opening of the file input2.txt"<<endl; getchar(); return 1;} // проверка существования второго входного файла while(!ifs2.eof())ifs2>>m2[k2++]; for(i=0;i<k2;i++)cout<<m2[i]<<endl; ifs2.close(); // ввод в массив и вывод на экран содержания второго входного файлаofs.setf(ios::right|ios::fixed); // установка формата выводаfor(i=3;i<k1-2;i+=2){dx1=m1[i-1]-m1[i-3]; dy1=m1[i]-m1[i-2]; // проход по последовательности вершин первого участка  for(j=3;j<k2-2;j+=2){dx2=m2[j-1]-m2[j-3]; dy2=m2[j]-m2[j-2]; // проход по последовательности вершин второго участка  if(dx1==0&&dx2==0||dx1!=0&&dx2!=0&&fabs(dy1/dx1-dy2/dx2)<0.0001) // проверка совпадения наклонов сегментов      {for(k=3;k>=0;k--)ofs<<setprecision(4)<<setw(15)<<m1[i-k]; ofs<<endl; // запись в файл координат сегмента первого участка       for(k=3;k>=0;k--)ofs<<setprecision(4)<<setw(15)<<m2[j-k]; ofs<<endl<<endl;}}} // запись в файл координат сегмента второго участкаofs.close();} // закрытие выходного потока

P.S. Заодно на всякий случай увеличил максимальное количество сегментов участков.

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

На языке Си, помогите пожалуйста.

Дано действительные числа а1, а2, ..., аn. Среди этих чисел все отрицательные числа увеличить на 0,25, а все неотъемлемые заменить на 0,2. Затем полученные отрицательные числа отсортировать по не возрастанию.

Ссылка на комментарий
Поделиться на другие сайты

Riki_Tiki_Tavi

"Неотъемлемые числа" - это, как я понимаю, неотрицательные?

#include <stdio.h>int main(){int i,j,k,n; float p,a[100];printf("n="); scanf("%d",&n); printf("a="); for(i=0;i<n;i++)scanf("%f",&a[i]);for(i=0;i<n;i++)if(a[i]<0)a[i]+=0.25;else a[i]=0.2; for(i=0;i<n;i++)for(j=k=0;j<n;j++) if(a[j]<0){if(a[j]>a[k]){p=a[j];a[j]=a[k];a[k]=p;}k=j;}for(i=0;i<n;i++)printf("%8.2f",a[i]); getchar(); getchar(); return 0;}
Изменено пользователем Тролль
  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

Здраствуйте. Нужно модифицировать программу на winapi:

#undef UNICODE#include <QString>#include <windows.h>#include <math.h>#include <stdio.h>#include <stdlib.h>#define ID_BCalc 104#define ID_BQuit 105#define ID_BSetParams 103#define ID_EDIT1 200#define ID_EDIT2 201LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);LRESULT CALLBACK WndParamsProc(HWND, UINT, WPARAM, LPARAM);HINSTANCE hInst;char *a="", *b="";float obra, obrb,res;QString rev;HWND hwnd;HWND params;HWND Flabel2;HWND EEdit1;HWND EEdit2;HWND EEdit3;HWND BCalc;HWND BQuit;HWND BSetParams;HWND Flabel;int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdshow){char cname[]="Name of Window";MSG msg;WNDCLASS wc;wc.style=0;wc.lpfnWndProc = (WNDPROC)WndProc;wc.cbClsExtra=0;wc.cbWndExtra=0;wc.hInstance=hInstance;wc.hIcon=LoadIcon(hInstance, (LPCTSTR)IDI_APPLICATION);wc.hCursor=LoadCursor(NULL, IDC_ARROW);wc.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);wc.lpszMenuName=0;wc.lpszClassName=cname;if(!RegisterClass(&wc)){MessageBox(NULL, "try to reg. class failed", "error", MB_OK | MB_ICONSTOP);return -1;}hwnd = CreateWindow(cname, "Лабораторна робота №19. Стойко В.І. СН-41", WS_OVERLAPPEDWINDOW,                     200, 200, 350, 250, NULL, NULL, hInstance, NULL);if(!hwnd)return 0;ShowWindow(hwnd, SW_SHOWNORMAL);UpdateWindow(hwnd);Flabel=CreateWindow( "STATIC","Y = pow((a+3*b),1/4)/((2*a+b)*(3*b-2*a))",                                    WS_CHILD | SS_SIMPLE     ,                                    10,10,250,20,hwnd,                                    NULL,hInst,NULL);ShowWindow(Flabel,SW_SHOW);UpdateWindow(Flabel);BCalc =CreateWindow("button", "Обчислити вираз", WS_CHILD |                       WS_VISIBLE | BS_PUSHBUTTON, 10, 80, 150, 23,                       hwnd, (HMENU)ID_BCalc, hInst, NULL);ShowWindow(BCalc,SW_SHOW);UpdateWindow(BCalc);BQuit=CreateWindow("button", "Вийти з програми", WS_CHILD |                       WS_VISIBLE | BS_PUSHBUTTON, 170, 80, 150, 23, hwnd,                       (HMENU)ID_BQuit, hInst, NULL);ShowWindow(BQuit,SW_SHOW);UpdateWindow(BQuit);/*BSetParams   = CreateWindow("button", "Задати параметри", WS_CHILD | ES_NUMBER | WS_BORDER ,                       10, 80, 150, 23, hwnd, (HMENU)ID_BSetParams, hInst, NULL);ShowWindow(BSetParams,SW_SHOW);UpdateWindow(BQuit);*/EEdit1   = CreateWindow("edit", "a", WS_CHILD | ES_NUMBER | WS_BORDER ,                       10, 40, 80, 20, hwnd, (HMENU)ID_EDIT1, hInst, NULL);ShowWindow(EEdit1,SW_SHOW);UpdateWindow(EEdit1);EEdit2   = CreateWindow("edit", "b", WS_CHILD | ES_NUMBER | WS_BORDER,                       170, 40, 80, 20, hwnd, (HMENU)ID_EDIT1, hInst, NULL);ShowWindow(EEdit2,SW_SHOW);UpdateWindow(EEdit2);while (GetMessage(&msg,0,0,0)){TranslateMessage(&msg);DispatchMessage(&msg);}return 0;}//-------------------------------------------------------------------------LRESULT CALLBACK WndProc(HWND hwnd, UINT message,WPARAM wParam, LPARAM lParam){switch(message){case WM_COMMAND:            if (LOWORD(wParam) == ID_BCalc) {             GetWindowText(EEdit1,a,5);             GetWindowText(EEdit2,b,5);             int a1=atoi(a);             int b1=atoi(b);             res=pow((a1+3*b1),1/4)/((2*a1+b1)*(3*b1-2*a1));             a=rev.number(res).toAscii().data();             Flabel2 = CreateWindow("static", "Результат", WS_CHILD | ES_NUMBER | WS_BORDER,                                    10, 130, 100, 20, hwnd, (HMENU)ID_EDIT1, hInst, NULL);            ShowWindow(Flabel2,SW_SHOW);            UpdateWindow(Flabel2);             EEdit3   = CreateWindow("edit", a, WS_CHILD | ES_NUMBER | WS_BORDER,                       170, 130, 100, 22, hwnd, (HMENU)ID_EDIT1, hInst, NULL);ShowWindow(EEdit3,SW_SHOW);UpdateWindow(EEdit3);            }        else if (LOWORD(wParam)==ID_BSetParams){            }                else                if (LOWORD(wParam) == ID_BQuit) PostQuitMessage(0);            break;case WM_DESTROY:PostQuitMessage(0);break;default:return DefWindowProc(hwnd, message, wParam, lParam);}return 0;}

програма создает окно с двумя Edit'ами и 2 конпками. В поля вводятся значения и при клике на кнопку создается третиее поле, в которм віводится результат. Нужно сделать так, что б параметры вводились в отдельном диалоговом окне. Использовать динамическое создание диалогового окна, тоисть без шаблона окна в ресурсах. Например, с помощью функции CreateDialogIndirect .

Ссылка на комментарий
Поделиться на другие сайты

подскажите как можно реализовать программу на turbo pascal.

нужно прогноз успеваемости студентов на следующий семестр с выводом графика.(но с графиком сама разберусь, а вот идея нужна). CПС.

Ссылка на комментарий
Поделиться на другие сайты

Ребят, если поможете буду очень признателен. В универе проблемы с информатикой, а вылетать не охото.

Нужны две программки на C++ :

Дана целочисленная квадратная матрица.

1) Строку, сумма элементов в которой минимальна, поменять местами с первой.

2) Вычислить количество нулей, расположенных на главной и побочной диагоналях.

Заранее огромное спасибо!!!

Ссылка на комментарий
Поделиться на другие сайты

yuliya#1

нужно прогноз успеваемости студентов на следующий семестр с выводом графика.(но с графиком сама разберусь, а вот идея нужна). CПС.
Тебе лучше всего использовать что попроще. Посмотри тут главку "Наивные методы прогнозирования", а там уж на что отважишься - "Среднее", "Взвешенное скользящее среднее", "Простое экспоненциальное сглаживание" - чем дальше, тем сложнее.

hagies

Нужны две программки на C++

Дана целочисленная квадратная матрица.

Строку, сумма элементов в которой минимальна, поменять местами с первой.

#include <iostream>using namespace std;int main(){int i,j,k,n,s,r,a[20][20]; cout<<"n: "; cin>>n; for(i=0;i<n;i++){cout<<"Line "<<i+1<<": "; for(j=0;j<n;j++)cin>>a[i][j];}r=INT_MAX; for(i=k=0;i<n;i++){for(j=s=0;j<n;j++)s+=a[i][j]; if(s<=r){r=s; k=i;}}for(j=0;j<n;j++)swap(a[0][j],a[k][j]);for(i=0;i<n;i++){for(j=0;j<n;j++){cout.width(8);cout<<a[i][j];}cout<<endl;}getchar(); getchar();}
Вычислить количество нулей, расположенных на главной и побочной диагоналях.
#include <iostream>using namespace std;int main(){int i,j,k,n,a[20][20]; cout<<"n: "; cin>>n; for(i=0;i<n;i++){cout<<"Line "<<i+1<<": "; for(j=0;j<n;j++)cin>>a[i][j];}for(i=k=0;i<n;i++)k+=(a[i][i]==0)+(a[i][n-i-1]==0); if(n%2&&!a[n/2][n/2])k--; cout<<"m="<<k; getchar(); getchar();}
Изменено пользователем Тролль
  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

yuliya#1Тебе лучше всего использовать что попроще. Посмотри тут главку "Наивные методы прогнозирования", а там уж на что отважишься - "Среднее", "Взвешенное скользящее среднее", "Простое экспоненциальное сглаживание" - чем дальше, тем сложнее.

hagies

#include <iostream>using namespace std;int main(){int i,j,k,n,s,r,a[20][20]; cout<<"n: "; cin>>n; for(i=0;i<n;i++){cout<<"Line "<<i+1<<": "; for(j=0;j<n;j++)cin>>a[i][j];}r=INT_MAX; for(i=k=0;i<n;i++){for(j=s=0;j<n;j++)s+=a[i][j]; if(s<=r){r=s; k=i;}}for(j=0;j<n;j++)swap(a[0][j],a[k][j]);for(i=0;i<n;i++){for(j=0;j<n;j++){cout.width(8);cout<<a[i][j];}cout<<endl;}getchar(); getchar();}
#include <iostream>using namespace std;int main(){int i,j,k,n,a[20][20]; cout<<"n: "; cin>>n; for(i=0;i<n;i++){cout<<"Line "<<i+1<<": "; for(j=0;j<n;j++)cin>>a[i][j];}for(i=k=0;i<n;i++)k+=(a[i][i]==0)+(a[i][n-i-1]==0); if(n%2&&!a[n/2][n/2])k--; cout<<"m="<<k; getchar(); getchar();}

Не подскажите а что такое getchar()(искал, но разобраться не получилось)? Почему нет return 0; ???

Что такое % ? И пока последнее что такое cout.width(8)??

Просто у меня уровень совсем новичка))) I'm a LOL)))

Ссылка на комментарий
Поделиться на другие сайты

hagies

getchar() - функция ввода символа с клавиатуры. Тут она используется просто чтобы программа ждала нажатия клавиши Enter и не закрывала окно, чтобы можно было спокойно посмотреть результат.

return 0 в C++ не обязателен. По стандарту, если его нет, программа работает так, будто он есть :)

% - операция получения остатка при делении целых чисел. В С++ много разных операций. В данном случае она у нас используется в операторе if(n%2&&!a[n/2][n/2])k--; Тут дело в том, что если матрица нечетного порядка и в ее середине стоит нуль, то он находится на пересечении главной и побочной диагоналей и при счете суммы нулей на диагоналях учтется дважды. Поэтому в этом операторе проверяется, нечетного ли матрица порядка, и если остаток от деления порядка матрицы на два равен 1 (то есть порядок матрицы нечетный) и (это операция &&) элемент в середине матрицы a[n/2][n/2] равен нулю (операция ! для проверки на "и" меняет нуль на не-нуль), то количество нулевых элементов k корректируется вычитанием из него единицы.

cout - это вывод, для него можно задать формат вывода. cout.width(8) означает для следующего выводимого значения установить ширину поля, в которое оно будет выводится, равным 8 позициям. Благодаря этому у нас все числа выводятся в поле одинаковой ширины независимо от длины их записи и столбцы таблицы на экране получаются ровными.

Ссылка на комментарий
Поделиться на другие сайты

Помогите пожалуйста решить на языке Си.

Дано файл записей  полями которого имеются сведения об урожае в колхозе: название посевной культуры  год посева  урожайность (в процентах)  Вывести на экран сведения об урожае за 1998 год 

Ссылка на комментарий
Поделиться на другие сайты

Riki_Tiki_Tavi

Дано файл записей  полями которого имеются сведения об урожае в колхозе: название посевной культуры  год посева  урожайность (в процентах)  Вывести на экран сведения об урожае за 1998 год
#include<stdio.h>#include<string.h>int main(){char s[100],t[100],n[100],y[5]; int k=1;printf("Name of file? ");gets(n); printf("Year? "); gets(y);FILE *f=fopen(n,"r"); if(!f){puts("No such file! Press Enter"); getchar(); return 1;}while(fgets(s,100,f)){sscanf(s,"%s%s",t,t); if(!strncmp(t,y,4)){printf("%s",s); k=0;}}fclose(f); if(k)printf("No such year!\n"); getchar(); return 0;}

Сделал чуть более общим, чем требуется: имя файла и год, для которого искать, запрашиваются.

Тестовый файл с данными может выглядеть, например, так:

wheat 1997 7

baobab 1997 120

guanaco 1997 23,5

wheat 1998 0

baobab 1998 110

guanaco 1998 33,5

wheat 1999 14

baobab 1999 105

guanaco 1999 43

  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

Riki_Tiki_Tavi

#include<stdio.h>#include<string.h>int main(){char s[100],t[100],n[100],y[5]; int k=1;printf("Name of file? ");gets(n); printf("Year? "); gets(y);FILE *f=fopen(n,"r"); if(!f){puts("No such file! Press Enter"); getchar(); return 1;}while(fgets(s,100,f)){sscanf(s,"%s%s",t,t); if(!strncmp(t,y,4)){printf("%s",s); k=0;}}fclose(f); if(k)printf("No such year!\n"); getchar(); return 0;}

Сделал чуть более общим, чем требуется: имя файла и год, для которого искать, запрашиваются.

Тестовый файл с данными может выглядеть, например, так:

wheat 1997 7

baobab 1997 120

guanaco 1997 23,5

wheat 1998 0

baobab 1998 110

guanaco 1998 33,5

wheat 1999 14

baobab 1999 105

guanaco 1999 43

Я извиняюсь, но не могли бы вы подсказать:

1. k=1; - для чего?

2.if(!f) - то есть нету файла?

3.fgets(s,100,f)) что тут делается и sscanf(s,"%s%s",t,t); if(!strncmp(t,y,4)) и почему не scanf а "sscanf"?

Ссылка на комментарий
Поделиться на другие сайты

Riki_Tiki_Tavi

1. k=1; - для чего?
k - признак отсутствия строк с нужным годом. Если печатать нечего, k остается равным 1 и печатается "Нет такого года!"
2.if(!f) - то есть нету файла?
Да.
3.fgets(s,100,f)) что тут делается и sscanf(s,"%s%s",t,t); if(!strncmp(t,y,4)) и почему не scanf а "sscanf"?
fgets(s,100,f) - в строку s читается запись (строка) из файла f, не больше чем 100 символов.

sscanf(s,"%s%s",t,t)- в строку t дважды считывается из строки s очередное слово (слова разделены пробелами). В результате в t окажется второе слово, то есть год. sscanf потому, что читаем из строки, а не из файла, так что и имя функции соответственно немного другое.

if(!strncmp(t,y,4)) - сравниваем с введенным в программу годом y первые четыре символа года из очередной записи. Если они совпали, strncmp даст 0, !strncmp даст 1, сработает if и напечатается строка s.

  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

Здравствуйте. Есть вопрос по C#.

Имеется программа, которая считывает определённые данные из файла. Для чтения двоичных данных использую класс Stream, для чтения текстовых - StreamReader.

System.IO.Stream a = System.IO.File.Open("C:\\inputfile.in", System.IO.FileMode.Open, System.IO.FileAccess.Read);System.IO.StreamReader b = new System.IO.StreamReader(a);

затем стОит мне хотя бы раз в программе использовать функцию b.read() или b.readline() текущая позиция в потоке a (a.Position) почему-то сбивается (она смещается в конец файла) и при попытке прочитать следующий байт (a.ReadByte()) выдаётся значение -1 (конец файла). При этом использую b.Read() или b.ReadLine(), позиция на месте. Почему так?

Ссылка на комментарий
Поделиться на другие сайты

Помогите пожалуйста написать программу на Паскале:

создать список группы с n учащихся, в котором указано: фамилия, инициалы, дата рождения, специальность, название троих дисциплин и соответствующие оценки

Ссылка на комментарий
Поделиться на другие сайты

malish-z

Ну, это в основном тренировка набивания на клавиатуре. И условие какое-то глупое. Не говоря уже о том, что трое дисциплин не бывает. Трое используется только для мужского рода. "Три грации считалось в древнем мире..."

var a:array[1..100,1..9]of string[22]; i,j,n:integer;procedure wr(s:string; m:integer); begin write(copy(s,1,m),'':m-length(s)) end;begin write ('количество учащихся: '); readln(n);for i:=1 to n do begin write('фамилия и инициалы '); readln(a[i,1]);write('дата рождения '); readln(a[i,2]);write('специальн. '); readln(a[i,3]);write('дисциплина А '); readln(a[i,4]);write('оценка по дисциплине А '); readln(a[i,5]);write('дисциплина Б '); readln(a[i,6]);write('оценка по дисциплине Б '); readln(a[i,7]);write('дисциплина В '); readln(a[i,8]);write('оценка по дисциплине В '); readln(a[i,9]); end; writeln; writeln('фамилия и инициалы  дата рожд. специальн.  ',  'дисц. А оц. дисц. Б оц. дисц. В оц.'); writeln; for i:=1 to n do begin wr(a[i,1],20);wr(a[i,2],11);wr(a[i,3],12);wr(a[i,4],8);  wr(a[i,5],4);wr(a[i,6],8);wr(a[i,7],4);wr(a[i,8],8);wr(a[i,9],4);writeln end;readln end.
  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

Здравствуйте.Прошу помощи, кому не лень напишите пожалуйста на языке Си вот такую задачу:

Создать программу, которая из списков слов L1, L2 формирует новый список L, занося в него по одному разу те слова, содержащиеся хотя бы в одном из списков L1 и L2.

Благодарю.

Ссылка на комментарий
Поделиться на другие сайты

спасибо большое за решение, и то что было для общего развития=) если честно, такого не знала, стыдно.... )

ну на самом деле это только половина условия, вторая половина вот: вывести на экран список студентов в виде:

№, фамилия, Имя, оценка 1, оценка 2, оценка 3,для тех студентов, которые учатся на 5 и фамилии которых начинаются на М

если поможете буду очень благодарна =)

Ссылка на комментарий
Поделиться на другие сайты

malish-z

Трудно найти более глупую задачу. Указать оценки тех, которые учатся на 5... :))

Замени

for i:=1 to n do begin wr(a[i,1],20);wr(a[i,2],11);wr(a[i,3],12);wr(a[i,4],8);

wr(a[i,5],4);wr(a[i,6],8);wr(a[i,7],4);wr(a[i,8],8);wr(a[i,9],4);writeln end;

на

j:=0; for i:=1 to n do if (a[i,1,1]='М')and(a[i,4]='5')and(a[i,6]='5')and(a[i,8]='5')

begin inc(j); write(j:2,' ',wr(a[i,1],20);writeln(' 5 5 5') end;

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу



×
×
  • Создать...