1

(4 відповідей, залишених у C++)

Але виникають 4 помилки:

Ошибка    6    error C2511: Telephone::Telephone(char *,char *,char *,int,char *,char *,char *): перегруженная функция-член не найдена в "Telephone"    d:\fox\лабораторна робота 7\code\student.h    91    1    code
Ошибка    5    error C2533: Telephone::{ctor}: конструкторы не разрешены для возвращаемого типа    d:\fox\лабораторна робота 7\code\student.h    91    1    code
Ошибка    3    error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию    d:\fox\лабораторна робота 7\code\student.h    33    1    code
Ошибка    7    error C1004: непредвиденное обнаружение конца файла    D:\fox\Лабораторна робота 7\code\work.cpp    45    1    code

Саме завдання:

Базовий клас     Особа – прізвище, ім'я, по батькові, дата народження
Віртуальна функція      Відображення елементів класу  Show()
Похідний клас 1    Телефони стаціонарні – особа, № телефону, місто, країна

work.cpp

#include "student.h"
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <windows.h>
#include <string>
#include <iostream>
#include <fstream>

using namespace std;

int main()
{
// //////////////////////////////////////////////////////////робота з класом студент
//  створюємо три екземпляри похідного класу class Student  :  
//  екземпляр stud1 - використовуючи конструктор з параметрами
//  екземпляр stud4 - використовуючи конструктор копіювання,
//  і призначаємо студенту стипендію
//  екземпляр stud3 - використовуючи конструктор за умовчанням, без заповнення

  class Telephone stud1=Telephone("Fox", "Nicolia", "Nic", 1996, "575476", "Черінігів", "Україна");             // Створити екземпляр класу
//  виводимо вміст членів класу
  cout <<  "Ім'я - " <<  stud1.getName() << " Призвіще - "     << stud1.getSName()     << endl; 
  cout <<  "Номер -  " <<  stud1.getNomer_telephone()  << " Місто -  " <<  stud1.getTown() << endl; 
//////
  stud1.Show();    // роздрукувати стать, ФІБ, вік студента – наслідуваний метод class Person

  class Telephone stud4=stud1;        // скопіювати вміст екземпляру класу в новий екземпляр
  cout  << endl  << "Ekzemplyar new class: " << endl; 
  stud4.Show();            // роздрукувати стать, ФІБ, вік студента
  stud4.setTown("Київ");        // установити звичайну стипендію
//  виводимо вміст членів класу
  cout <<  "Ім'я - " <<  stud1.getName() << " Призвіще - "     << stud1.getSName()     << endl; 
  cout <<  "Номер -  " <<  stud1.getNomer_telephone()  << " Місто -  " <<  stud1.getTown() << endl;  
//////
  stud4.Show();

  class Telephone stud3=Telephone( );       // Створити екземпляр класу
  cout  << endl << "Instance of the class - garbage" << endl; 
  stud3.Show();    

  system("PAUSE");
  return 0;
}

student.h

#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <windows.h>
#include <string>
#include <iostream>
#include <fstream>

using namespace std;

class Person
{
public:
    string strSName;
    string strName;
    string strPatron;
    int iData;

//    Person(const Person &Person) 
//    {
    //    this -> strSName = Person.strSName;
    //    this -> strName = Person.strName;
    //    this -> strPatron = Person.strPatron;
    //    this -> iAge = Person.iAge;
    //    this -> strRate = Person.strRate;
//  };

    Person() {};

    Person(char *chSName, char *cName, char *chPatron, int iData=0);

    Telephone(const Person &Person)
    {
        setSName( (char*)Person.strSName.c_str() ); 
        setName( (char*)Person.strName.c_str() );
         setPatron( (char*)Person.strPatron.c_str() );
         setData( Person.iData ); 
    };    
    virtual ~Person() { };    
//  змінити елементи екземпляру класу                            
    void setSName(char *chSName)        {this->strSName=chSName;}
    void setName(char *chName)            {this->strName=chName;}
    void setPatron(char *chPatron)        {this->strPatron=chPatron;}
    void setData(int iData)                {this->iData = iData;}
//  отримати елементи екземпляру класу
    string getSName()        const {return strSName;}
    string getName()        const {return strName;}
    string getPatron()            const {return strPatron;}
    int getData()             const {return iData;}
};

class Telephone: public Person
{
    string iNomer_telephone;
    string strTown;
    string strCountry;

public:
    Telephone() {};

    Telephone(char *chSName, char *chName, char *chPatron, int iData=0, 
        string iNomer_telephone = 0, string strTown = 0, string strCountry = 0);

    Telephone(const Telephone &Telephone) : Person()
    {
        setNomer_telephone( (char*)Telephone.iNomer_telephone ); 
        setTown( (char*)Telephone.strTown.c_str() );
        setCountry( (char*)Telephone.strCountry.c_str() );
    };    
    virtual ~Telephone() { };    
//  змінити елементи екземпляру класу                            
    void setNomer_telephone(int iNomer_telephone)    {this->iNomer_telephone=iNomer_telephone;}
    void setTown(char *chTown)            {this->strTown=chTown;}
    void setCountry(char *chCountry)    {this->strCountry=chCountry;}
//  отримати елементи екземпляру класу
    string getNomer_telephone() const {return iNomer_telephone;}
    string getTown()            const {return strTown;}
    string getCountry()          const {return strCountry;}

// Друк інформацію про студента 
    void  Show()
    {
        cout << getSName() << " " << getName() << " " << getPatron() << " " << getNomer_telephone() << " " << getTown();
        cout << getCountry() << " " << endl;
    }
}

//                 Опис методів похідного  класу
// Конструктор опис, змінні  char - не пусті значення, інші або  = 0, або всі задані     
    Telephone::Telephone(char *chSName, char *chName, char *chPatron, int iData=0, 
        char *iNomer_telephone, char *strTown, char *strCountry)  :  Person(chSName, chName, chPatron)  
 // типи змінних співпадають з типами у базовому класі
    {
        setNomer_telephone(iNomer_telephone);
        setTown(chTown);
        setCountry(chCountry);
        setSName(chSName);
        setName(chName);
        setPatron(chPatron);
    }

2

(22 відповідей, залишених у C++)

Якщо не знайду відповіді, скину словесний алгоритм виконання програми.

3

(22 відповідей, залишених у C++)

При значеннях х рівних -5, 0 та 5 – значення функції не визначено. Вихід з циклу здійснюється при значенні х = 3. В програмі повинні підраховуватися кількість значень, при яких функція дорівнює нулю (у=0).

x > -3 або x < 3 - y=x
x < -3 - y = (x^2 - 3 * x + 2) / 2
x > 3 - y=x^3

4

(22 відповідей, залишених у C++)

Пробував і так, але програма просто виконує

printf("Кiлькiсть значень <X> при яких y=0: %i\n", i);

і припиняє свою роботу та попередження не зникає.

5

(22 відповідей, залишених у C++)

Компілятор програму компілює, але видає попередження на скріні.
Після того, як змінив:

while (x=3)

на

while (x!=3)

.
Ще одна проблема, що програма опрацьовує число -3, як значення більше ніж 3.

6

(1 відповідей, залишених у C++)

#include <conio.h>
#include <stdio.h>
#include <locale.h>
#include <math.h>

int main()
{

    setlocale(LC_ALL, "Ukr");
    int i, x=-10;
    float y;
    for (i=0; i<=20; i++)
    {
        if ((x == -10) || (x == 0) || (x == 10)) {
            printf("Функцiя не визначена!\n");
            y=x;
        }
        if ((x > -3) && (x < 3)){
            printf("<x> бiльше -3 i менше 3! y=x!\n");
            y=x;
        }
        if (x < -3){
            printf("<x> менше -3! y=(x^2-3x+2)/2! ");
            y = ((powf(x, 2) - 3 * x + 2) / 2);
        }
        else {
            printf("<x> бiльше 3! y=x^3!");
            y = powf(x, 3);
        }
        printf("x=%i\t", x);
        printf("y=%f\n", y);
        x=x+2;
        
    }
    getch();
    return 0;
}

Дана програма не конкретно опрацьовує умову ((x > -3) && (x < 3)), програма відображає її текст, але виконує обрахування, які знаходяться в блоку else.

Програма повинна працювати по такому алгоритму:
1.    Задаємо типи змінних «х», «у», «і».
2.    Задаємо цикл з кроком 2 для змінної х=-10.
3.    Якщо «х» буде 10 або -10 або 0 то вивести «Функцiя не визначена! та  пропустити обрахування значення «y».
4.    Якщо «х» більше -3 і менше 3, то вивести саме число «х».
5.    Якщо «х» більше 3, то y=x^3.
6.  Якщо «х» менше -3, то y=(x^2-3x+2)/2.
7. Відобразити змінні «х», «y».

Як ще зробити, що б при виконанні умови if ((x == -10) || (x == 0) || (x == 10))
, програма виводила лише текст printf("Функцiя не визначена!\n");, і не виконувала ніяких дій, продовжуючи роботу циклу, break - не допоміг.

Що робить даний код?

#include <stdio.h>

main()
{
    int c;
    c = getchar();
    while (c!=EOF) {
        putchar(c);
        c = getchar;
    }
}

Виводить при будь-якому значенні "ї".

https://replace.org.ua/misc.php?action=pun_attachment&amp;item=1013

Я зрозумів так: програма просить ввести будь-яке значення, і якщо не дорівнює EOF, цикл виконується до безкінечності... але сенс?

8

(6 відповідей, залишених у Оцінка сайтів)

http://my-notebook.in.ua/?p=60

9

(1 відповідей, залишених у Python)

Є програма, яка містить 3 інструкції, і коли хочу запустити з-під головної інструкції любу іншу інстукцію, вибиває:

Traceback (most recent call last):
  File "D:\Python34\Метод Крамера.py", line 25, in <module>
    main()
  File "D:\Python34\Метод Крамера.py", line 20, in main
    fl()
NameError: name 'fl' is not defined

Перехід хочу здійснити за допомогою return.

def main():
        print('   ----')
        print('   - a11x1+a12x2+a13x3=b1')
        print('   -')
        print('-    a21x1+a22x2+a23x3=b2')
        print('   -')
        print('   - a31x1+a32x2+a33x3=b3')
        print('   ----')
        print('Твоя матриця 3х4 містить тільки цілі значення?')
        while True:
            choice = input('Якщо цілі, введи Так/Y, якщо дробові - Ні/N: ')
            if choice in ['Y', 'YES', 'Yes', 'yes', 'так', 'Так']:
                break
                return integer
            if choice in ['N', 'NOT', 'Not', 'not', 'ні', 'Ні']:
                break
                return fl
            if not choice in ['Y', 'YES', 'Yes', 'yes', 'так', 'Так'] or ['N', 'NOT', 'Not', 'not', 'ні', 'Ні']:
                print('Ти ввів не вірне значення!')
        fl()
        integer()
        s()

if __name__ == '__main__':
    main()

def fl():
        a11 = float(input('Введи значення а11: '))
        a12 = float(input('Введи значення а12: '))
        a13 = float(input('Введи значення а13: '))
        a21 = float(input('Введи значення а21: '))
        a22 = float(input('Введи значення а22: '))
        a23 = float(input('Введи значення а23: '))
        a31 = float(input('Введи значення а31: '))
        a32 = float(input('Введи значення а32: '))
        a33 = float(input('Введи значення а33: '))
        b1 = float(input('Введи значення b1: '))
        b2 = float(input('Введи значення b2: '))
        b3 = float(input('Введи значення b3: '))

        d = a11*a22*a33+a12*a23*a31+a21*a32*a13-(a13*a22*a31+a12*a21*a33+a23*a32*a11)
        print('a11*a22*a33+a12*a23*a31+a21*a32*a13-(a13*a22*a31+a12*a21*33+a23*a32*a11)','\n')
        print('%f*%f*%f+%f*%f*%f+%f*%f*%f-(%f*%f*%f+%f*%f*%f+%f*%f*%f)' % (a11,a22,a33,a12,a23,a31,a21,a32,a13,a13,a22,a31,a12,a21,a33,a23,a32,a11), '\n')
        print('Значення нульового трикутника: ',d,'\n')
        d1 = b1*a22*a33+a12*a23*b3+b2*a32*a13-(a13*a22*b3+a12*b2*a33+a23*a32*b1)
        print ('b1*a22*a33+a12*a23*b3+b2*a32*a13-(a13*a22*b3+a12*b2*a33+a23*a32*b1)')
        print ('%f*%f*%f+%f*%f*%f+%f*%f*%f-(%f*%f*%f+%f*%f*%f+%f*%f*%f)' % (b1,a22,a33,a12,a23,b3,b2,a32,a13,a13,a22,b3,a12,b2,a33,a23,a32,b1), '\n')
        print('Значення першого трикутника: ',d1,'\n')
        d2 = a11*b2*a33+b1*a23*a31+a21*b3*a13-(a13*b2*a31+b1*a21*a33+a23*b3*a11)
        print('a11*b2*a33+b1*a23*a31+a21*b3*a13-(a13*b2*a31+b1*a21*a33+a23*b3*a11)')
        print('%f*%f*%f+%f*%f*%f+%f*%f*%f-(%f*%f*%f+%f*%f*%f+%f*%f*%f)' % (a11,b2,a33,b1,a23,a31,a21,b3,a13,a13,b2,a31,b1,a21,a33,a23,b3,a11), '\n')
        print('Значення першого трикутника: ',d2,'\n')
        d3 = a11*a22*b3+a12*b2*a31+a21*a32*b1-(b1*a22*a31+a12*a21*b3+b2*a32*a11)
        print('a11*a22*b3+a12*b2*a31+a21*a32*b1-(b1*a22*a31+a12*a21*b3+b2*a32*a11)')
        print('%f*%f*%f+%f*%f*%f+%f*%f*%f-(%f*%f*%f+%f*%f*%f+%f*%f*%f)' % (a11,a22,b3,a12,b2,a31,a21,a32,b1,b1,a22,a31,a12,a21,b3,b2,a32,a11), '\n')
        print('Значення першого трикутника: ',d3,'\n')
        return s


def s():
        x1=d1/d
        print('d1/d =', x1, '\n')
        x2=d2/d
        print('d2/d =', x2, '\n')
        x3=d3/d
        print('d3/d =', x3, '\n')

Я розібрався.

d = a11*a22*a33+a12*a23*a31+a21*a32*a13-(a13*a22*a31+a12*a21*a33+a23*a32*a11)
print('a11*a22*a33+a12*a23*a31+a21*a32*a13-(a13*a22*a31+a12*a21*33+a23*a32*a11)','\n')
print('%a11*%a22*%a33+%a12*%a23*%a31+%a21*%a32*%a13-(%a13*%a22*%a31+%a12*%a21*%a33+%a23*%a32*%a11)' % (a11,a22,a33,a12,a23,a31,a21,a32,a13,a13,a22,a31,a12,a21,a33,a23,a32,a11), '\n')
print('   ----')
print('   - a11x1+a12x2+a13x3=b1')
print('   -')
print('-    a21x1+a22x2+a23x3=b2')
print('   -')
print('   - a31x1+a32x2+a33x3=b3')
print('   ----')


a11 = float(input('Введи значення а11: '))
a12 = float(input('Введи значення а12: '))
a13 = float(input('Введи значення а13: '))
a21 = float(input('Введи значення а21: '))
a22 = float(input('Введи значення а22: '))
a23 = float(input('Введи значення а23: '))
a31 = float(input('Введи значення а31: '))
a32 = float(input('Введи значення а32: '))
a33 = float(input('Введи значення а33: '))
b1 = float(input('Введи значення b1: '))
b2 = float(input('Введи значення b2: '))
b3 = float(input('Введи значення b3: '))

d = a11*a22*a33+a12*a23*a31+a21*a32*a13-(a13*a22*a31+a12*a21*a33+a23*a32*a11)
print('a11*a22*a33+a12*a23*a31+a21*a32*a13-(a13*a22*a31+a12*a21*33+a23*a32*a11)')
print(a11*a22*a33+a12*a23*a31+a21*a32*a13-(a13*a22*a31+a12*a21*a33+a23*a32*a11))
print('Значення нульового трикутника: ',d,'\n')
d1 = b1*a22*a33+a12*a23*b3+b2*a32*a13-(a13*a22*b3+a12*b2*a33+a23*a32*b1)
print ('b1*a22*a33+a12*a23*b3+b2*a32*a13-(a13*a22*b3+a12*b2*a33+a23*a32*b1)')
print('Значення першого трикутника: ',d1,'\n')
d2 = a11*b2*a33+b1*a23*a31+a21*b3*a13-(a13*b2*a31+b1*a21*a33+a23*b3*a11)
print('a11*b2*a33+b1*a23*a31+a21*b3*a13-(a13*b2*a31+b1*a21*a33+a23*b3*a11)')
print('Значення першого трикутника: ',d2,'\n')
d3 = a11*a22*b3+a12*b2*a31+a21*a32*b1-(b1*a22*a31+a12*a21*b3+b2*a32*a11)
print('a11*a22*b3+a12*b2*a31+a21*a32*b1-(b1*a22*a31+a12*a21*b3+b2*a32*a11)')
print('Значення першого трикутника: ',d2,'\n')

x1=d1/d
print('d1/d =', x1, '\n')
x2=d2/d
print('d2/d =', x2, '\n')
x3=d3/d
print('d3/d =', x3, '\n')

Роблю програму по обрахуванню матриць по методу Крамера і виникла складність, що замість:
a11*a22*a33+a12*a23*a31+a21*a32*a13-(a13*a22*a31+a12*a21*33+a23*a32*a11)
відображались реальні змінні, я підозрюю, що треба додавати символ % перед змінними, але нічого не вдається.

print('   ----')
print('   - a11x1+a12x2+a13x3=b1')
print('   -')
print('-    a21x1+a22x2+a23x3=b2')
print('   -')
print('   - a31x1+a32x2+a33x3=b3')
print('   ----')


a11 = float(input('Введи значення а11: '))
a12 = float(input('Введи значення а12: '))
a13 = float(input('Введи значення а13: '))
a21 = float(input('Введи значення а21: '))
a22 = float(input('Введи значення а22: '))
a23 = float(input('Введи значення а23: '))
a31 = float(input('Введи значення а31: '))
a32 = float(input('Введи значення а32: '))
a33 = float(input('Введи значення а33: '))
b1 = float(input('Введи значення b1: '))
b2 = float(input('Введи значення b2: '))
b3 = float(input('Введи значення b3: '))

d = a11*a22*a33+a12*a23*a31+a21*a32*a13-(a13*a22*a31+a12*a21*a33+a23*a32*a11)
print('a11*a22*a33+a12*a23*a31+a21*a32*a13-(a13*a22*a31+a12*a21*33+a23*a32*a11)')
print('Значення нульового трикутника: ','\n')
d1 = b1*a22*a33+a12*a23*b3+b2*a32*a13-(a13*a22*b3+a12*b2*a33+a23*a32*b1)
print ('b1*a22*a33+a12*a23*b3+b2*a32*a13-(a13*a22*b3+a12*b2*a33+a23*a32*b1)')
print('Значення першого трикутника: ',d1,'\n')
d2 = a11*b2*a33+b1*a23*a31+a21*b3*a13-(a13*b2*a31+b1*a21*a33+a23*b3*a11)
print('a11*b2*a33+b1*a23*a31+a21*b3*a13-(a13*b2*a31+b1*a21*a33+a23*b3*a11)')
print('Значення першого трикутника: ',d2,'\n')
d3 = a11*a22*b3+a12*b2*a31+a21*a32*b1-(b1*a22*a31+a12*a21*b3+b2*a32*a11)
print('a11*a22*b3+a12*b2*a31+a21*a32*b1-(b1*a22*a31+a12*a21*b3+b2*a32*a11)')
print('Значення першого трикутника: ',d2,'\n')

13

(5 відповідей, залишених у Java)

import java.io.*; 

class HelloWorld
   {
public static void main(String args[ ])
      {
System.out.println( Welcome to the world of Java );
       }
   } 

Даний код не може скомпілюватись після натиснення F6  та я встановив компілятор Java, та набираю javac, і видає, що даної команди не існує, як мені скомпілювати програму?

14

(3 відповідей, залишених у Python)

Є програма для пошуку файлів, які містять певне слово, розроблені 2 версії даної програми, але вони виходять з ладу на одному місці:

file_path = open(os.path.join(path, file_name))

Перша версія скрипту:

import os
from os.path import splitext
import fnmatch
 
print ('Производиться поиск ключевого \nслова во всех файлах заданой директории \nкроме расширений *.exe, *.zip, *.xls(x), \n*.dot(x), *.apk, *.dll, *.doc(x), *.ppt(x).')
print ('\n----------------------------------\n')
 
def main():
    path = input('Директория: ')
    while not os.path.isdir(path): #проверка пути
        print('Такого каталога нет')
        path = input('Путь к каталогу: ')
        return
 
    pattern = input('Искаемое слово: ')
 
 
    EXCL_EXTS = ('.exe', '.zip', '.xls(x)', '.dot(x)', '.apk', '.dll', '.doc(x)', '.ppt(x')
 
    for dirpath, dirs, files in os.walk(path):
        for file_name in files:
            fn, fext = splitext(file_name)
            if fext not in EXCL_EXTS:
                continue
            file_path = open(os.path.join(path, file_name), 'r')
            print(os.path.join(path, file_name))
 
if __name__ == '__main__':
    main()
 
def find_word(file_path, pattern):
    new_lines = []
    try:
        with open(file_path, 'rb') as f:
            for line in f:
                if pattern in line:
                    continue
                else:
                    True
    except FileNotFoundError:
        print('Нету прав доступа:', file_path)
        return
    except PermissionError:
        print('Нету прав доступа:', file_path)
        return
    else:
        pass
        return

Друга версія:

import os
from os.path import splitext
import fnmatch
 
print ('Производиться поиск ключевого \nслова во всех файлах заданой директории \nкроме расширений *.exe, *.zip, *.xls(x), \n*.dot(x), *.apk, *.dll, *.doc(x), *.ppt(x).')
print ('\n----------------------------------\n')
 
def main():
    path = input('Директория: ')
    while not os.path.isdir(path): #проверка пути
        print('Такого каталога нет')
        path = input('Путь к каталогу: ')
        return
   
    pattern = input('Искаемое слово: ')
 
 
    EXCL_EXTS = ('.exe', '.zip', '.xls(x)', '.dot(x)', '.apk', '.dll', '.doc(x)', '.ppt(x')
       
    for dirpath, dirs, files in os.walk(path):
        for file_name in files:
            fn, fext = splitext(file_name)
            if fext not in EXCL_EXTS:
                continue
            file_path = open(os.path.join(path, file_name))
            if os.path.isfile(file_path):
                continue
            print(os.path.join(path, file_name))
 
if __name__ == '__main__':
    main()
 
def find_word(file_path, pattern):
    new_lines = []
    try:
        with open(file_path, 'rb') as f:
            for line in f:
                if pattern in line:
                    continue
    except PermissionError:
        print('Нету прав доступа:', file_path)
        return

15

(4 відповідей, залишених у C++)

Я розумію, що програма робить, але не розумію, що робить даний цикл

for (; size; size--) cout << '\n';

16

(4 відповідей, залишених у C++)

Є код:

#include <iostream>
using namespace std;

void clrscr(int size = 25);

int main()
{
    
    setlocale(LC_CTYPE, "ukr");
    
    int i;

    for (i = 0; i < 30; i++) cout << i << '\n';
    clrscr(); // Очищаємо 25 рядків.

    for (i = 0; i < 30; i++) cout << i << '\n';
    clrscr(10); // Очищаємо 10 рядків.

    getchar();
}

void clrscr(int size)
{
    for (; size; size--) cout << '\n';
}

Не можу зрозуміти, що робить даний код:

void clrscr(int size)
{
    for (; size; size--) cout << '\n';
}

17

(2 відповідей, залишених у C++)

Я так розумію, що дана функція створюється програмістом за допомогою return?

// Створення функцій myabs() - перезавантаженої версії функції abs().

#include <iostream>
using namespace std;

// Функція myabs() перезавантажається 3 варіантами.
int myabs(int i);
double myabs(double d);
long myabs(long l);

int main()
{
    
    setlocale(LC_CTYPE, "ukr");
    
    cout << myabs(-10) << '\n';
    cout << myabs(-11.0) << '\n';
    cout << myabs(-9L) << '\n';

    getchar();
}

int myabs(int i)
{
    cout << "Використання int-функції myabs(): ";
    if (i < 0) return -i;
    else return i;
}
double myabs(double d)
{
    cout << "Використання double-функції myabs(): ";
    if (d < 0.0) return -d;
    else return d;
}
long myabs(long l)
{
    cout << "Використання int-функції myabs(): ";
    if (l < 0) return -l;
    else return l;
}

Чому, наприклад даний рядок коду:

cout << myabs(-10) << '\n';

Дає додатній результат?

Адже:

int myabs(int i)
{
    cout << "Використання int-функції myabs(): ";
    if (i < 0) return -i; 
    else return i;
}

Тут є дві умови, за яким якщо число від'ємне повертається від'ємне значення:

if (i < 0) return -i; 

Якщо додатнє, повертається додатнє значення:

else return i;
// Простий спосiб органiзацiї безпечного масиву.

#include <iostream>
using namespace std;

int &put(int i); // Записуємо значення в масив.
int get(int i); // Зчитуємо значення з масиву.

int vals[10];
int error = -1;

int main()
{
    
    setlocale(LC_CTYPE, "ukr");
    
    put(0) = 10; // Записуємо значення в масив.
    put(1) = 20;
    put(9) = 30;
    
    cout << get(0) << ' ';
    cout << get(1) << ' ';
    cout << get(9) << ' ';

    // А тепер спецiально генеруємо помилку.
    put(12) = 1; // iндекс за межами масиву.

    getchar();
}

// Функцiя занесення значення в масив.
int &put(int i)
{
    if (10 > i >= 0) // або if(i>=0 && i<10).
        return vals[i]; // Повертаємо посилання на i-й елемент.
    else {
        cout << "Помилка порушення кордонiв!\n";
        return error; // Повертаємо посилання на error.
    }
}

// Функцiя зчитування значення з масиву.
int get(int i)
{
    if (10 > i >= 0) // або if(i>=0 && i<10).
        return vals[i]; // Повертаємо посилання на i-й елемент.
    else {
        cout << "Помилка порушення кордонiв!\n";
        return error; // Повертаємо посилання на error.
    }
}

Проблема в тому що коли я захотів записати умову:

if(i>=0 && i<10)

на:

if (10 > i >= 0)

Програма не відображає останнього результату:

Помилка порушення кордонiв!.

Де в моєму виразі збій логіки?

19

(3 відповідей, залишених у C++)

Є код з книги Шильдта С++ Базовый курс, ст.99, код видає при любому значенні один результат.

Код Шильдта:

// Програма "Вгадай магічне число": 
// остання версія.

#include <iostream>
#include <cstdlib>

using namespace std;

void play(int m);

int main()
{

    setlocale(LC_CTYPE, "ukr");

    int option, magic;

    magic = rand();

    do {
        cout << "1. Отримати нове магiчне число\n";
        cout << "2. Пограти\n";
        cout << "3. Вийти з програми\n";
        do {
            cout << "Введи свiй варiант: ";
            cin >> option;
        } while (option > 1 || option < 3);

        switch (option) {
            case 1:
                magic = rand();
                break;
            case 2:
                play(magic);
                break;
            case 3:
                cout << "Допобачення!!!\n";
                break;
        }
    } while (option != 3);

    getchar();
}

// Пограємо в гру.
void play(int m)
{
    int t, x;

    for (t = 0; t < 100; t++) {
        cout << "Вгадай магiчне число: ";
        cin >> x;
        if (x == m){
            cout << "**Правильно**\n";
            getchar();
        }
        else
            if (x < m) cout << "Мало.\n";
            else cout << "Багато\n";
    }
    cout << "Ти використав всi шанси вгадати число.\n";
    cout << "Спробуй знову!";

    getchar();
}

Та мій варіант (теж такий самий результат):

// Програма "Вгадай магічне число": 
// остання версія.

#include <iostream>
#include <cstdlib>

using namespace std;

void play(int m);

int main()
{

    setlocale(LC_CTYPE, "ukr");

    int option, magic;

    magic = rand();

    do {
        cout << "1. Отримати нове магiчне число\n";
        cout << "2. Пограти\n";
        cout << "3. Вийти з програми\n";
        do {
            cout << "Введи свiй варiант: ";
            cin >> option;
        } while (option > 0 && option < 4);

        switch (option) {
            case 1:
                cout << magic;
                break;
            case 2:
                play(magic);
                break;
            case 3:
                cout << "Допобачення!!!\n";
                break;
        }
    } while (option != 3);

    getchar();
}

// Пограємо в гру.
void play(int m)
{
    int t, x;

    for (t = 0; t < 100; t++) {
        cout << "Вгадай магiчне число: ";
        cin >> x;
        if (x == m){
            cout << "**Правильно**\n";
            getchar();
        }
        else
            if (x < m) cout << "Мало.\n";
            else cout << "Багато\n";
    }
    cout << "Ти використав всi шанси вгадати число.\n";
    cout << "Спробуй знову!";

    getchar();
}

https://replace.org.ua/misc.php?action=pun_attachment&amp;item=935

Є код який здійснює пошук файлів по діапазону розмірів, але є 2 проблеми не виконує рекурсивний пошук.


А в Убунту взагалі виникає помилка, її усунути через блок try ... except?

Також є версія, що треба замінити 14-17 рядок на:

if eval('{} {} {}'.format(filesize moreless size)):
    print(filepath)
if  not eval('{} {} {}'.format(filesize moreless size)):
    print(filepath)

Але я не розумію як сюди параметри записувати.

# -*- coding: utf8 -*-

from os.path import join, getsize
import os
import sys

dirpath = input('Шлях до каталогу: ')
moreless = input('Менше або більше вказаного розміру (<-менше,>-більше) ')
size = int(input('Розмір (в Кб) : '))

data_s = []
for d,dirs,files in os.walk(dirpath):
    for s in files:
        filepath = join(d,s)
        filesize = (os.path.getsize(filepath)) // 1024
        if moreless ==  '>' and filesize > size:                   
            print (filepath)
        if not moreless == '<' and filesize < size:
            print (filepath)

qty = len(data_s)
print('Знайдено',qty,'файлів')