Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемма с вводом переменной типа char (С++) 
V
    Опции темы
Alex103
Дата 3.6.2009, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 5.1.2005
Где: Украина, г. Харьк ов

Репутация: нет
Всего: нет



Добрый день уважаемые программисты. Подскажите пожалуйста почему программа выдает ошибку.

Вот код:
Код

#include <math.h>
#include <string.h>
#include <iostream.h>
#define l 2

int main () {
int b,i=0,j,temp=0,n=0;
char* mas_words[100];
char* buf="";
int mas_num[100];
int mas_words_repeat[100]={0};
char str[100] ="My name is vova";
cout << "Enter the string:";
/*cin >> str;*/
  char * pch;
  cout << "Start string: \n\n" << str <<"\n\n";
  pch = strtok (str," ,.-()");
  while (pch != NULL)
  {
    mas_words[i]=pch;
    mas_num[i]=strlen(pch);
    pch = strtok (NULL, " ,.-()");
    i++;
    n++;
  }
  for(j=0;j<n;j++){
    for(i=0;i<n;i++){
     if(mas_num[i+1]>mas_num[i]){
        temp=mas_num[i];
        mas_num[i]=mas_num[i+1];
        mas_num[i+1]=temp;
        buf=mas_words[i];
        mas_words[i]=mas_words[i+1];
        mas_words[i+1]=buf;
     }
    }
   }
  for(i=1;i<n;i++){
        for(j=1;j<n;j++){
                if(strcmp(mas_words[i],mas_words[j])==0){
                        mas_words_repeat[i]+=1;
                }
        }
  }
  for(i=1;i<n;i++){
        for(j=1;j<n;j++){
                  if(strcmp(mas_words[i],mas_words[j])==0 && i!=j){
                        mas_words[i]="0";
                }
        }
  }
  cout << "Words:        Counts:     Repeats:\n";
  for(i=1;i<=l;i++){
  if(strcmp(mas_words[i],"0")!=0){
     cout << mas_words[i] << "       ";
     cout << mas_num[i] << "             ";
     cout << mas_words_repeat[i] << "";
     cout << "\n";
     }
  }
  scanf("%d",&b);
}

Если так то все работает, но если заменить:
Код

char str[100] ="";
cout << "Enter the string:";
cin >> str;

выдает ошибки.

Задача состоит в том чтобы переменную str не описывать а вводить с клавиатуры.



--------------------
Мой адресс не дом и не улица, мой адресс WWW
PM MAIL WWW ICQ YIM   Вверх
mrbrooks
Дата 3.6.2009, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 19
Всего: 306



strcpy()
 
а вообще юзай камрад std::string  smile 

Это сообщение отредактировал(а) mrbrooks - 3.6.2009, 13:13
PM MAIL   Вверх
Alex103
Дата 3.6.2009, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 5.1.2005
Где: Украина, г. Харьк ов

Репутация: нет
Всего: нет



Т.е. ввести дополнительную переменную такого же типа как str, считать ее и скопировать в str??




--------------------
Мой адресс не дом и не улица, мой адресс WWW
PM MAIL WWW ICQ YIM   Вверх
mrbrooks
Дата 3.6.2009, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 19
Всего: 306



Цитата(Alex103 @  3.6.2009,  13:12 Найти цитируемый пост)
Т.е. ввести дополнительную переменную такого же типа как str, считать ее и скопировать в str??

ну типа того.

можно и так:
Код

char str[100];
std::cin.getline(str,99);
std::cout << str << std::endl;

PM MAIL   Вверх
azesmcar
Дата 3.6.2009, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Alex103

Где выдает ошибку? Какую ошибку?

Цитата(Alex103 @  3.6.2009,  12:55 Найти цитируемый пост)
Задача состоит в том чтобы переменную str не описывать а вводить с клавиатуры.

Код

std::string str;
getline(std::cin, str);


Добавлено через 1 минуту и 19 секунд
код из моих ночных кошмаров smile 
ну зачем мешать потоки и scanf? если пишешь на С++ - пиши на нем.

PM   Вверх
Alex103
Дата 3.6.2009, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 5.1.2005
Где: Украина, г. Харьк ов

Репутация: нет
Всего: нет



А можно записать в похожем на мой синтаксис что-то типа в стиле компилятора Borland C++ 3.11, или для старых версий такой ситаксис пойдет??



--------------------
Мой адресс не дом и не улица, мой адресс WWW
PM MAIL WWW ICQ YIM   Вверх
azesmcar
Дата 3.6.2009, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(Alex103 @  3.6.2009,  13:35 Найти цитируемый пост)
А можно записать в похожем на мой синтаксис что-то типа в стиле компилятора Borland C++ 3.11, или для старых версий такой ситаксис пойдет??

 smile я его в последний раз 10 лет назад видел. Это на С++, учитывая что Borland C++ имеет к С++ косвенное отношение - может и не сработать. Так попробуй
Код

string str;
getline(cin, str);

и
#include <iostream.h>

Это сообщение отредактировал(а) azesmcar - 3.6.2009, 13:38
PM   Вверх
Alex103
Дата 3.6.2009, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 5.1.2005
Где: Украина, г. Харьк ов

Репутация: нет
Всего: нет



Не хочет работать.


--------------------
Мой адресс не дом и не улица, мой адресс WWW
PM MAIL WWW ICQ YIM   Вверх
azesmcar
Дата 3.6.2009, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(Alex103 @  3.6.2009,  13:41 Найти цитируемый пост)
Не хочет работать. 

не очень то информативно.
PM   Вверх
math64
Дата 3.6.2009, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 12
Всего: 72



В BC3.1 класса string нет, есть в BC4.5:
Код

char str[80];
cin.getline(str,79);

PM   Вверх
mrbrooks
Дата 3.6.2009, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 19
Всего: 306



Интересно - но замечено - участники повторяют друг друга по несколько раз в одном посте. Это типа фича Винграда?  smile 
PM MAIL   Вверх
Alex103
Дата 3.6.2009, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 5.1.2005
Где: Украина, г. Харьк ов

Репутация: нет
Всего: нет



Спасибо всем, заработал вариант:
Код

char str[80];
cin.getline(str,79);



--------------------
Мой адресс не дом и не улица, мой адресс WWW
PM MAIL WWW ICQ YIM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1396 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.