6 / 6 / 3
Регистрация: 03.07.2010
Сообщений: 222
1

Помогите переписать программу без использования индексации

01.11.2013, 01:44. Показов 783. Ответов 10
Метки нет (Все метки)

Всем добрый вечер. помогите записать программу без: [i]
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
#include <iostream>
#include <string>
using std::cout;
using std::cin;
 
const int N=50;
 
char* mystrlwr(char* str)
{
int i=0;
while (str[i])
{
if (str[i]>='A' && str[i]|<='Z')
 
str[i]+=32;
i++;
}
return str;
}
int main()
{
char str1[N];
cout<<"Input string: ";
cin.getline(str1, N);
 
cout<<"my strlwr: "<<mystrlwr(str1)<<'\n';
system("pause");
return 0;
}
Имеется виду, вот это: str[i]
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.11.2013, 01:44
Ответы с готовыми решениями:

Переписать программу без использования указателей
Всем привет. Есть программа с указателями , как сделать её без указателей? ...

Графы, переписать программу без использования iterator-ов
Для неориентированного графа сохранить его в виде списка смежности с возможностью добавления и...

Работа со строками. Переписать программу без использования библиотеки <sstream>
Добрый день! Помогите пожалуйста преобразовать программу, которая заменяет выбранное вами слово на...

Переписать программу без использования if
Вывод должен быть тот же, только сама программа должна быть без if. var i,j,y,x,f:integer;...

10
Master of Orion
Эксперт .NET
6094 / 4950 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
01.11.2013, 02:18 2
сержи,
C++
1
2
3
4
5
6
7
8
9
void mystrlwr(char* str)
{
   char* c = str;
   while (*c)
   {
      if (*c>='A' && *c<='Z')
          *c +=32;
   }
}
это чтоль?
0
419 / 418 / 167
Регистрация: 28.11.2010
Сообщений: 1,183
01.11.2013, 02:22 3
C++
1
2
3
4
5
6
7
8
void mystrlwr(char *str) {
    while (*str) {
        if (*str >= 'A' && *str <= 'Z'){
                *str += 32;
        }
        str++;
    }
}
0
5494 / 4889 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
01.11.2013, 02:24 4
Цитата Сообщение от Psilon Посмотреть сообщение
это чтоль?
А выход из цикла?
0
Master of Orion
Эксперт .NET
6094 / 4950 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
01.11.2013, 09:10 5
alsav22, склероз...
0
Модератор
Эксперт по электронике
8784 / 6570 / 891
Регистрация: 14.02.2011
Сообщений: 23,076
01.11.2013, 09:26 6
Цитата Сообщение от сержи Посмотреть сообщение
char* mystrlwr(char* str)
{
int i=0;
while (str[i])
{
if (str[i]>='A' && str[i]|<='Z')
str[i]+=32;
i++;
}
это перевод больших букв в маленькие
C++
1
2
3
4
5
6
7
8
char* mystrlwr(char* str)
{
while (*str)
 {
  *str |=0x20;
   str++;
  }
}
1
Master of Orion
Эксперт .NET
6094 / 4950 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
01.11.2013, 09:29 7
Цитата Сообщение от ValeryS Посмотреть сообщение
это перевод больших букв в маленькие
Это как раз понятно. А вот способ интересный, надо осмыслить...
0
Модератор
Эксперт по электронике
8784 / 6570 / 891
Регистрация: 14.02.2011
Сообщений: 23,076
01.11.2013, 09:43 8
Цитата Сообщение от Psilon Посмотреть сообщение
А вот способ интересный, надо осмыслить...
А че его осмысливать открой таблицу ASCII и увидишь что большие от малых отличаются 6 битом
A-0x41 a-0x61
в результате что большие попадутся что малые все едино
ограничение нужно сделать чтобы непечатные символы в цифры не превратились(но это уже пускай ТС думает)
итого из больших в малые |=0x20
из малых в большие &=~0x20
большие в малые и наоборот ^=0x20
2
Master of Orion
Эксперт .NET
6094 / 4950 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
01.11.2013, 09:48 9
ValeryS, да я уже понял. Просто без магических констант это выглядело бы намного лучше:
C++
1
2
3
4
5
void mystrlwr(char* str)
{
    for (const char charDif = 'A' ^ 'a'; *str; str++)
        *str |= charDif;
}
0
Модератор
Эксперт по электронике
8784 / 6570 / 891
Регистрация: 14.02.2011
Сообщений: 23,076
01.11.2013, 09:49 10
Цитата Сообщение от Psilon Посмотреть сообщение
Просто без магических констант это выглядело бы намного лучше:
может быть
просто мне она (0х20)уже в подкорку вбилась
а в это
Цитата Сообщение от Psilon Посмотреть сообщение
'A' ^ 'a'
я еще вникать буду
0
Master of Orion
Эксперт .NET
6094 / 4950 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
01.11.2013, 09:52 11
ValeryS, ну вот не всем вбилась
например я вот на управляемых языках о таком бито.... давно уже не помню, важнее методика...
Так что объяснение, что это за 'A' ^ 'a' как раз-таки понятно, а в само число я буду вникать...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.11.2013, 09:52
Помогаю со студенческими работами здесь

Переписать программу без использования StringBuilder
Console.WriteLine(&quot;Введите символ&quot;); char c = Convert.ToChar(Console.ReadLine()); ...

Переписать программу без использования циклов
Как переписать эту программу, но без использования циклов? Язык программирования Си!!!! Жду...

Функция Reverse(s) без использования библиотечных функций и индексации
Итак, есть задачка: Написать функцию Reverse(s), которая будет менять порядок элементов в строке s...

Переписать код без использования GOTO
Ребята, помогите пожалуйста переписать текст программы, чтоб в ней не использовать GOTO!!! ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru