Геннадый написав:Василь написав: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 - кастрат! Заявляю официально! Вобще долино срабатывать… Если узнаю - отпишусь ))
Василь написав: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 - кастрат! Заявляю официально! Вобще долино срабатывать… Если узнаю - отпишусь ))
aol написав:И кстати DevCPP - всего лишь IDE для gcc. Можно ругаться (и обоснованно) на кривость и глючность интерфейса, но компилит он так же как в любом юнихе.
aol написав:DevCPP - це IDE для MinGW32 - портований gcc для Win32 систем.
У вашому прикладі все просто
Достатньо ініціалізувати змінну c нулем і все буде працювати вірно.
Причина цього явища в тому, що int займає 4 байта, а char 1 байт.
до функції scanf передається вказівник на змінну с і вона змінює відповідно тільки 1 байт (оскільки в форматованному вводі ви вказали, що параметр буде типу char). Три інші байти містять мусор без початкової ініціалізації змінної, с буде містити 1 байт зчитаних даних та 3 байта мусору.
Відповідно порівняння c != константа у вас працює не вірно.
на приватні повідомлення ще немає можливості відповідати, тому відповім публічно: "так"
А всі вильоти та некоректна робота автодоповнення (працює тільки після рекомпіляції) - так недоліки. До речі відступи можна налаштувати
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;
}
Зараз переглядають цей форум: Немає зареєстрованих користувачів і 7 гостей