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

Проблемы с кодом. Ругается на strcpy. Хелпните - C++

Восстановить пароль Регистрация
 
bestpalyer1
-1 / 1 / 0
Регистрация: 20.12.2012
Сообщений: 47
20.12.2012, 14:22     Проблемы с кодом. Ругается на strcpy. Хелпните #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
#include <iostream>
#include <string>
#include <windows.h>
using namespace std;
 
 
void Print(char***matr,int str,int stb) //Печать матрицы
{
    for(int i=0;i<str;i++)
    {
    for(int j=0;j<stb;j++)
    cout<<matr[i][j]<<"\t";
    cout<<"\n";
    }
}
 
char***del(char***matr,int str,int stb) //Удаление последней строки из матрицы
{
    int j,i;
    for(int i=str-1;i>-1;i--)
    for(j=stb-1;j>-1;j--)
    if(matr[i][j][0]!='\0')
    {
        strcpy(matr[i][j],"");
        return matr;
    }
    if(i==0 && j==0)
    cout << "Матрица пустая!";
    return matr;
}
 
 
void form(int str,int stb)    //Формирование матрицы
{
    char* vibor;
    vibor=new char[4];
 
 
    char***matr=new char**[str];
    for(int i=0;i<str;i++)
{
    matr[i]=new char*[stb];
    for(int j=0;j<stb;j++)
   {
    char s[50];
    cout << "Ведите строку:";
    cin>>s;
 
    matr[i][j]=new char[strlen(s)+1];
 
    strcpy(matr[i][j],s);
    }
}
 
    cout <<"\n Если вы хотите распечатать матрицу введите yes, если нет, то no";
    cin>>vibor;
 
    if(strcmp("yes",vibor)==0)
    Print(matr,str,stb);
 
    strcpy(vibor,"");
 
    cout <<"\n Если вы хотите выполнить удаление, введите yes, если нет, то no";
    cin>>vibor;
 
    if(strcmp("yes",vibor)==0)
    matr=del(matr,str,stb);
    strcpy(vibor,"");
 
    cout << "\n Если вы хотите выполнить печать новой матрицы, то введите yes,если нет, то no");
    cin>>vibor;
    if(strcmp("yes",vibor)==0)
    Print(matr,str,stb);
}
 
 
 
void perekluchat()
{
    int str,stb,h=0;
 
 
    cout << "Введите количество строк:";
    cin>>str;
 
    while(str<=0 || str>100)
    {
        cout << "Введите значение от 0 до 100";
        cin >> str;
    }
 
    cout << "Введите количество столбцов:";
    cin>>stb;
 
    while(stb<=0 || stb>100)
    {
        cout << "Введите значение от 0 до 100";
        cin >> stb;
    }
 
 
    while(h!=2)
    {
    cout << "Если вы хотите выполнить, создание новой матрицы, то введите 1, если вы хотите выйти, введите 2\n";
    cin>>h;
    if(h==1)
    form(str,stb);
    if(h==2)
    break;
    }
     
}
 
 
void main()
{
    perekluchat();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2012, 14:22     Проблемы с кодом. Ругается на strcpy. Хелпните
Посмотрите здесь:

strcpy C++
C++ свой strcpy()
strcpy C++
Реализация strcpy(); C++
с кодом С++ проблемы...пожалуйста... C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
shilovec5377
 Аватар для shilovec5377
28 / 53 / 1
Регистрация: 26.05.2011
Сообщений: 752
20.12.2012, 15:01     Проблемы с кодом. Ругается на strcpy. Хелпните #2
чета я скомпилил, у меня не ругается
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
20.12.2012, 15:28     Проблемы с кодом. Ругается на strcpy. Хелпните #3
2:
C++
1
#include <cstring>
70: скобку в конце убери

115:
C++
1
int main()
bestpalyer1
-1 / 1 / 0
Регистрация: 20.12.2012
Сообщений: 47
20.12.2012, 16:13  [ТС]     Проблемы с кодом. Ругается на strcpy. Хелпните #4
Спасибо. Но появилась новая проблема! Когда я прописываю строки и вывожу, то выводится китайский язык а не слова =(
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
20.12.2012, 16:24     Проблемы с кодом. Ругается на strcpy. Хелпните #5
Посмотри тут: Русские шрифты в консоли
bestpalyer1
-1 / 1 / 0
Регистрация: 20.12.2012
Сообщений: 47
20.12.2012, 16:32  [ТС]     Проблемы с кодом. Ругается на strcpy. Хелпните #6
Я пробовал так,но мне писало что "s" не совместима с ... типом. =(
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
20.12.2012, 16:36     Проблемы с кодом. Ругается на strcpy. Хелпните #7
Цитата Сообщение от bestpalyer1 Посмотреть сообщение
Я пробовал так
Так это как именно? Покажи код, в котором эта ошибка.
bestpalyer1
-1 / 1 / 0
Регистрация: 20.12.2012
Сообщений: 47
20.12.2012, 16:49  [ТС]     Проблемы с кодом. Ругается на strcpy. Хелпните #8
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
[CPP][CPP][CPP][CPP][CPPQT][CPPQT][CPPQT]#include <iostream>
#include <string>
#include <cstring>
#include <Windows.h>
using namespace std;
 
 
 
void prin(char*s)
{
    char*buf=new char[strlen(s)+1];
    CharToOem(s,buf);
    cout<<buf;
    delete[]buf;
}
 
 
void Print(char***matr,int str,int stb)
{
    for(int i=0;i<str;i++)
    {
    for(int j=0;j<stb;j++)
    cout<<matr[i][j]<<"\t";
    cout<<"\n";
    }
}
 
 
 
 
char***del(char***matr,int str,int stb)
{
    int j,i;
    for(int i=str-1;i>-1;i--)
    for(j=stb-1;j>-1;j--)
    if(matr[i][j][0]!='\0')
    {
    strcpy(matr[i][j],"");
    return matr;
    }
    if(i==0&&j==0)
    cout << "Матрица пустая!";
    return matr;
}
 
 
 
void form(int str,int stb)
{
    char*vibor;
    vibor=new char[4];
    char***matr=new char**[str];
 
 
    for(int i=0;i<str;i++)
   {
    matr[i]=new char*[stb];
    for(int j=0;j<stb;j++)
    {
    char s[50];
    cout << "\nВведите строку: ";
    cin>>s;
    matr[i][j]=new char[strlen(s)+1];
    strcpy(matr[i][j],s);
    }
    }
 
 
    cout << "\n Если вы хотите распечатать матрицу введите yes, если нет, то no:";
    cin>>vibor;
    if(strcmp("yes",vibor)==0)
    Print(matr,str,stb);
    strcpy(vibor,"");
    cout << "\n Если вы хотите выполнить удаление, введите yes, если нет, то no:";
    cin>>vibor;
    if(strcmp("yes",vibor)==0)
    matr=del(matr,str,stb);
    strcpy(vibor,"");
    cout << "\n Если вы хотите выполнить печать новой матрицы, то введите yes,если нет, то no:";
    cin>>vibor;
    if(strcmp("yes",vibor)==0)
    Print(matr,str,stb);
}
 
 
void perekluchat()
{
int str,stb,h=0;
 
 
    cout << "Введите количество строк:";
    cin>>str;
 
    while(str<=0 || str>5)
    {
        cout << "Введите значение от 0 до 5:";
        cin >> str;
    }
 
    cout << "Введите количество столбцов:";
    cin>>stb;
 
    while(stb<=0 || stb>5)
    {
        cout << "Введите значение от 0 до 5:";
        cin >> stb;
    }
 
 
    while(h!=2)
    {
    cout << "Если вы хотите выполнить, создание новой матрицы, то введите 1, если вы хотите выйти, введите 2: \n";
    cin>>h;
    if(h==1)
    form(str,stb);
    if(h==2)
    break;
    }
}
 
 
void main()
{
    perekluchat();
}[/CPPQT][/CPPQT][/CPPQT]
[/CPP][/CPP][/CPP][/CPP]
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
20.12.2012, 16:51     Проблемы с кодом. Ругается на strcpy. Хелпните #9
Скомпилировалось без ошибок. Только
C++
1
int main()
bestpalyer1
-1 / 1 / 0
Регистрация: 20.12.2012
Сообщений: 47
20.12.2012, 17:41  [ТС]     Проблемы с кодом. Ругается на strcpy. Хелпните #10
У меня:
1>c:\users\bestplayer1\desktop\университет\информатика\работы c++\лаба №6\2!\2!.cpp(12): error C2664: CharToOemW: невозможно преобразовать параметр 1 из "char *" в "LPCWSTR"
1> Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
20.12.2012, 17:51     Проблемы с кодом. Ругается на strcpy. Хелпните #11
Точно не скажу, но если это Visual Studio, то может CharToOemA нужно написать. И вот так будет удобнее, с функцией: Русские шрифты в консоли

А setlocale вообще не пробовал?
Gus
 Аватар для Gus
24 / 35 / 2
Регистрация: 17.02.2009
Сообщений: 364
20.12.2012, 17:53     Проблемы с кодом. Ругается на strcpy. Хелпните #12
USE the linux - линь единственная вродь ос поддерживающая русские символы в консоли без геммороя. а так тут на форуме, есть тема "Русские шрифты в консоли" -> в этой теме есть вложение с .cpp и .h файлом, подключите их к проекту, и не знайте проблем
bestpalyer1
-1 / 1 / 0
Регистрация: 20.12.2012
Сообщений: 47
20.12.2012, 18:15  [ТС]     Проблемы с кодом. Ругается на strcpy. Хелпните #13
А еще вопрос. Если я ввожу в строку несколько слов (через пробел), то он сразу разбивает их, а мне нужно чтобы вся строка шла как одно. Как это сделать?
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
20.12.2012, 18:18     Проблемы с кодом. Ругается на strcpy. Хелпните #14
Пользоваться getline
bestpalyer1
-1 / 1 / 0
Регистрация: 20.12.2012
Сообщений: 47
20.12.2012, 18:20  [ТС]     Проблемы с кодом. Ругается на strcpy. Хелпните #15
Пример приведите.
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
20.12.2012, 18:22     Проблемы с кодом. Ругается на strcpy. Хелпните #16
Я ссылку на пример сделал.
bestpalyer1
-1 / 1 / 0
Регистрация: 20.12.2012
Сообщений: 47
20.12.2012, 19:43  [ТС]     Проблемы с кодом. Ругается на strcpy. Хелпните #17
Цитата Сообщение от Schizorb Посмотреть сообщение
А setlocale вообще не пробовал?
Пробовал.

Добавлено через 1 час 11 минут
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
#include <iostream>
#include <string>
#include <cstring>
#include <Windows.h>
using namespace std;
 
 
char bufRus[256];
 
char* Rus(const char* text)
{
      CharToOemA(text, bufRus);
      return bufRus;
}
 
 
 
 
void Print(char***matr,int str,int stb)
{
    for(int i=0;i<str;i++)
    {
    for(int j=0;j<stb;j++)
    cout<<matr[i][j]<<"\t";
    cout<<"\n";
    }
}
 
 
 
 
char***del(char***matr,int str,int stb)
{
    int j,i;
    for(int i=str-1;i>-1;i--)
    for(j=stb-1;j>-1;j--)
    if(matr[i][j][0]!='\0')
    {
    strcpy(matr[i][j],"");
    return matr;
    }
 
    if(i==0 && j==0)
    cout << "Матрица пустая!";
    return matr;
}
 
 
 
void form(int str,int stb)
{
 
    char*vibor;
    vibor=new char[4];
    char***matr=new char**[str];
 
 
    for(int i=0;i<str;i++)
   {
    matr[i]=new char*[stb];
    for(int j=0;j<stb;j++)
    {
    cout << "\nВведите строку: ";
    char s[256];
    cin.getline(s,256);
    matr[i][j]=new char[strlen(s)+1];
    strcpy(matr[i][j],s);
    }
    }
 
 
    cout << "\n Если вы хотите распечатать матрицу введите yes, если нет, то no:";
    cin>>vibor;
    if(strcmp("yes",vibor)==0)
    Print(matr,str,stb);
    strcpy(vibor,"");
    cout << "\n Если вы хотите выполнить удаление, введите yes, если нет, то no:";
    cin>>vibor;
    if(strcmp("yes",vibor)==0)
    matr=del(matr,str,stb);
    strcpy(vibor,"");
    cout << "\n Если вы хотите выполнить печать новой матрицы, то введите yes,если нет, то no:";
    cin>>vibor;
    if(strcmp("yes",vibor)==0)
    Print(matr,str,stb);
}
 
 
void perekluchat()
{
int str,stb,h=0;
 
 
    cout << "Введите количество строк:";
    cin>>str;
 
    while(str<=0 || str>5)
    {
        cout << "Введите значение от 0 до 5:";
        cin >> str;
    }
 
    cout << "Введите количество столбцов:";
    cin>>stb;
 
    while(stb<=0 || stb>5)
    {
        cout << "Введите значение от 0 до 5:";
        cin >> stb;
    }
 
 
    while(h!=2)
    {
    cout << "Если вы хотите выполнить, создание новой матрицы, то введите 1, если вы хотите выйти, введите 2: \n";
    cin>>h;
    if(h==1)
    form(str,stb);
    if(h==2)
    break;
    }
}
 
 
int main()
{
    setlocale(LC_ALL,"RUS");
    perekluchat();
}

Я переписал ввод строки через getline, но когда я теперь ввожу ее,то 1 строка автоматом заполнена, сразу на 2 кидает!? Посмотрите. + Как применить CharToOemA для getline?
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
20.12.2012, 19:51     Проблемы с кодом. Ругается на strcpy. Хелпните #18
Попробуй после getline

C++
1
2
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
И #include <limits> надо подключить.

Насчет CharToOemA не знаю, не пользуюсь русским в консоли.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.12.2012, 20:36     Проблемы с кодом. Ругается на strcpy. Хелпните
Еще ссылки по теме:

C++ strcpy()
Проблемы с кодом C++
C++ Проблемы с кодом Необработанное исключение по адресу 0x00A85A9B

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
bestpalyer1
-1 / 1 / 0
Регистрация: 20.12.2012
Сообщений: 47
20.12.2012, 20:36  [ТС]     Проблемы с кодом. Ругается на strcpy. Хелпните #19
Цитата Сообщение от Schizorb Посмотреть сообщение
cin.ignore(numeric_limits<streamsize>::max(), '\n');
А max как что инициализировать? (требуется идентификатор)

Добавлено через 6 минут
Цитата Сообщение от Schizorb Посмотреть сообщение
2
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
Что это вообще значит?

Добавлено через 8 минут
Цитата Сообщение от bestpalyer1 Посмотреть сообщение
1 строка автоматом заполнена
Помогите решить эту проблему.
зы. А русский язык в консоли и правда бред.

Добавлено через 26 минут
Я решил проблему. Спасибо, ребята.
зы. Вставил cin.ignore(); в начало функции.
Yandex
Объявления
20.12.2012, 20:36     Проблемы с кодом. Ругается на strcpy. Хелпните
Ответ Создать тему
Опции темы

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