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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.72
verona
0 / 0 / 0
Регистрация: 08.09.2010
Сообщений: 31
#1

cannot convert "char *" to "char".... - C++

08.09.2010, 16:08. Просмотров 3203. Ответов 25
Метки нет (Все метки)

ПРОБЛЕМА в том, что выбивает ошибку cannot convert "char *" to "char"....
вот программа...посоветуйте что-то:
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
#include <iostream.h>
#include <conio.h>
 
void main()
{
clrscr();
int i=0,f,p,a;
int password[5];
char login[5];
char log;
int pass;
 
login[1]="user1";
password[1]=11111;
login[2]="user2";
password[2]=22222;
login[3]="user3";
password[3]=33333;
login[4]="user4";
password[4]=44444;
login[5]="admin";
password[5]=12345;
   cout<<"\t LOGIN    :";cin>>log;
   cout<<"\t PASSWORD :";cin>>pass;
 
    for (i=1;i<=5;i++)
      {
      m2:if (login[i]==log)
      {
     m1: if(password[i]==pass)
        {
        cout<<"\n\t---welcome to the system---";goto m3;
        }
      else
        {
        cout<<"\t --ERROR PASSWORD--\n";f++;
        if (f<3)
        {
        cout<<"\t PASSWORD: ";
        cin>>pass;
        goto m1;
        }
        else { cout<<"COMPLETION OF SESSION";goto m7;}
        }
      }
     else
       {
        cout<<"\t --ERROR LOGIN--\n"; p++;
        if (p<3)
        {
        cout<<"\t LOGIN: ";
        cin>>log;
        goto m2;
        }
        else {
        cout<<"\t --ERROR--\n"<<"\npopitka nesank. dostupa";}
        }
      }
int j;
m3:
if (log=="admin")
   {
    cout<<"base of users:\n";
    for (j=1;j<5;j++)
    {
    cout<<"LOGIN:"<<login[j]<<"\n";
    cout<<"PASSWORD:"<<password[j]<<"\n";
    }}
m7:
 cout<<"\t End.";
getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2010, 16:08     cannot convert "char *" to "char"....
Посмотрите здесь:
Ошибка 6 error C2664: strtok: невозможно преобразовать параметр 1 из "const char *" в "char *" C++
error C2664: strcmp: невозможно преобразовать параметр 1 из "char (*)[20]" в "const char *" C++
C++ Не открывается библиотека 'stdafx.h' и "char" не работает с параметром "char*"
C++ IntelliSense: несовместимые типы операндов ("char" и "const char *")
C++ Несовместимые типы операндов "char" и "const char*"
C++ Невозможно преобразовать параметр 2 из "char" в "const char *"
Error C2440: return: невозможно преобразовать "const char *" в "const char (&)[6]" C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
08.09.2010, 16:09     cannot convert "char *" to "char".... #2
Цитата Сообщение от verona Посмотреть сообщение
посоветуйте что-то
Прочитайте хоть что-нибудь про тип char, а также строки в C/C++ и работу с ними.
vital792
1989 / 1261 / 57
Регистрация: 05.06.2010
Сообщений: 2,213
08.09.2010, 16:11     cannot convert "char *" to "char".... #3
login и password должны быть двумерными
IchMors
97 / 93 / 4
Регистрация: 16.05.2010
Сообщений: 310
08.09.2010, 16:12     cannot convert "char *" to "char".... #4
verona, хоть бы указали строчку в которой ошибка...

Отсчет в массивах начинается с 0 и заканчивается на 1 меньшим элементом чем при обьявлении (mass[5] - последний элемент mass[4])

Цитата Сообщение от verona Посмотреть сообщение
login[5]="admin";
CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
08.09.2010, 16:16     cannot convert "char *" to "char".... #5
Цитата Сообщение от verona Посмотреть сообщение
C++
1
char login[5]
Это массив из 5 символов, а не строк.
Цитата Сообщение от verona Посмотреть сообщение
log=="admin"
Так строки не сравнивают, используйте strcmp.
Про индексацию массивов написано выше.
verona
0 / 0 / 0
Регистрация: 08.09.2010
Сообщений: 31
08.09.2010, 16:32  [ТС]     cannot convert "char *" to "char".... #6
можно написать
if (strcmp login[i]==log).....???
bambino
193 / 19 / 4
Регистрация: 05.08.2010
Сообщений: 229
08.09.2010, 16:33     cannot convert "char *" to "char".... #7
verona
НЕТ!Почитай вниматильней про функцию сравниение строк,strcmp().
vital792
1989 / 1261 / 57
Регистрация: 05.06.2010
Сообщений: 2,213
08.09.2010, 16:34     cannot convert "char *" to "char".... #8
Цитата Сообщение от verona Посмотреть сообщение
strcmp login[i]==lo
msnd поможет))

Добавлено через 26 секунд
msdn то есть))
verona
0 / 0 / 0
Регистрация: 08.09.2010
Сообщений: 31
08.09.2010, 16:37  [ТС]     cannot convert "char *" to "char".... #9
Цитата Сообщение от verona Посмотреть сообщение
login[1]="user1";
как сделать правильно?
IchMors
97 / 93 / 4
Регистрация: 16.05.2010
Сообщений: 310
08.09.2010, 16:40     cannot convert "char *" to "char".... #10
Цитата Сообщение от verona Посмотреть сообщение
можно написать
if (strcmp login[i]==log).....???
правильно мыслите... , но:
log опять таки должно быть строкой/массивом, а не символом и
if(strcmp(login[i], login))...

Добавлено через 1 минуту
Цитата Сообщение от verona Посмотреть сообщение
Цитата Сообщение от verona Посмотреть сообщение
login[1]="user1";
как сделать правильно?
strcpy(login[1], "user1");
опять таки при условии того что login - двухмерный массив
verona
0 / 0 / 0
Регистрация: 08.09.2010
Сообщений: 31
08.09.2010, 16:51  [ТС]     cannot convert "char *" to "char".... #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
#include <iostream.h>
#include <conio.h>
 
void main()
{
clrscr();
int i=0,f,p,a;
int password[5];
char login[5];
char log;
int pass;
 
strcpy(login[1], "user1");
password[1]=11111;
strcpy(login[2], "user2");
password[2]=22222;
strcpy(login[3], "user3");
password[3]=33333;
strcpy(login[4], "user4");
password[4]=44444;
strcpy(login[5], "admin");
password[5]=12345;
   cout<<"\t LOGIN    :";cin>>log;
   cout<<"\t PASSWORD :";cin>>pass;
 
    for (i=1;i<=5;i++)
      {
      m2: strcmp (login[i]==log)
      {
     m1: strcmp (password[i]==pass)
        {
        cout<<"\n\t---welcome to the system---";goto m3;
        }
      else
        {
        cout<<"\t --ERROR PASSWORD--\n";f++;
        if (f<3)
        {
        cout<<"\t PASSWORD: ";
        cin>>pass;
        goto m1;
        }
        else { cout<<"COMPLETION OF SESSION";goto m7;}
        }
      }
     else
       {
        cout<<"\t --ERROR LOGIN--\n"; p++;
        if (p<3)
        {
        cout<<"\t LOGIN: ";
        cin>>log;
        goto m2;
        }
        else {
        cout<<"\t --ERROR--\n"<<"\npopitka nesank. dostupa";}
        }
      }
int j;
m3:
strcmp (log=="admin")
   {
    cout<<"base of users:\n";
    for (j=1;j<5;j++)
    {
    cout<<"LOGIN:"<<login[j]<<"\n";
    cout<<"PASSWORD:"<<password[j]<<"\n";
    }}
m7:
 cout<<"\t End.";
getch();
}
Добавлено через 46 секунд
ой только else тогда не надо? или как его можна заменить?
IchMors
97 / 93 / 4
Регистрация: 16.05.2010
Сообщений: 310
08.09.2010, 17:01     cannot convert "char *" to "char".... #12
наша песня хороша, начинай с начала...
ну вот к примеру:

Цитата Сообщение от verona Посмотреть сообщение
char login[5];
, тоесть создан массив на пять символов и тут же:
Цитата Сообщение от verona Посмотреть сообщение
strcpy(login[1], "user1");
, тоесть пытаетесь впихнуть в второй элемент строку "user1". массив должен обьвлятся как двухмерный: login[5][5];

еще раз
Цитата Сообщение от verona Посмотреть сообщение
m2: strcmp (login[i]==log)
strcmp (login[i],log);
эта функция в качестве параметров принимает указатели на строки и возвращает следующие значения:
< 0 - если первая строка меньше второй
= 0 - если строки эквивалентны
> 0 - если первая строка больше второй
verona
0 / 0 / 0
Регистрация: 08.09.2010
Сообщений: 31
08.09.2010, 17:05  [ТС]     cannot convert "char *" to "char".... #13
торможжжжжжжжу
Mencey
147 / 94 / 7
Регистрация: 22.07.2010
Сообщений: 424
08.09.2010, 17:09     cannot convert "char *" to "char".... #14
Строка длинной в 16 символов или если говорить точней то массив из 16 символов определяется так:
C++
1
char s[16]; // Массив из 16 элементов
Первый элемент массива s[0] последний s[15] т.к. индексирование элементов в C\C++ начинается с нуля.


Рабочий вариант
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
#include <iostream.h>
#include <conio.h>
 
void main()
{
  clrscr();
  int i=0, f, p, a;
  int password[5];
  char login[5][128];
  char log[128];
  int pass;
 
  strcpy( login[0], "user1" );
  password[0]=11111;
 
  strcpy( login[1], "user2" );
  password[1]=22222;
 
  strcpy( login[2], "user3" );
  password[2]=33333;
 
  strcpy( login[3], "user4" );
  password[3]=44444;
 
  strcpy( login[4], "admin" );
  password[4]=12345;
 
  cout << "\t LOGIN    :";
  cin >> log;
  cout << "\t PASSWORD :";
  cin >> pass;
 
  for( i = 0; i <= 5; i++)
  {
    m2:
    if ( !strcmp( login[i], log ) )
    {
      m1: if(password[i]==pass)
      {
        cout<<"\n\t---welcome to the system---";goto m3;
      }
      else
      {
        cout<<"\t --ERROR PASSWORD--\n";f++;
        if (f<3)
        {
          cout<<"\t PASSWORD: ";
          cin>>pass;
          goto m1;
        }
        else
        {
          cout<<"COMPLETION OF SESSION";
          goto m7;
        }
      }
    }
    else
    {
      cout<<"\t --ERROR LOGIN--\n"; p++;
      if (p<3)
      {
        cout<<"\t LOGIN: ";
        cin>>log;
        goto m2;
      }
      else
      {
        cout<<"\t --ERROR--\n"<<"\npopitka nesank. dostupa";}
      }
    }
    int j;
    m3:
    if (log=="admin")
    {
      cout<<"base of users:\n";
      for (j=1;j<5;j++)
      {
        cout<<"LOGIN:"<<login[j]<<"\n";
        cout<<"PASSWORD:"<<password[j]<<"\n";
      }
    }
  m7:
  cout<<"\t End.";
  getch();
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.09.2010, 17:10     cannot convert "char *" to "char"....
Еще ссылки по теме:
Ошибка "error C2446: :: нет преобразования "int" в "char *" C++
C++ C++ ошибка "Cannot convert 'char *' to char"
Ошибка при компиляции "Cannot convert `std::string' to `const char*" C++
Аргумент типа "unsigned char*" несовместим с параметром типа "const char*" C++
Работа с функциями, "Cannot convert 'char *' to 'int'" C++

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

Или воспользуйтесь поиском по форуму:
IchMors
97 / 93 / 4
Регистрация: 16.05.2010
Сообщений: 310
08.09.2010, 17:10     cannot convert "char *" to "char".... #15
это поможет вам в борьбе с непонятными строками
Вложения
Тип файла: pdf 8_C08.pdf (420.7 Кб, 72 просмотров)
Yandex
Объявления
08.09.2010, 17:10     cannot convert "char *" to "char"....
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru