Форум программистов, компьютерный форум CyberForum.ru

Необработанное исключение типа system.runtime.InteropServices.SEHException - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Удалить элемент из std::vector http://www.cyberforum.ru/cpp-beginners/thread552720.html
vector<int> k; надо удалить k элемент.
C++ Алгоритм евклида для длинных чисел прошу содействовать в написании данного алгоритма.... static long_ & algorithm_euclida(long_ & a, long_ & b){ long_ x1,y1,x2,y2,x,y; x1=1;x2=0;y1=0;y2=1; while(a.chislo % 2==0 && b.chislo % 2==0){ a=a<<1; b=b<<1; http://www.cyberforum.ru/cpp-beginners/thread552709.html
Методы гаусса, крамера, база данных C++
Добрый день. Столкнулся с некоторым числом проблем, которые в силу недостатка опыта, а возможно и ума, не могу решить. Просьба помочь советом, если вас это не затруднит. Сразу скажу, код кривоват, мягко говоря. 1. Создание базы данных. #include <stdio.h> #include <stdlib.h> #include <time.h> #include <conio.h> #include <iostream.h> struct base
C++ Win32 VS 10 и простейшее диалоговое окно
MessageBoxW: невозможно преобразовать параметр 2 из "const char " в "LPCWSTR" Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции. #include <windows.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MessageBox(NULL, "Hello, Win32...
C++ Указатель char* http://www.cyberforum.ru/cpp-beginners/thread552655.html
программа которая удаляет из введенной с клавиатуры строки начальные пробелы #include <iostream> void new_string(char* p) { int i = 0; while(*p++ == ' ') {
C++ задача с++, при любых числах пишет true! //Сумма двух первых цифр заданного четырехзначного числа //равна сумме двух его последних цифр. #include<iostream.h> #include<conio.h> #include<stdio.h> #include<math.h> int main(void){ int odin,des,sot,tis; int a; cout<<"Vvedit 4-oh znachne chislo"; подробнее

Показать сообщение отдельно
MartinSeptim
0 / 0 / 0
Регистрация: 19.02.2012
Сообщений: 19
19.04.2012, 16:43     Необработанное исключение типа system.runtime.InteropServices.SEHException
Эта ошибка ссылается на 133 строку файла readlong. Подскажите как можно решить эту проблему?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include "StdAfx.h"
#include "conio.h"
#include <iostream>
#include <vector>
#include <iomanip>
#include <string>
#include <cstdlib>
#include <fstream>
#include <ctime>
#include "readlongs.h"
 
#define inname argv[0]
#define outname argv[1]
 
 
using namespace std;
typedef std::vector <int> type;
#include <intrin.h>
#pragma intrinsic(__rdtsc)
 
unsigned __int64 tick(){
    return (__rdtsc());
 
}
 
int main(int argc,char* argv[]){
    /*Если выдает ошибку переполнения, значит в файле in.txt ести пустые строки*/
    ifstream file(inname);
    string str, tmp, str3;
    unsigned __int64 h,r,g,f;
    
    if(file.is_open()){
        while(getline(file, str3)){
type a, b, c, d, rez, rez1; //разные rez нужны для не засорения
      
    readlong  (a, str3); 
    readlong1 (b, str3);
    readlong2 (c, str3); 
    readlong3 (d, str3);
    ofstream out(outname, ios::app );
    h = tick();
    mult (a, b, rez); //использование умножения
    g = tick();
       out<<rez.back(); 
    for (int i = rez.size () - 2; i >= 0; i--)
    {  out<<rez[i];}
     
     out<<",";
/*==================================================*/
       r = tick();
    mult (c, d, rez1); //использование умножения
    f = tick();
 
    out<<rez1.back();
    for (int i = rez1.size () - 2; i >= 0; i--)
    { out<<rez1[i];}
    
    out<<"\r\n";
    out<<( long double)((g-h)+(f-r))/1600000<<endl ;
    }  }
    
 
    return 0;
}
Файл readlong

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
#include "StdAfx.h"
#include "conio.h"
#include <iostream>
#include <vector>
#include <iomanip>
#include <string>
#include <cstdlib>
#include <fstream>
#include <iostream>
#include <ctime>
#define BASE 10
#define LEN 1
const int N=5100;
using namespace std;
typedef std::vector <int> type;
 
void readlong (type &vec, string str3)
{
    string str, str1, str2, str4;
    
str2=str3;
int v;
int len1=str2.length();
for(int i=0;i<len1;i++)
        if(str2[i]==' ')  v=i; 
    char buf2[2*N+2];
   memset( buf2, '\0', 2*N+2 );
   str2.copy( buf2, v );
    str4 = (const char*) buf2; // конвертация буфера в строку
     str=str4;
//==================================================
 
  int d;
    int len=str.length(); // длина основной строки
    for(int i=0;i<len;i++)
        if(str[i]=='.')  d=i; 
    char buf[N];
   memset( buf, '\0', N );
   str.copy( buf, d );
    str1 = (const char*) buf; // конвертация буфера в строку
     str=str1;
 
    for (int i = str.size (); i > 0; i--)
        vec.push_back (atoi (str.substr (i - LEN, LEN).c_str()));
}
 
void readlong1 (type &vec, string str3)
{
    string str, str1, str2, str4;
 
str2=str3;
int v, f, k;
int len1=str2.length();
if(str2[0]=='-')  k=1; //проверка первого числа на -
//==========================
for(int i=0;i<len1;i++)
if(str2[i]==' ')  {v=i; f=len1-v; } 
    char buf2[2*N+2];
   memset( buf2, '\0', 2*N+2 );
   str2.copy( buf2, v, f );
    str4 = (const char*) buf2; // конвертация буфера в строку
     str=str4;
    //==============================
 
    int len=str.length(); // длина основной строки
    int d, c;
    if(str[0]=='-')  k=0; //проверка второго числа на -
    if (k==1) {}
    for(int i=0;i<len;i++)
        if(str[i]=='.')  d=i; 
    char buf[N];
   memset( buf, '\0', N );
   str.copy( buf, d );
    str1 = (const char*) buf; // конвертация буфера в строку
     str=str1;
    for (int i = str.size (); i > 0; i--)
        vec.push_back (atoi (str.substr (i - LEN, LEN).c_str()));
}
 void readlong2 (type &vec, string str3)
{string str, str1, str2, str4;
 
 
str2=str3;
int v;
int len1=str2.length();
for(int i=0;i<len1;i++)
        if(str2[i]==' ')  v=i; 
    char buf2[2*N+2];
   memset( buf2, '\0', 2*N+2 );
   str2.copy( buf2, v );
    str4 = (const char*) buf2; // конвертация буфера в строку
     str=str4;
    //=====================
 
 
    int len=str.length(); // длина основной строки
    int d, c;
    for(int i=0;i<len;i++)
        if(str[i]=='.')  {d=i; c=len-d;}
    char buf1[N];
 
memset( buf1, '\0', N );
   str.copy( buf1, c, d+1 );
   str2 = (const char*) buf1; // конвертация буфера в строку
     str=str2;
    for (int i = str.size (); i > 0; i--)
        vec.push_back (atoi (str.substr (i - LEN, LEN).c_str()));
}
 
 void readlong3 (type &vec, string str3)
{ string str, str1, str2, str4;
  
str2=str3;
int v, f;
int len1=str2.length();
for(int i=0;i<len1;i++)
if(str2[i]==' ')  {v=i; f=len1-v; } 
    char buf2[2*N+2];
   memset( buf2, '\0', 2*N+2 );
   str2.copy( buf2, v, f );
    str4 = (const char*) buf2; // конвертация буфера в строку
     str=str4;
 
    //=====================
 
    int len=str.length(); // длина основной строки
    int d, c;
    for(int i=0;i<len;i++)
        if(str[i]=='.')  {d=i; c=len-d;}
    char buf1[N];
 
memset( buf1, '\0', N );
   str.copy( buf1, c, d+1 );
   str2 = (const char*) buf1; // конвертация буфера в строку
     str=str2;
    for (int i = str.size (); i > 0; i--)
        vec.push_back (atoi (str.substr (i - LEN, LEN).c_str()));
}
 
 
void mult (type &a, type &b, type &rez)
{  
    rez.resize (a.size() + b.size());
    for (int i = 0; i < a.size(); ++i)
        for (int j = 0, carry = 0; j < b.size() || carry; ++j) //сarry вес разряда
        {
            long long cur = rez[i+j] + a[i] * (j < b.size() ? b[j] : 0) + carry;
            rez[i+j] = cur % BASE;
            carry = cur / BASE;
        }
        while (rez.size() > 1 && rez.back() == 0)
        rez.pop_back();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 03:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru