Russian Qt Forum
Ноябрь 26, 2024, 16:46 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Char  (Прочитано 9383 раз)
Firefox
Гость
« : Ноябрь 30, 2009, 13:33 »

помогите в таком вопросе. есть массив
Код:
char mass[300]={1,2,3,4,56,74,23,'g',t'}....
в этом массиве вперемешку записаны должны быть буквы и цифры. не могу вывести в техtEdit правильно, если вывожу как int то букв нет, а если как QString то на месте цифр квадраты.
возможно мне надо заполнять весь массив цифрами(которые будут означать коды букв и цифр), а потом переводить всё в текст... как я поняла char это массив чисел от 0 до 255...
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Ноябрь 30, 2009, 13:54 »

Код:
QString s;
for (int i = 0; i < 200; ++i) {
  QChar c(mass[i]);
  if (c.isLetter()) s += c;
  else s += QString().setNum(mass[i]);
}
Записан
SASA
Гость
« Ответ #2 : Ноябрь 30, 2009, 16:26 »

Я бы использовал
Код:
QString::number(mass[i])
Записан
Firefox
Гость
« Ответ #3 : Ноябрь 30, 2009, 22:58 »

Спасибо попробую Веселый
Записан
Tonal
Гость
« Ответ #4 : Декабрь 02, 2009, 10:05 »

В этом массиве у тебя записаны только символы. char в С++ это тот же int, только маленький. Улыбающийся
А массив из символов или чисел в С++ не поддерживается.

В зависимости от того, зачем тебе это нужно можно придумать несколько вариантов решения. Улыбающийся
Записан
Firefox
Гость
« Ответ #5 : Декабрь 04, 2009, 16:57 »

массив именно такой поменять ни как.этот вопрос я реализовала всё выводиться правильно. массив может состоять как из чисел так и из букв причём 0 тоже может быть в массиве, но теперь проблема в другом. надо написать "пока не наступит конец массива".то есть например в массив записали 10 букв с цифрами вперемешку. а остальные 390 он дополняет сам нулями. и мне надо вывести из массива только те 10 букв/цифр. но я не знаю сколько их. если написать
Код:
while (mass[i]!='\0')
то если скажем будет в массиве"к2пе5рр0шк", то после 0 он ничего не выведет. как сделать так чтоб он выводил только то что мне надо?
Записан
BRE
Гость
« Ответ #6 : Декабрь 04, 2009, 17:03 »

массив именно такой поменять ни как.этот вопрос я реализовала всё выводиться правильно. массив может состоять как из чисел так и из букв причём 0 тоже может быть в массиве, но теперь проблема в другом. надо написать "пока не наступит конец массива".то есть например в массив записали 10 букв с цифрами вперемешку. а остальные 390 он дополняет сам нулями. и мне надо вывести из массива только те 10 букв/цифр. но я не знаю сколько их. если написать
Код:
while (mass[i]!='\0')
то если скажем будет в массиве"к2пе5рр0шк", то после 0 он ничего не выведет. как сделать так чтоб он выводил только то что мне надо?
Ну и храни отдельно в переменной количество значений.
Записан
Alp
Гость
« Ответ #7 : Декабрь 04, 2009, 20:39 »

Я вот не могу все же понять каким магическим образом выводится то одно то другое? То цифры то буквы? Например, 65 - это цифра 65 или символ 'A'?

Потом, что касаемо нуля - в конце массива СИМВОЛ '0' или символ с нулевым КОДОМ \x0? Если символ - проблемы нет, если код - то только хранить доп.переменной размер массива, C++ - это не питон.
Записан
Firefox
Гость
« Ответ #8 : Декабрь 05, 2009, 22:40 »

Дело в том что этот массив мне пересылают по сети уже в заполненном виде. поэтому я не знаю сколько элементов там заполнено.а мне надо эти элементы вывести на экран.
Записан
BRE
Гость
« Ответ #9 : Декабрь 05, 2009, 22:45 »

Дело в том что этот массив мне пересылают по сети уже в заполненном виде. поэтому я не знаю сколько элементов там заполнено.а мне надо эти элементы вывести на экран.
Ну тогда нужно использовать библиотеку libastral.
Записан
Alp
Гость
« Ответ #10 : Декабрь 06, 2009, 00:27 »

Дело в том что этот массив мне пересылают по сети уже в заполненном виде. поэтому я не знаю сколько элементов там заполнено.а мне надо эти элементы вывести на экран.
И более того, ты не знаешь что выводить первым - число или символ, если на первой позиции, например, стоит 65 или подобное? Задача несколько эээ... бредовая, в стиле "мне присылают что-нибудь и с чем-нибудь что-нибудь надо сделать".
Записан
spectre71
Гость
« Ответ #11 : Декабрь 06, 2009, 07:44 »

помогите в таком вопросе. есть массив
Код:
char mass[300]={1,2,3,4,56,74,23,'g',t'}....
в этом массиве вперемешку записаны должны быть буквы и цифры. не могу вывести в техtEdit правильно, если вывожу как int то букв нет, а если как QString то на месте цифр квадраты.
возможно мне надо заполнять весь массив цифрами(которые будут означать коды букв и цифр), а потом переводить всё в текст... как я поняла char это массив чисел от 0 до 255...
массив именно такой поменять ни как.этот вопрос я реализовала всё выводиться правильно. массив может состоять как из чисел так и из букв причём 0 тоже может быть в массиве, но теперь проблема в другом. надо написать "пока не наступит конец массива".то есть например в массив записали 10 букв с цифрами вперемешку. а остальные 390 он дополняет сам нулями. и мне надо вывести из массива только те 10 букв/цифр. но я не знаю сколько их. если написать
Код:
while (mass[i]!='\0')
то если скажем будет в массиве"к2пе5рр0шк", то после 0 он ничего не выведет. как сделать так чтоб он выводил только то что мне надо?

Превое что тебе необходимо сделать это описать задачу в нормальных терминах!!!
Не называй числа - цифрами, а символы - буквами.
Если мы говорим о
Код:
mass[i]
, то это i-й элемент имеющий определенное значение.

Теперь ответь на вопросы:
1) Массив всегда одного размера? Если массив одного размера, то его размер 300?
2) Массив всегда заполнен полностью или нет? Если нет, то каким образом определяется граница значимой части.
3) Как ты  интерпретируешь значения элементов массива?
 - значения соответствующие кодам букв латинского алфавита - как символы?
 - значения соответствующие кодам цифр - как символы?
 - остальное как числа?
 А могут несколько подряд идущих элементов массива интерпрретироваться как одно число или каждый элемент всегда рассматривается отдельно?
Опиши подробнее, что и как интерпретируется!
Записан
michael1960
Гость
« Ответ #12 : Декабрь 06, 2009, 09:35 »

По моему лучше всего проверять ACSII код символа. В смысле, допускаем что все что ты получаеш - символ, тогда проверка будет выглядеть так:
Код:

char s[300];

.

if((s[i] >= '0') && (s[i] <= '9'))
  это цифра
else
  буква.
Записан
Firefox
Гость
« Ответ #13 : Декабрь 07, 2009, 13:14 »

Всем спасибо. предложенное решение полностью соответствует тому что я хотела сделать
Код:

QString s;
for (int i = 0; i < 200; ++i) {
  QChar c(mass);
  if (c.isLetter()) s += c;
  else s += QString().setNum(mass);
}
полностью соответствует тому что я хотела сделать
Записан
SASA
Гость
« Ответ #14 : Декабрь 07, 2009, 19:30 »

На  C++ Вы выражаетесь понятней  Смеющийся
Но, по-моему, с ошибками...
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.255 секунд. Запросов: 22.