Сторінка 7 з 10

Re: Об'єктно-Орієнтоване Програмування

ПовідомленняДодано: 15 травня 2011, 12:42
Sergiych
Спасибо!!!

Re: Об'єктно-Орієнтоване Програмування

ПовідомленняДодано: 19 травня 2011, 15:02
Геннадый
Геннадый написав:
Василь написав:
Obi-Van написав:хтось шарить як використовувати блок трай-кеч для помилки формату по аналогії до FormatException в C#?

Код: Виділити все
#include <iostream>
#include <conio.h>
#include <stdlib.h>

using namespace std;
int main(){
 cout<<"Zinchuk!"<<endl;
    cin>>x;
    try {
   
    }
    catch (...){ // если нашло хоть одну ошибку...
          cout<<"Delenue na nol";
    }
    system("PAUSE");
}


DevCPP - кастрат! Заявляю официально! Вобще долино срабатывать… Если узнаю - отпишусь ))

Re: Об'єктно-Орієнтоване Програмування

ПовідомленняДодано: 19 травня 2011, 15:10
aol
Василь написав:
Obi-Van написав:хтось шарить як використовувати блок трай-кеч для помилки формату по аналогії до FormatException в C#?

Код: Виділити все
#include <iostream>
#include <conio.h>
#include <stdlib.h>

using namespace std;
int main(){
    int x;
    cin>>x;
    try {
        x=1/x;
    }
    catch (...){ // если нашло хоть одну ошибку...
          cout<<"Delenue na nol";
    }
    system("PAUSE");
}


DevCPP - кастрат! Заявляю официально! Вобще долино срабатывать… Если узнаю - отпишусь ))

включите в параметрах проекта генерацию исключительных ситуаций (exception) , будет работать
И кстати DevCPP - всего лишь IDE для gcc. Можно ругаться (и обоснованно) на кривость и глючность интерфейса, но компилит он так же как в любом юнихе.

Re: Об'єктно-Орієнтоване Програмування

ПовідомленняДодано: 19 травня 2011, 16:59
Василь
aol написав:И кстати DevCPP - всего лишь IDE для gcc. Можно ругаться (и обоснованно) на кривость и глючность интерфейса, но компилит он так же как в любом юнихе.


Нифига! Компилит не так само!!!!
Вот подтверждение моим словам:

http://radfiz.org.ua/sos/q/1304179111.txt
P.S. Делалось по примеру, который Мы разбирали с Ефименко на лекции. Считывание fscanf в int с %c

На Borland C++ Builder 6 работает без проблем.
На DevCPP - компилируется, выполняется - и когда доходит до этапа записи масива в файл - тот масив, который заполненый (int mas[n];) - куда то странным образом исчезает. При отладке - ну такие цифры показывает, что аж блевать хочеться.

На линуксе зафигашил в GEANY - а он ругнулся на то что у меня fscanf(f1,"%c",&c); под %c скрывается int. После того как я поменял c с int на char заработало и в DevCPP и в LINUX с стандартным GCC.

DevCPP - кстрат. Задрал уже. Сколько в Borland C++ 3.0 и в Borland C++ Builder 6 и в Visual Studio и в Geany (и т.д.) прог не писал... ну такого,
http://radfiz.org.ua/images/x/devcpp_error.jpg
И на постой, я еще не видал. Задалбывает! Мало того CTRL+SPACE не так как надо работает!!! А эти дИбИльНыЕ отступы... кастрат бльо.

Re: Об'єктно-Орієнтоване Програмування

ПовідомленняДодано: 19 травня 2011, 18:06
aol
DevCPP - це IDE для MinGW32 - портований gcc для Win32 систем.
У вашому прикладі все просто
Достатньо ініціалізувати змінну c нулем і все буде працювати вірно.
Причина цього явища в тому, що int займає 4 байта, а char 1 байт.
до функції scanf передається вказівник на змінну с і вона змінює відповідно тільки 1 байт (оскільки в форматованному вводі ви вказали, що параметр буде типу char). Три інші байти містять мусор без початкової ініціалізації змінної, с буде містити 1 байт зчитаних даних та 3 байта мусору.
Відповідно порівняння c != константа у вас працює не вірно.
на приватні повідомлення ще немає можливості відповідати, тому відповім публічно: "так"

А всі вильоти та некоректна робота автодоповнення (працює тільки після рекомпіляції) - так недоліки. До речі відступи можна налаштувати :)

Re: Об'єктно-Орієнтоване Програмування

ПовідомленняДодано: 19 травня 2011, 18:53
Василь
aol написав:DevCPP - це IDE для MinGW32 - портований gcc для Win32 систем.
У вашому прикладі все просто
Достатньо ініціалізувати змінну c нулем і все буде працювати вірно.
Причина цього явища в тому, що int займає 4 байта, а char 1 байт.
до функції scanf передається вказівник на змінну с і вона змінює відповідно тільки 1 байт (оскільки в форматованному вводі ви вказали, що параметр буде типу char). Три інші байти містять мусор без початкової ініціалізації змінної, с буде містити 1 байт зчитаних даних та 3 байта мусору.
Відповідно порівняння c != константа у вас працює не вірно.
на приватні повідомлення ще немає можливості відповідати, тому відповім публічно: "так"

А всі вильоти та некоректна робота автодоповнення (працює тільки після рекомпіляції) - так недоліки. До речі відступи можна налаштувати :)


Дякую, буду знати!!!!! *RESPECT*

Re: Об'єктно-Орієнтоване Програмування

ПовідомленняДодано: 22 травня 2011, 13:18
Василь
Зображення
Цікаво, як за допомогою delete можна створити класс.... гг

якщо клас один: new - створює. delete - знищує.

Re: Об'єктно-Орієнтоване Програмування

ПовідомленняДодано: 24 травня 2011, 17:38
Ксюха Шаптала
Там больше 1 книги не добавляет

Re: Об'єктно-Орієнтоване Програмування

ПовідомленняДодано: 25 травня 2011, 21:17
RUS
Васек, можешь с програмой подсобить?

Завдання: Визначити структуру для збереження інформації про дату (день, місяць, рік). Написати функцію, яка повертае величину інтервалу часу (у днях) між двома заданими датами.

Re: Об'єктно-Орієнтоване Програмування

ПовідомленняДодано: 26 травня 2011, 05:43
Василь
RUS написав:Васек, можешь с програмой подсобить?

Завдання: Визначити структуру для збереження інформації про дату (день, місяць, рік). Написати функцію, яка повертае величину інтервалу часу (у днях) між двома заданими датами.


Код: Виділити все
/*
Визначити структуру для збереження інформації про дату (день, місяць, рік).
Написати функцію, яка повертае величину інтервалу часу (у днях) між двома
заданими датами.
*/
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
using namespace std;

struct Tdmy{ // структура
       long d,m,y; //  число місяць рік
       void dmy_pp(){ // дата плюс плюс
            d++;
            switch (m){
                   case 1: if (d>31) {d=1; m++;} break;
                   case 2: if (d> ((y % 4 == 0) ? 29 : 28)  ) {d=1; m++;} break;
                   case 3: if (d>31) {d=1; m++;} break;
                   case 4: if (d>30) {d=1; m++;} break;
                   case 5: if (d>31) {d=1; m++;} break;
                   case 6: if (d>30) {d=1; m++;} break;
                   case 7: if (d>31) {d=1; m++;} break;
                   case 8: if (d>31) {d=1; m++;} break;
                   case 9: if (d>30) {d=1; m++;} break;
                   case 10: if (d>31){d=1; m++;} break;
                   case 11: if (d>30){d=1; m++;} break;
                   case 12: if (d>31){d=1; m=1; y++;} break;
                   // перевіряємо корректність
            }   
       }
       void show_date(){ // функція виводить дату
            cout<<"The date is (d.m.y) : "<<d<<"."<<m<<"."<<y<<endl;           
       }
       void enter_date(){ // функція вводить дату
            cout<<"Enter DATE "<<endl;
            cout<<" D : ";
            cin>>d;
            cout<<" M : ";
            cin>>m; 
            cout<<" Y : ";
            cin>>y;
            cout<<endl;           
                     
       }             
};
int test(Tdmy p1,Tdmy p2){
    // функція приймає дві дати і виводить такі результати:
    // кто раньше: 1 - первый; 2 - второй; 0 - одинаковые
     if (p1.y>p2.y){
        return 2;
     }     
     if (p1.y<p2.y){
        return 1;
     }     
     // если года одинаковые... продолжаем наш тест ))
     // ща месяца
     if (p1.m>p2.m){
        return 2;
     }     
     if (p1.m<p2.m){
        return 1;
     }     
     // теперь дни
     if (p1.d>p2.d){
        return 2;
     }     
     if (p1.d<p2.d){
        return 1;
     }     
     // если ничего не подошло - тогда даты одинаковые     
     return 0;
}
long DateIntervalCount(Tdmy p1,Tdmy p2){
     // функція підраховує кількість днів між датами
    int result=test(p1,p2); // дати рівні
   
    if ( result == 0 ) return 0; // p1=p2
    if ( result == 2 ) { //p1>p2
       // міняємо місцями дати
          Tdmy temp=p1;
          p1=p2;
          p2=temp;   
    }
    long interval=0; // часовий інтервал = 0
     while (test(p1,p2)!=0)
     {// інкрементуємо дату до тих пір, поки дати не зрівняються
        interval++;
        p1.dmy_pp();
     }
           
     return interval;
}
int main(){
    Tdmy var1; // створили структуру
    Tdmy var2; // створили структуру   
   
    do{
       system("cls");
        cout<<"enter 1: \n";
        var1.enter_date(); // ввели дату 1
        cout<<"enter 2: \n";
        var2.enter_date();// ввели дату 2
       
        var1.show_date();    // вивели дату1
        var2.show_date();        //         2
        cout<<" Date interval is "<< DateIntervalCount(var1,var2)<<endl;// вивели інтервал в днях
        cout<<endl<<"Press ESC to exit..."<<endl;
    } while (getch()!=27); // якщо ESC - то виходимо
    system("PAUSE");   
    return 0;
}


Время моей автономной работы : 7072 дней!!! ггг

Взял кусок с Дашиной проги, потом с Марининой, потом еще один метод написал - вот и программа )) проверяй корректность работы ))