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

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

Войти
Регистрация
Восстановить пароль
 
Guneska
0 / 0 / 0
Регистрация: 05.12.2012
Сообщений: 28
#1

Указатели в строчном массиве - C++

16.01.2013, 23:23. Просмотров 310. Ответов 9
Метки нет (Все метки)

Помогите, пожалуйста с лабораторной. Ну никак мне эти указатели не влазят в голову , может с вашей подсказкой на примере своей лабораторной я смогу наконец-то понять принцип их использования.
Задача такая: используя динамическое выделение памяти создать программу, которая отсортировала бы строку, которая содержит цифры и буквы латинского алфавита (и строчные и прописные), в последовательности: сначала цифры, затем буквы, НЕ МЕНЯЯ их положения в строке. Например: введена строка - qwE25Rty88U, а в результате нужно получить: 2588qwERtyU.
Очень надеюсь на вашу помощь!
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2013, 23:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Указатели в строчном массиве (C++):

Функция для замены в строчном массиве одного символа на другой. - C++
Доброго времени суток, программисты! Возникла, значит, проблема: Написал функцию для замены в строчном массиве одного символа на другой....

Проверка на скобки в строчном калькуляторе - C++
Добрый день ! Нужна помощь, я в своём калькуляторе прописал многие проверки на ввод, но не могу справиться с таким примером: если человек...

Указатели в массиве - C++
В книжке нет описания к данному коду и мне немного не понятно в некоторых моментах: 1). while (*p) { (не понятно какое условие понимается...

Указатели в массиве на сортировку - C++
Доброго,времени,прошу помочь переделать данный код под указатели. #include <iostream> #include <ctime> #include...

Указатели в двумерном массиве - C++
Например есть массив int** mas=new int*; for(int i=0; i<=str;i++) mas=new int; for (int i=0; i<str; i++ ) for (...

Указатели в двумерном массиве - C++
Помогите пожайлуста!!! Как занулить главную диогональ, скока не пробовал, ни как не получается.... не могу найти ошибку :wall: Вот...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
17.01.2013, 01:40 #2
При чем тут динамическое выделение памяти?!

На, вот, собрал на коленке.
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
#include <iostream>
 
bool contains(char *string, char symbol) {
  while (*string != '\0') {
    if (*string++ == symbol) {
      return true;
    }
  }
  return false;
}
 
char *findFirstOf(char *string, char *symbols) {
  for (; *string != '\0'; ++string) {
    if (contains(symbols, *string)) {
      return string;
    }
  }
  return string;
}
 
char *findFirstNotOf(char *string, char *symbols) {
  for (; *string != '\0'; ++string) {
    if (!contains(symbols, *string)) {
      return string;
    }
  }
  return string;
}
 
int main()
{
  char string[] = "qwE25Rty88U";
  char digits[] = "0123456789";
 
  std::cout << string << std::endl;
 
  char *symbol = string;
  char *digit = string;
  do {
    symbol = findFirstNotOf(string, digits);
    digit = findFirstOf(symbol, digits);
 
    if (*digit != '\0' && *symbol != '\0') {
      char tmp = *digit;
      for (char *c = digit; c > symbol; --c) {
        *c = *(c - 1);
      }
      *symbol = tmp;
    }
  } while (*digit != '\0' && *symbol != '\0');
 
  std::cout << string << std::endl;
 
  std::cin.get();
  return 0;
}
Guneska
0 / 0 / 0
Регистрация: 05.12.2012
Сообщений: 28
17.01.2013, 21:34  [ТС] #3
lemegeton, Спасибо вам большое, но для меня то что Вы написали пока тёмный лес, да и преподаватель увидит что это не мой уровень, и заставит объяснять что и к чему. При чём работаем мы в Borland C++ 3.1 for Windows, DOS, год выпуска: 1991-1992. Вот код, который я смогла набрать, - элементарщина, вывод массива - получилось, попыталась разобраться с динамической памятью, и всё заглохло :(
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
 
void main()
{
int i,n;
char*x;
char s1[]={'1','2','3','4','5','6','7','8','9','0','q','w','e','r','t','y','u','i','o','p','a','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m'};
cout<<"Vvedite massiv: " << endl;
cin>>s1;
{
char *x=new char[n];
}
for(i=0; i<x; i++);
cout<<x;
getch();
}
Croessmah
Модератор
Эксперт CЭксперт С++
13134 / 7397 / 828
Регистрация: 27.09.2012
Сообщений: 18,232
Записей в блоге: 3
Завершенные тесты: 1
17.01.2013, 22:02 #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Это нужно?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <cstring>
 
int main(){
    char str[]="abc346dse8g9h1011";
    int size=strlen(str);
    char * dest=new char[size+1];
    dest[size]=0;
    int pos=0;
    for(int i=0;i<size;++i)
        if(isdigit(str[i]))
            dest[pos++]=str[i];
    for(int i=0;i<size;++i)
        if(isalpha(str[i]))
            dest[pos++]=str[i];
    std::cout<<"Source: "<<str<<"\n";
    std::cout<<"Rezult: "<<dest<<std::endl;
    return 0;
}
Название: Безымянный.jpg
Просмотров: 42

Размер: 12.7 Кб
проще, наверное, некуда
Guneska
0 / 0 / 0
Регистрация: 05.12.2012
Сообщений: 28
21.01.2013, 22:12  [ТС] #5
Croessmah, да, Вы правы, код такой, только символы нужно будет вводить с клавиатуры, а не выводить заранее вписанные. Сейчас бьюсь над этим, но увы, результатов пока ноль.
Greenli
7 / 7 / 1
Регистрация: 21.01.2013
Сообщений: 27
21.01.2013, 22:18 #6
Guneska, используй getline для заполнения массива типа char.


можно так

C++
1
2
3
    
cin.sync();
getline(cin,str);
Guneska
0 / 0 / 0
Регистрация: 05.12.2012
Сообщений: 28
21.01.2013, 22:45  [ТС] #7
Greenli, опа, с таким ещё не сталкивалась. А куда эти операторы (или функции; не пинайте сильно, изучаю С++ на начальном этапе) вставлять? Подскажите, если не сложно, а то голова уже квадратная, если снова полезу в гугл искать где cin.sync(); и getline(cin,str); применяются и зачем, то боюсь застряну надолго
Croessmah
Модератор
Эксперт CЭксперт С++
13134 / 7397 / 828
Регистрация: 27.09.2012
Сообщений: 18,232
Записей в блоге: 3
Завершенные тесты: 1
21.01.2013, 23:05 #8

Не по теме:

Цитата Сообщение от Greenli Посмотреть сообщение
cin.sync();
Это зачем?



C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <cstring>
#include <cctype>
 
int main(){
    char str[1024];
     std::cin>>str;//std::cin.getline(str,1024);     
    int size=strlen(str);
    char * dest=new char[size+1];
    dest[size]=0;
    int pos=0;
    for(int i=0;i<size;++i)
        if(isdigit(str[i]))
            dest[pos++]=str[i];
    for(int i=0;i<size;++i)
        if(isalpha(str[i]))
            dest[pos++]=str[i];
    std::cout<<"Source: "<<str<<"\n";
    std::cout<<"Rezult: "<<dest<<std::endl;
    return 0;
}
Guneska
0 / 0 / 0
Регистрация: 05.12.2012
Сообщений: 28
21.01.2013, 23:11  [ТС] #9
Croessmah, спасибо, я так и сделала, после char str добавила cin>>str; и всё получилось. Спасибо большое!
Greenli
7 / 7 / 1
Регистрация: 21.01.2013
Сообщений: 27
21.01.2013, 23:13 #10
Опередили =)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.01.2013, 23:13
Привет! Вот еще темы с ответами:

Указатели на объекты в массиве - C++
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; /////////////////////////////////////////////////////////// class person...

Изменить порядок следования элементов в массиве используя указатели - C++
Вот что есть, почему не работает правильно не понимаю, подскажите плиз) # include &lt;iostream&gt; using namespace std; //7.Пользуясь ...

Найти сумму положительных элементов в массиве через указатели - C++
Найти сумму положительных элементов в массиве через указатели. Ввод массива можно осуществить любым способом.

Указатели и указатели на указатели, а также типы данных - C++
Недавно начал изучать Си, перешел с Delphi. Много непонятного и пока процесс идет медленно. Накачал литературы, буду изучать) Щас...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
21.01.2013, 23:13
Ответ Создать тему
Опции темы

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