Wednesday, December 15, 2010

C++

 
(1)Составить программу, которая по введенному году и 

номеру месяца определяет число дней в этом месяце.

#include<iostream>

#include<conio.h>

Using namespace  std;

int _tmain(int argc, _TCHAR* argv[])

{

        int  a,b;

        cout<<"\n\n\t\tENTER YEAR";  

        cin>>b;

        cout<<"\n\n\t\tENTER NO OF MONTH";

        cin>>a;

        if(a==4||a==6||a==9||a==11)

cout<<"\n\n\t\t 30 days  "<<endl<<endl;

    else if(a==1||a==3||a==5||a==7||a==8||a==10||a==12)  

         cout<<"\n\n\t\t 31 days  "<<endl<<endl;

        else if(a==2)

        {

         if(0==b%4)

                cout<<"\n\n\t\t 29 days "<<endl<<endl;
       
        else

                cout<<"\n\n\t\t28  days "<<endl<<endl;

        }

        Else

                cout<<"IMPOSSIABLE MONTH "<<endl<<endl;

        _getch ();

        return 0;

}

(2)Ввести с клавиатуры целое число, которое будет 

являться количеством целых чисел во вводимой 

последовательности. Определить максимальное среди 

нечетных элементов последовательности.

#include "stdafx.h"

#include <iostream>

#include <conio.h>

using namespace std;


int _tmain(int argc, _TCHAR* argv[])

{

    int a,b,c,count=0,max=-32768;

    cout <<"input of count num=";

    cin >>a;

for (c=0;c<a;c++)

   {

      cin >>b;

      if (b>max)

    {

           max=b;

    }

    if(b%2!=0)

    {

       count++;

    }

    }

cout <<"amount odd num="<<count<<endl;

cout <<"max num="<<max<<endl;

_getch();

    return 0;

}


(3)Дано начальное значение =1 и рекуррентная формула

. Найти номер первого элемента, превысившего

введенное с клавиатуры число.

#include<iostream>

#include<conio.h>

using namespace std;

int _main(int argc, _TCHAR* argv[])

     
double n,a=1;

     cout <<"enter the  num"<<endl;

cin>>n;

     while(a<n)

     { 

           a=(a+2/a);

           cout<<a<<' ';


     }

     cout<<"a\t"<<a<<endl;

     _getch();

     return 0;

}

 
(4)Методом деления отрезка пополам и 

методом итераций найти приближенное

значение корня уравнения  
x5 x – 0.2 = 0
 

на интервале [0.9,1.1]. Абсолютная
 

погрешность не превышает 0.0001.
 

Сравнить методы вычисления.

#include "stdafx.h"

#include "stdafx.h"

#include<iostream>

#include<conio.h>

#include<math.h>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

     float xt,xg=1.3,eps=0.001,x=5*eps;

     int step=0;

     while(fabs(x)>=eps)

     {
          
xt=-0.2*(xg*xg*xg*xg+2*xg*xg*xg-xg-1)+xg;

           x=xt-xg;

           step++;

           xg=xt;

     }

cout<<"Root="<<xt<<"and receive in

step"<<step;

     getch();

    return 0;

}

(5)В массиве из 20 целых чисел найти что больше - 

среднее арифметическое значение положительных
 

элементов или модуль среднего арифметического 

значения отрицательных элементов.

#include "stdafx.h"

#include<iostream>

#include<conio.h>

#include<math.h>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

      int i;

     int arr[20] ;

     int oddsum=0;

     int oddcnt=0;

     int oddavg=0;

     int sum = 0 ;

     int avg= 0 , cnt= 0 ;

for (int i=0; i < 20 ; i++)

     {

          arr[i] = rand()% 100 - 50 ;

          cout << " " << arr[i];

          if ( arr[i] > 0 )

          {

              sum = sum + arr[i] ;

              cnt++;

          }

          else 

          {
             
             oddsum = oddsum + arr[i] ;

oddcnt++;

          }

     }

   cout << " \n\n\n sum of positive integer====> " << sum ;

   cout << " \n\n\n count ====> " << cnt ;

   avg= sum/cnt;

   cout<<" \n\n\n evenaverage = sum / count= [ "<<avg;

  
   cout << " \n\n\n sum of negative integer ====> " << oddsum ;

   cout << " \n\n\n count ====> " << oddcnt ;

oddavg= oddsum/oddcnt;

   cout << " \n\n\n oddaverage = sum / count = [ " << oddavg <<" 

]" ;

_getch ();

     return 0;

}

 
(5-2)Дана вещественная квадратная матрица 5х5. Получить новую

матрицу путем прибавления

к элементам каждой строки матрицы наибольшего значения элементов

этой строки.

#include "stdafx.h"

#include<iostream>

#include<iomanip>

#include<time.h>

#include<conio.h>

using namespace std;

void owl(int mat[5][5]);

int ran(int z);

void soegyi(int mat[5][5]);

int _tmain(int argc, _TCHAR* argv[])

{
    time_t  t;

    srand(time(&t));

    int mat[5][5];

    owl(mat);

    getch();
}
/*..............................................................................*/

void owl(int mat[5][5])

{
    int i,j,a=0;

    for(i=0;i<5;i++)

    {
        for(j=0;j<5;j++)

        {
            mat[i][j]=ran(a);
           
                cout<<setw(3)<<mat[i][j]<<" ";

            }

            cout<<endl;
           
        }

soegyi(mat);
       
    }

/*..............................................................................*/

    int ran(int z)

    {

        z=rand()%10;

        return z;

    }

    /*...............................................................................*/

    void soegyi(int mat[5][5])

    {

        int i,j,max=0,temp=0;

        for(i=0;i<5;i++)

        {
           
            {

                for(j=0;j<5;j++)

            {

                if(mat[i][j]>max)

                {
                    max=mat[i][j];

                    temp=max;

                }

            }

            for(j=0;j<5;j++)

            {
                mat[i][j]=mat[i][j]+temp;
            }

            }

            max=0;

        }

        cout<<endl;

        cout<<endl;

        for(i=0;i<5;i++)

        {

            for(j=0;j<5;j++)

            {

        cout<<setw(3)<<mat[i][j]<<" ";

            }

            cout<<endl;

        }
    }

 
(6)Дана строка символов и некоторый символ sym. Сформируйте

новую строку, вставив послекаждого вхождения символа sym 

запятую. Определите самое длинное

слово в строке

#include "stdafx.h"

#include "iostream"

#include "string"

#include "stdio.h"

#include "conio.h"

#include <sstream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

string str;

string str1,str2;

string sym,rstr;

string ostr,temp[20];

int count=0;

cout<<"enter stirng: ";

cin>>str;

cout<<endl<<"Enter sym: ";

cin>>sym;

cout<<endl;

rstr=sym+",";

cout<<endl<<"ur str: "<<str;

cout<<endl<<"ur sym: "<<sym<<endl;

string::size_type pos = 0;

while ( (pos = str.find(sym, pos)) != string::npos )

{

str.replace( pos, sym.size(), rstr );

pos++;

}

cout << endl<<"Now your string is: " << str << endl;

istringstream iss(str);

while(getline(iss, ostr, ','))

{

temp[count]=ostr;

//cout<<temp[count]<<" ";

count++;

}


ostr=temp[0];

for(int j=0;j<count;j++)

//for(int k=j+1;k<count;k++)

{

if(ostr.length()<temp[j].length())

ostr=temp[j];


}

cout<<endl<<"Longest string: "<<ostr;

getch();


}

 
(7)Сформировать массив, содержащий информацию об озерах.

Структурный тип содержит поля: название, соленое или пресное,

глубина, площадь, судоходное или нет, есть ли места для 

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

программу, выдающую    информацию:

- об озерах, где возможна зимняя рыбалка;

- об озерах, где до места отдыха можно добраться на теплоходе,

- по введенному с клавиатуры названию выдать всю информацию о

данном озере.

#include "stdafx.h"

#include<conio.h>

#include <string.h>

#include <iostream>

# include <iomanip>

using namespace std;

struct lake

{

    char    name[20];

    char  type[10];

      float deep  ;  
             
     int area;  
       
      char nav;     
          
    char place;

    char fish;

    char ice;

 };

void main(void)

{

      lake l[10];

         int soe;

         cout<<"How many lake do you want? : ";

   cin>>soe;

   for(int i=0; i<soe; i++)

 {

      cout<<"Name of lake: ";

      cin>>setw(10)>>l[i].name;

      cout<<"\nType of lake : ";

      cin>>setw(10)>>l[i].type;

      cout<<"\nDeep of lake : ";

      cin>>l[i].deep;

      cout<<"\nArea of lake : ";

      cin>>l[i].area;

      cout<<"\nNav of lake (y/n) : ";

      cin>>l[i].nav;

      cout<<"\nPlace for vacation (y/n) : ";

      cin>>l[i].place;

      cout<<"\nCan be finishing (y/n) : ";

      cin>>l[i].fish;

      cout<<"\n Freezing at winter (y/n) : ";

      cin>>l[i].ice;

      cout<<endl;


   }

 cout<<"The Lake you can be fishing is(are): "<<endl;

   cout<<setw(10)<<"~Name~"<<setw(10)<<"~Type~"

<<setw(10)<<"~

Deep~"<<setw(10)<<"~Area~"<<setw(10)

<<"~Nav~"<<setw(10)<<"~Place~"<<setw(10)<<"~Fish~"

 <<setw(10)<

<"~Ice~"<<endl<<endl;

for(int i=0;i<kol;i++)

if (l[i].fish=='y')

cout<<setw(10)<<l[i].name<<setw(10)<<l[i].type <<setw(10)

<<l[i].deep

<<setw(10)<<l[i].area <<setw(10)

<<l[i].nav<<setw(10) <<l[i].place <<setw(10)<<l[i].fish

<<setw(10)<<l[i].ice<<endl ;

cout<<"\nThe Lake you can rest at summer is(are): "<<endl;

   cout<<setw(10)<<"~Name~"<<setw(10)<<"~Type~"

<<setw(10)<<"~

Deep~"<<setw(10)<<"~Area~"<<setw(10)

<<"~Nav~"<<setw(10)<<"~Place~"<<setw(10)<<"~Fish~"

<<setw(10)<

<"~Ice~"<<endl<<endl;

for(int i=0;i<kol;i++)

if(l[i].place=='y')

   cout<<setw(10)<<l[i].name<<setw(10)<<l[i].type 

<<setw(10)<<l[i].deep <<setw(10)<<l[i].area <<setw(10)

<<l[i].nav<<setw(10) <<l[i].place <<setw(10)<<l[i].fish

<<setw(10)<<l[i].ice<<endl ;

char a[20];

char again;

do   {

cout<<"\n Enter lake name to search: ";

cin>>a;

 cout<<"\nThe Lake's information you want: "<<endl;

   cout<<setw(10)<<"~Name~"<<setw(10)<<"~Type~"

<<setw(10)<<"~

Deep~"<<setw(10)<<"~Area~"<<setw(10)

<<"~Nav~"<<setw(10)<<"~Place~"<<setw(10)<<"~Fish~"

<<setw(10)<

<"~Ice~"<<endl<<endl;

int check=0;

for(int i=0;i<kol;i++)

if (strcmp(a,l[i].name)==0)


cout<<setw(10)<<l[i].name<<setw(10)<<l[i].type <<setw(10)

<<l[i].deep

<<setw(10)<<l[i].area <<setw(10)

<<l[i].nav<<setw(10) <<l[i].place <<setw(10)<<l[i].fish

<<setw(10)<<l[i].ice<<endl ;

 check=1;}

if(check==0)

cout<<"No information for such lake.\n";

cout<<"do you want to search gain (y/n)? ";

cin>>again;

}

while(again=='y');

_getch();


(8)-(1) Случайным образом создать таблицу пар целочисленных

значений и записать её в текстовый файл в виде:
     X               Y
     5                25
15               3  
 2                 7
-
Считать из файла пары значений и в тех из них, где XY или 

наоборот, найти сумму значений X  и Y, а в тех, где XY – разницу 

значений X  и Y. Результат записать в другой текстовый файл в виде

        X      Y      RES 

        5        25   30

       15          3       12

        2      7         9

#include <stdafx.h>

#include<iostream>

#include<time.h>

#include<conio.h>

#include<stdlib.h>

#include<iomanip>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])


time_t t;

srand (time(&t));

FILE *f , *g, *h,*ff,*hh;

int i,n,o,p;

int sum=0;

f=fopen("7.txt","w");

ff=fopen("7.txt","r");

 g=fopen("7.txt","r");

h=fopen("7ans.txt","w");

hh=fopen("7ans.txt","r");

        fprintf(f,"%3s %3s\n","X","Y");

 //fprintf(f,"%s",'\n');

for (i=0;i<10;i++)


//cout.flush ();

   fprintf(f,"%3d%3d\n",rand()%20+1,rand()%20+1);

 }

fclose(f);

char buffer[100],v[3],b[3];

int count=0;

while (count<11)//((fgets(buffer,100,ff)) != NULL)

{

if(count==0)

{

fscanf(g,"%3s %3s\n",&v,&b);

fprintf(h,"%3s %3s %5s\n","X","Y","RES");

cout<<"reading:"<<setw(3)<<"X"<<setw(3)<<"Y"<<endl;

}

 else

{

fscanf(g,"%3d %3d\n",&o,&p);

cout<<"reading:"<<setw(3)<<o<<setw(3)<<p<<endl;

  if (o<p)

sum =o+p;

  else

 sum=o-p;

 fprintf(h,"%3d %3d %5d\n",o,p,sum);

}

count++;

}

fclose(g);

  fclose(ff);

 fclose(h);

 count=0;

  char c[7];

   while (count<11)//((fgets(buffer,100,ff)) != NULL)

{

  if(count==0)

{

  fscanf(hh,"%3s %3s %5s\n",&v,&b,&c);

   //fprintf(h,"%3s %3s %5s\n","X","Y","RES");

cout<<"\n\nReadingres:"<<setw(3)<<"X"<<setw(3)<<"Y"<<setw(5)

<RES"<<endl;

}

  else

{

 fscanf(hh,"%3d %3d %5d\n",&o,&p,&sum);

 cout<<"Readingres"<<setw(3)<<o<<setw(3)<<p<<setw(5)

<<sum<<endl;

}

  count++;

}

fclose(hh);

  getch();

 return 0;

}


(8)-(2) В двоичном файле с элементами типа int
 
заменить элементы, меньшие среднего

арифметического значения, на 0, а большие среднего 

арифметического значения – на 1.

#include "stdafx.h"
 #include <iostream>

 #include <conio.h>

 #include <stdio.h>

 #include <stdlib.h>

#include <io.h>

#include <time.h>

using namespace std;

void main(int argc, _TCHAR* argv[])

 {

FILE *f_test,*g;

time_t t;

srand(time(&t));

int i_min,i_max;

int handle;

int value,var,min,max=0;

int zero=0;

f_test = fopen("soethu.dat","w+b");

g = fopen("result.dat","w+b");

if (!f_test)

{

puts( "Can not open files!\n" );

exit(1);

}

cout<<"\n Interger values: "<<endl;

for(int i=0;i<10;i++)

{

value=rand()%10+1;

cout<<value<<"\t";

fwrite(&value,sizeof(int),1,f_test);

}

fclose(f_test);

/*........................................................................*/

f_test = fopen("soethu.dat","r+b");

i_max=0;

max=0;

for(int i=0;i<10;i++)

{

fread(&value,sizeof(int),1,f_test);

{

max+=value;

}

}

i_max=max/10;

cout<<"\nmax: "<<max<<" avg: "<<i_max<<endl;

fclose(f_test);


/*...............................................................................................................*/

f_test = fopen("soethu.dat","r+b");

int zeroo=0;

int onee = 1;

for(int i=0;i<10;i++)

{

fread(&var,sizeof(int),1,f_test);

if (var<i_max)

{

fwrite(&zeroo,sizeof(int),1,g);

}

else

fwrite(&onee,sizeof(int),1,g);

}


fclose(f_test);

fclose(g);

f_test = fopen("result.dat","r+b");

cout<<"\n Result: "<<endl;

for(int i=0;i<10;i++)

{

fread(&var,sizeof(int),1,f_test);

cout<<var<<"\t";

}

getch();

}

(7)-(2)Создать двоичный файл из случайно заданных значений целого

типа. Удалить из него все числа, кратные введенному с клавиатуры 

числу. Результат записать в другой файл.

#include "stdafx.h"

#include<iostream>

#include<conio.h>

#include<stdio.h>

#include<math.h>

#include<time.h>

#include<io.h>

#include<stdlib.h>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

        FILE *f_oop,*f_out;
        int number,x;

        time_t t;

        srand(time_t(&t));

/*.............................................................................................................................................*/

        f_oop=fopen("yargyi.dat","wb");

         cout<<"\n Original file: "<<endl;

        if(!f_oop)

        {

                puts("File not created!");

                exit(1);

        }
       
        for(int i=0;i<10;i++)

        {

                number=rand()%20+1;

                fwrite(&number,sizeof(int),1,f_oop);

                cout<<number<<"\t";

        }

        fclose(f_oop);

/*..............................................................................................................................................*/

        f_out=fopen("answer.dat","wb");

if(!f_out)

        {
                puts("File not created!");

                exit(1);

        }

int kk=0;

        printf("\nx= ");

        scanf("%d",&x);

   f_oop=fopen("yargyi.dat","rb");

   cout<<"\n answer file: "<<endl;

        for(int i=0;i<10;i++)

        {

                fread(&number,sizeof(int),1,f_oop);

                if((number%x)==0 || x%number==0)

                {

                        fwrite(&number,sizeof(int),1,f_out);

                        cout<<number<<"\t";

                        kk=1;

                }
               
        }

        if(kk==0)

                cout<<"\n There is no data for ur multiplier:

"<<x<<endl;

        cout<<endl;

        fclose(f_oop);

        fclose(f_out);


/*.................................................................................................................................................*/

        _getch();

        return 0;

}