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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 5.00
Юляшка
3 / 3 / 1
Регистрация: 14.12.2008
Сообщений: 30
#1

Ссылочные типы.Списки(работа с указателями) - C++

14.12.2008, 18:58. Просмотров 1492. Ответов 4
Метки нет (Все метки)

Как эта задача записывается на С++?(условие написано на Pascal)
Одно из возможных представлений длинного текста-это разделить его на участки(строки) равной длины и создать массив ссылок на эти строки:
const d=...(длина строки)
n=...(макс число строк)
type строка =packed array[1..d] of char;
ссылка=*строка(это указатель)
текст=array[1..n] of ссылка;
Используя данное представление текста,описать:
1)процедуру перестановка (Т, i, j),меняющую местами i-ую j-ую строки текста Т

2)процедуру удалить(Т, i),удаляющую i-ую строку из текста Т
//неужели я не дождусь помощи?=(
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2008, 18:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ссылочные типы.Списки(работа с указателями) (C++):

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

Работа с указателями - C++
Помогите пожалуйста объяснить, не понимаю почему число присваемое через указатель *А в кавычках, и равны ли *А и просто А??? char *A =...

Работа с указателями - C++
Написать программу, в которой выполнить следующие действия: 1) Описать указатели на все известные типы данных; 2. Выполнить для каждого...

работа с указателями - C++
Вспоминаю с++ и в связи с этим возникло несколько вопросов. 1) если сделать так : myobj *obj = new myobj(); то потом можно...

Работа с указателями - C++
Подскажите пожалуйста, зачем написано * Rad_to_deg void show_polar (const polar * pda) { using namespace std; const...

Работа с указателями - C++
Написать программу работы с указателями. LONG *p1; ULONG x = 5; LONG y = -1; LONG *p2 = p1 + 50; p2 = p2 + x * y; *p2 = 1; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Юляшка
3 / 3 / 1
Регистрация: 14.12.2008
Сообщений: 30
15.12.2008, 21:24  [ТС] #2
задача 1,готова!!!
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
#include <iostream>
using namespace std;
int main()
{
const int maxLength=20;
const int Num_of_string=4;
char* Str[Num_of_string];
      for (int i=0;i<Num_of_string;i++)
cin.getline(*(Str[i][maxLength]));
int i,j;
cout<<"Input numbers from 0 to 4"<<endl;
cin>>i>>j;
      for (int k=0;k<maxLength;k++)
{
char tmp=*(Str[i][k]);
*(Str[i][k])=*(Str[j][k]);
*(Str[j][k])=tmp;
}
for (int v=0,v<Num_of_string;v++)
{
for (int w=0,w<maxLength;w++)
 
cout<<*(Str[v][w]);
 
}
return 0;
}
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
15.12.2008, 22:48 #3
Код
    for (int k = 0; k < maxLength; k++) {
        char tmp = *(Str[i][k]);
        *(Str[i][k]) = *(Str[j][k]);
        *(Str[j][k]) = tmp;
    }
    for (int v = 0; v < Num_of_string; v++)
        for (int w = 0; w < maxLength; w++)
            cout<<*(Str[v][w]);
у тебя там ошибки (запятые в циклах вместо точек с запятой)
я по поводу реализации алгоритма, твой вариант в определённой строке через определённую позицию символа прогоняет все символы из этой строки

на самом деле там (если твой способ с указателями) нужно строки сохранять в память, а потом указатели на них менять местами в массиве указателей
либо (что медленнее первого варианта) сохранять строки в массив строк, а потом в цикле через strcpy и tmp строку менять строки местами методом полного их копирования
первый вариант более быстрый и сложный
второй более медленный и простой
Юляшка
3 / 3 / 1
Регистрация: 14.12.2008
Сообщений: 30
15.12.2008, 22:58  [ТС] #4
Да,я когда печатала ошиблась!

Добавлено через 6 минут 19 секунд
Цитата Сообщение от Юляшка Посмотреть сообщение
cin.getline(*(Str[i][maxLength]));
То есть здесь нам указатель не нужен?
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
16.12.2008, 12:30 #5
это массив указателей
Код
    char *Str[Num_of_string];
для такой штуки надо выделять память для каждой строки и полученный указатель записывать в этот массив указателей на строки

cin.getline() видимо заполняет символьный массив (как раз getline'у надо дать указатель на выделенную память), лучше конечно getline'ом писать в промежуточный символьный массив, а его дублировать в память и указатель на эту память помещать в массив указателей (это для того чтобы можно было потом сортировать строки менять их местами и тд)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.12.2008, 12:30
Привет! Вот еще темы с ответами:

Работа с указателями - C++
1. Написать функцию, принимающую в качестве параметра указатель на первый символ строки и возвращающую адрес первого символа этой же...

работа с указателями - C++
Как ПРАВИЛЬНО передать в функцию, массив, используя адресацию? Программа находит в массиве слово и перед ним вставляет какое то слово, то...

Работа с указателями - C++
Нужно чтобы при каждом попадании &quot;1&quot;, в введенной строке выводилось сообщение на экран. Запускается без ошибок, но после ввода строки...

работа с указателями - C++
#include &lt;iostream&gt; using namespace std; int main() { char *res=&quot;&quot;; res=&quot;1&quot;; res=&quot;2&quot;; ...


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

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

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