gcc — Клёвый код https://coolcode.ru Скриптописание и кодинг Thu, 03 Nov 2016 15:28:03 +0000 ru-RU hourly 1 https://wordpress.org/?v=5.8.12 https://coolcode.ru/wp-content/uploads/2015/10/YO1-150x150.png gcc — Клёвый код https://coolcode.ru 32 32 Решаем задачи Абрамян на C++. Matrix76 https://coolcode.ru/reshaem-zadachi-abramyan-na-gcc-matrix76/ https://coolcode.ru/reshaem-zadachi-abramyan-na-gcc-matrix76/#respond Thu, 03 Nov 2016 15:28:03 +0000 http://coolcode.ru/?p=10663

Matrix76. Дана матрица размера $$M \times N$$. Упорядочить ее строки так, чтобы их первые элементы образовывали возрастающую последовательность.

Решение c функциями N глобальная переменная:

#include <iostream>

using namespace std;

int N;

void Swap(int& x, int& y){
    if (x!=y){
        x=x+y;
        y=x-y;
        x=x-y;
    }
}

void SwapMatrixRow (int mat[10][10], int x, int y){
    int j;
    if (x!=y)
        for (j=1;j<=N; ++j)
            Swap(mat[x][j],mat[y][j]);

}

int main(int argc, char *argv[])
{
    cout << "N: ";
    cin >> N;
    int m;
    cout << "M: ";
    cin >> m;
    int a[10][10];

    int i,j;
    for (i=1; i<=m; ++i){
        cout<<i<<" : "<<endl;
        for (j=1; j<=N; ++j){
            cout<<j<<" : ";
            cin >> a[i][j];
        }
    }

    int m2=m,i2;
    for (i=1; i<m; ++i){
        i2=1;
        --m2;
        while (i2<=m2){
            if (a[i2][1]>a[i2+1][1])
                SwapMatrixRow(a, i2, i2+1);
            ++i2;
        }
    }

    for (i=1; i<=m; ++i){

        for (j=1; j<=N; ++j){
            cout<<" : "<<a[i][j];

        }
        cout<<" : "<<endl;
    }
    return 0;

}

 

Решение без функций:

#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int m, n;
    cout << "N: ";
    cin >> n;

    cout << "M: ";
    cin >> m;
    int a[10][10];

    int i,j;
    for (i=1; i<=m; ++i){
        cout<<i<<" : "<<endl;
        for (j=1; j<=n; ++j){
            cout<<j<<" : ";
            cin >> a[i][j];
        }
    }

    int m2=m,i2;
    for (i=1; i<m; ++i){
        i2=1;
        --m2;
        while (i2<=m2){
            if (a[i2][1]>a[i2+1][1])
                for (j=1;j<=n; ++j) {
                    a[i2][j]+=a[i2+1][j];
                    a[i2+1][j]=a[i2][j]-a[i2+1][j];
                    a[i2][j]=a[i2][j]-a[i2+1][j];
                }
            ++i2;
        }
    }

    for (i=1; i<=m; ++i){

        for (j=1; j<=n; ++j){
            cout<<" : "<<a[i][j];

        }
        cout<<" : "<<endl;
    }
    return 0;

}

Другие задачи из раздела Matrix можно посмотреть здесь.

]]>
https://coolcode.ru/reshaem-zadachi-abramyan-na-gcc-matrix76/feed/ 0
Решаем задачи Абрамян на C++. String25 https://coolcode.ru/reshaem-zadachi-abramyan-na-c-string25/ https://coolcode.ru/reshaem-zadachi-abramyan-na-c-string25/#comments Sat, 22 Oct 2016 12:38:03 +0000 http://coolcode.ru/?p=10294

String25. Дана строка, изображающая десятичную запись целого положительного числа. Вывести строку, изображающую двоичную запись этого же числа.

Решение:

#include <iostream>
#include <string>
using namespace std;


void div2(string& s, int& mem) //Деление на 2 числового значения записанного в строке. Вывод строка делёная на 2 и остаток от деления.
{
  int i;
  string s2=s;
  mem=0;
  for (i=0;i<(int)s.length();++i){
    s2[i] = (char)(((((int)(s[i])-48)+10 * mem) / 2)+48);
    if ((((int)(s[i])-48) % 2) == 1){mem = 1;}
    else {mem = 0;}
   };
  if (s2[0]=='0'){ s2.erase(0,1);}
   s.swap(s2);
}

int main()
{
    string s,temp;
    cout << "S:";
    cin >> s;
    string srez;
    int mem=0;
    for (srez="";!(s.empty());){
        div2(s,mem);
        srez+=char(mem+48);
    }
    int i;
    for (i=0;i<(int)srez.length();++i){
        s+=srez[srez.length()-i-1];
        cout <<""<<s[i]<<endl;
    }
    cout <<"="<<s<<endl;
    return 0;
}

 

Решение (мне не нравиться использовать массивы символов в C++, но «народ» требует):

# include <iostream>
# include <windows.h>
# include <cmath>
# include <fstream>
# include <iomanip>

using namespace std;

const int nmax = 100; //максимальная длинна строки в задании должна быть меньше 255
int main()
{
   SetConsoleCP(1251);//устанавливаем кодировку для консоли cp1251 кириллица
   SetConsoleOutputCP(1251);
   char s[nmax]; //объявляем строку s

   ifstream in ("String25.txt"); //получаем строку из файла String23.txt
   in.getline(s,sizeof(s));
   cout << s << "\n";

   char srez[nmax]=""; //объявляем строку в которой мы будем складировать временный результат
   int mem=0; //кусочек памяти мы сюда будем складывать остаток от деления на 2 тоесть может быть равна 0 или 1
   int i; // переменная будет использоваться в счётчиках
   
   while(strlen(s)>0){ //пока длинна строки s больше 0 выполняем следующее действие
       char s2[nmax];// в s2 положим копию строки s  и будем работать с s2
       //strcpy(s2,s); //s2=s
       mem = 0; //зануляем мем
       for (i=0;  i<(int)strlen(s); ++i){
           s2[i] = (char)(((((int)(s[i])-48)+10 * mem) / 2)+48);//здесь сложный моемент... символ "0" имеет 48 код в кодировке ASCII
           // символ "1" 49 символ в кодировке ASCII соответственно "9" код 57. (int)s[i] получаем код символа.. если вычесть 48 то мы получим число.                                            
           if ((((int)(s[i])-48) % 2) == 1){mem = 1;}           
           else {mem = 0;}
           //теперь по s2[i] = (char)(((((int)(s[i])-48)+10 * mem) / 2)+48);if ((((int)(s[i])-48) % 2) == 1){mem = 1;}else {mem = 0;}
           // мы берём и по символьно делим число на 2 если есть остаток от деления добавляем его к следующему число в виде десяток
           //Пример s2="123"; 1/2 = 0 и остаток 1; 2/2, но у нас есть остаток слеовательно 12/2 = 6 остаток 0; 3/2 остатка нет
           // следовательно 03/2=1 и остаток 1; и того s2="061" и mem=1
          };
       if (s2[0]=='0')
           for(i=0; s2[i]!='\0'; ++i) {s2[i]=s2[i+1]; }
       //если в начале образовался 0 мы его убераем сдвигая слова в лево тоесть "061" после будет "61"
       strcpy(s,s2);//подготавливаемся к следующему циклу s=s2
       srez[strlen(srez)]+=char(mem+48); //записываем остаток от деления в результат
   }

   for (i=0;srez[i]!='\0';++i){ //что бы получилась двоичная запись нам надо перевернуть значение переворачиваем srez в s
      s[i]=srez[strlen(srez)-i-1];
   }
   s[i]='\0';//обозначаем конец строки, что бы хорошо отображалась строка.
   cout <<"="<<s<<endl;
   return 0;
}

Другие задачи из раздела String можно посмотреть здесь.

]]>
https://coolcode.ru/reshaem-zadachi-abramyan-na-c-string25/feed/ 2
Решаем задачи Абрамян на C++. File59 https://coolcode.ru/reshaem-zadachi-abramyan-na-c-file59/ https://coolcode.ru/reshaem-zadachi-abramyan-na-c-file59/#respond Thu, 05 May 2016 06:55:06 +0000 http://coolcode.ru/?p=8387

File59. Дан символьный файл, содержащий по крайней мере один символ пробела. Удалить все его элементы, расположенные после последнего символа пробела, включая и этот пробел.

Решение:

#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;

int main()
{
    char file_in_name[80], file_out_name[80];
    cout << "File: ";
    cin>>file_in_name;
    sprintf(file_out_name,"%s%c",file_in_name,'~');

    ifstream f_in(file_in_name,ios_base::binary|ios_base::in);
    std::streambuf * pbuf = f_in.rdbuf();

    int i=0,space=0;
    while ( pbuf->sgetc() != EOF )
    {
        ++i;
        char ch = pbuf->sbumpc();
        if (ch==' ') space=i;
        std::cout << ch;
   }
   f_in.close();
   f_in.open(file_in_name,ios_base::binary|ios_base::in);
   pbuf = f_in.rdbuf();

   ofstream f_out(file_out_name,ios_base::binary|ios_base::out|ios_base::trunc);
   for(i=1; i<=space-1; ++i)
   {
       char ch = pbuf->sbumpc();
        f_out<<ch;
   }
   f_in.close();
   f_out.close();
  remove (file_in_name);
  rename(file_out_name,file_in_name);
  return 0;
}

Другие задачи из раздела File можно посмотреть здесь.

]]>
https://coolcode.ru/reshaem-zadachi-abramyan-na-c-file59/feed/ 0
Решаем задачи Абрамян на C++. Boolean30 https://coolcode.ru/reshaem-zadachi-abramyan-na-c-boolean30-2/ https://coolcode.ru/reshaem-zadachi-abramyan-na-c-boolean30-2/#comments Wed, 17 Feb 2016 16:13:55 +0000 http://coolcode.ru/?p=6381

Boolean30. Даны целые числа $$a$$, $$b$$, $$c$$, являющиеся сторонами некоторого треугольника. Проверить истинность высказывания: «Треугольник со сторонами $$a$$, $$b$$, $$c$$ является равносторонним».

Решение:

#include <iostream>

using namespace std;

int main()
{
   float a,b,c;
   cout<< "a: ";
   cin >> a;

   cout<< "b: ";
   cin >> b;

   cout<< "c: ";
   cin >> c;

   cout << ((a==b) & (a==c) & (b==c)) << endl;
   return 0;
}

Другие задачи из раздела Boolean можно посмотреть здесь.

]]>
https://coolcode.ru/reshaem-zadachi-abramyan-na-c-boolean30-2/feed/ 1
Решаем задачи Абрамян на C++. Boolean21 https://coolcode.ru/reshaem-zadachi-abramyan-na-c-boolean21-2/ https://coolcode.ru/reshaem-zadachi-abramyan-na-c-boolean21-2/#respond Wed, 17 Feb 2016 16:09:31 +0000 http://coolcode.ru/?p=6379

Boolean21. Дано трехзначное число. Проверить истинность высказывания: «Цифры данного числа образуют возрастающую последовательность».

Решение:

#include <iostream>
#include <math.h>

using namespace std;

int main()
{
  int A;

  cout<< "A: ";
  cin >> A;

  A = fabs(A);
  cout << (((A/100)<(A%100/10)) & ((A%100/10)<(A%10))) << endl;
  return 0;
}

Другие задачи из раздела Boolean можно посмотреть здесь.

]]>
https://coolcode.ru/reshaem-zadachi-abramyan-na-c-boolean21-2/feed/ 0
Решаем задачи Абрамян на C++. Boolean19 https://coolcode.ru/reshaem-zadachi-abramyan-na-c-boolean19-2/ https://coolcode.ru/reshaem-zadachi-abramyan-na-c-boolean19-2/#respond Wed, 17 Feb 2016 16:02:35 +0000 http://coolcode.ru/?p=6376

Boolean19. Проверить истинность высказывания: «Среди трех данных целых чисел есть хотя бы одна пара взаимно противоположных».

Решение:

#include <iostream>

using namespace std;

int main()
{
  int A,B,C;

  cout<< "A: ";
  cin >> A;

  cout<< "B: ";
  cin >> B;

  cout<< "C: ";
  cin >> C;

  cout << ((A==(-1)*B)|(A==(-1)*C)|(B==(-1)*C)) << endl;
  return 0;
}

Другие задачи из раздела Boolean можно посмотреть здесь.

]]>
https://coolcode.ru/reshaem-zadachi-abramyan-na-c-boolean19-2/feed/ 0
Решаем задачи Абрамян на C++. Boolean8 https://coolcode.ru/reshaem-zadachi-abramyan-na-c-boolean8-2/ https://coolcode.ru/reshaem-zadachi-abramyan-na-c-boolean8-2/#respond Wed, 17 Feb 2016 15:58:31 +0000 http://coolcode.ru/?p=6373

Boolean8. Даны два целых числа: $$A$$, $$B$$. Проверить истинность высказывания: «Каждое из чисел $$A$$ и $$B$$ нечетное».

Решение:

#include <iostream>

using namespace std;

int main()
{
    int A,B;
    cout<< "A: ";
    cin >> A;

    cout<< "B: ";
    cin >> B;

    cout << ((A%2!=0) & (B%2!=0)) << endl;
    return 0;
}

Другие задачи из раздела Boolean можно посмотреть здесь.

]]>
https://coolcode.ru/reshaem-zadachi-abramyan-na-c-boolean8-2/feed/ 0
Решаем задачи Абрамян на C. Begin6 https://coolcode.ru/reshaem-zadachi-abramyan-na-c-begin6/ https://coolcode.ru/reshaem-zadachi-abramyan-na-c-begin6/#respond Mon, 28 Sep 2015 10:41:30 +0000 http://coolcode.ru/?p=3710

Begin6. Даны длины ребер a, b, c прямоугольного параллелепипеда. Найти его объем $$V=a*b*c$$ и площадь поверхности $$S=2*(a*b+b*c+a*c)$$.

Решение:

#include <stdio.h>

int main(void)
{
    float a,b ,c;
    printf("a:");
    scanf ("%f", &a);

    printf("b:");
    scanf ("%f", &b);

    printf("c:");
    scanf ("%f", &c);

    float V= a*b*c;
    printf("V:%f\n",V);

    float S= 2*(a*b+b*c+a*c);
    printf("S:%f\n",S);

    return 0;
}

 

Другие задачи из раздела Begin можно посмотреть здесь.

]]>
https://coolcode.ru/reshaem-zadachi-abramyan-na-c-begin6/feed/ 0
Решаем задачи Абрамян на C. Begin5 https://coolcode.ru/reshaem-zadachi-abramyan-na-c-begin5/ https://coolcode.ru/reshaem-zadachi-abramyan-na-c-begin5/#respond Sun, 27 Sep 2015 06:46:27 +0000 http://coolcode.ru/?p=3600

Begin5. Дана длина ребра куба $$a$$. Найти объем куба $$V=a^3$$ и площадь его поверхности $$S = 6*a^2$$.

Решение:

#include <stdio.h>

int main(void)
{
    float a;
    printf("a:");
    scanf ("%f", &a);

    float V= a*a*a;
    printf("V:%f\n",V);

    float S= 6*a*a;
    printf("S:%f\n",S);

    return 0;
}

Другие задачи из раздела Begin можно посмотреть здесь.

]]>
https://coolcode.ru/reshaem-zadachi-abramyan-na-c-begin5/feed/ 0
Решаем задачи Абрамян на C. Begin4 https://coolcode.ru/reshaem-zadachi-abramyan-na-c-begin4/ https://coolcode.ru/reshaem-zadachi-abramyan-na-c-begin4/#respond Sat, 26 Sep 2015 06:39:58 +0000 http://coolcode.ru/?p=3596

Begin4. Дан диаметр окружности $$d$$. Найти ее длину $$L=\pi*d$$. В качестве значения $$\pi$$ использовать 3.14.

Решение:

#include <stdio.h>

int main(void)
{
    float d;
    printf("d:");
    scanf ("%f", &d);

    float L= 3.14*d;
    printf("L:%f\n",L);

    return 0;
}

Другие задачи из раздела Begin можно посмотреть здесь.

]]>
https://coolcode.ru/reshaem-zadachi-abramyan-na-c-begin4/feed/ 0