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

Исправьте ошибку C2664 приведения типов - C++

Восстановить пароль Регистрация
 
ZAndrey
0 / 0 / 0
Регистрация: 10.09.2014
Сообщений: 57
21.11.2014, 23:37     Исправьте ошибку C2664 приведения типов #1
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
#include "stdafx.h"
#include <iostream>
#include <fstream>    
#include <conio.h>
using namespace std;
 
void statistics(char *text, char *shifr, int n)
{
    int stat[256];
    for (int i = 0; i < 256; i++)
    {
        stat[i] = 0;
    }
    char symbol;              //Интересующий нас символ
    cout << "Введите символ: ";
    cin >> symbol;
    int number;              //код символа, стоящего в закодированном тексте на месте нужного нам символа
    for (int i = 0; i < n; i++)
    {
        if (text[i] == symbol)
        {
            number = (int)shifr[i];
            stat[number]++;
 
        }
    }
    for (int i = 0; i < 256; i++)
    {
        cout << (char)i << "-" << stat[i] << " ";
        if (((i + 1) % 16 == 0)&&(i != 0))
        {
            cout << "\n";
        }
    }
    cout << "\n";
    system("pause");
}
int key(int *key,int sizemax)
{    
    
     char ch;
     int sum=0,i=0;
     setlocale(0,"RUS");
     printf("Массив ключей \n \n");
     ifstream file1("text.txt");
        while ((ch=file1.get())!=EOF)
        {                           
                if ((ch!=32)&&(ch!=10))
                    {   sum+=ch;
                    }
                else
                    {   key[i]=sum;
                        sum=0;
                        i++;
                    }
        }
        key[i]=sum;
        return i;
}
void main()
{
 int const sizemax=1000; 
 unsigned int keymas[sizemax], j=0, i, i1=0;
 char ch, shifr[sizemax], deshifr[sizemax], flag;
 setlocale(0,"RUS");
 i = key(keymas,sizemax);
  ifstream file2("text.txt");
    while ((ch=file2.get())!=EOF)
    {   
        
            shifr[j]=(ch+keymas[i1])%256;
            j++;
            i1++;
            if (i1>i)
            {   i1=0;
            }
                        
        
            
    }
    
ofstream shifrfile("shifr.txt");
{   for (int j1=0;j1<=j;j1++)
        {   
            shifrfile.put(shifr[j1]);
        }   
}
i1=0;       
for (int j1=0;j1<j;j1++)
{deshifr[j1]=(256-((keymas[i1])%128-shifr[j1]))%256;
i1++;
if (i1>i)
{i1=0;}
}
 
ofstream deshifrfile("deshifr.txt");
{   for (int j1=0;j1<j;j1++)
    {   
        deshifrfile.put(deshifr[j1]);
    }
}
 
        for (int j1=0; j1<=i; j1++)
            {cout << keymas[j1]<<" ";}
        cout << '\n';
        cout << '\n';
        
        printf("Зашифрованный текст \n \n");     
        for (int j2=0; j2<j; j2++)
        cout << shifr[j2];
        cout << '\n';
        cout << '\n';
       
        printf("Дешифрованный текст \n \n");     
        for (int j3=0; j3<j; j3++)
        cout << deshifr[j3];
        cout << '\n';
 
        do
    {
        statistics(deshifr, shifr, j);
        cout << "Выход? y/n" << endl;
        cin >> flag;
    } while (flag != 'y');
             
     system ("pause");
     
}
p,s, ошибка находится на 66 строке
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2014, 23:37     Исправьте ошибку C2664 приведения типов
Посмотрите здесь:

C++ error C2664. Исправьте пожалуйста
C++ Исправьте ошибку
C++ Исправьте ошибку
C++ Ошибка приведения типов в MSVS 2008
C++ Используя перегрузку, написать функцию для выполнения приведения типов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1855 / 1651 / 575
Регистрация: 14.05.2014
Сообщений: 4,737
Записей в блоге: 1
Завершенные тесты: 5
21.11.2014, 23:52     Исправьте ошибку C2664 приведения типов #2
Цитата Сообщение от ZAndrey Посмотреть сообщение
ошибка находится на 66 строке
текст ошибки, нужен текст ошибки!
ZAndrey
0 / 0 / 0
Регистрация: 10.09.2014
Сообщений: 57
21.11.2014, 23:57  [ТС]     Исправьте ошибку C2664 приведения типов #3
error C2664: key: невозможно преобразовать параметр 1 из "unsigned int [1000]" в "int *"
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1855 / 1651 / 575
Регистрация: 14.05.2014
Сообщений: 4,737
Записей в блоге: 1
Завершенные тесты: 5
22.11.2014, 00:08     Исправьте ошибку C2664 приведения типов #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от ZAndrey Посмотреть сообщение
int key(int *key,int sizemax)
Цитата Сообщение от ZAndrey Посмотреть сообщение
unsigned int keymas[sizemax]
разные типы. Либо в объявлении функции измените на unsigned, либо в объявлении массива укажите тип просто int.
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
22.11.2014, 00:09     Исправьте ошибку C2664 приведения типов #5
Цитата Сообщение от ZAndrey Посмотреть сообщение
error C2664: key: невозможно преобразовать параметр 1 из "unsigned int [1000]" в "int *"
а чего ты хочешь
Цитата Сообщение от ZAndrey Посмотреть сообщение
unsigned int keymas[sizemax]
Цитата Сообщение от ZAndrey Посмотреть сообщение
int key(int *key,
два разных типа
ты уж определись
или
C++
1
int key(unsigned int *key,
или
C++
1
 int keymas[sizemax]
или вручную приводи
ZAndrey
0 / 0 / 0
Регистрация: 10.09.2014
Сообщений: 57
22.11.2014, 00:20  [ТС]     Исправьте ошибку C2664 приведения типов #6
СПАСИБО!
Yandex
Объявления
22.11.2014, 00:20     Исправьте ошибку C2664 приведения типов
Ответ Создать тему
Опции темы

Текущее время: 23:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru