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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.86
doommer
1 / 1 / 0
Регистрация: 17.08.2010
Сообщений: 22
#1

Реверсированный список - C++

20.08.2010, 13:12. Просмотров 1771. Ответов 23
Метки нет (Все метки)

Ребятки, хелпаните! Через указатели желательно, надо не по простому варианту) Написать списочек, в который мы вводим данные, а на выходе у нас введенные данные, но в обратном порядке.. Я как понял надо еще один список создать для данных, которые выходять в обратном порядке?!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.08.2010, 13:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Реверсированный список (C++):

Создать список L3 из элементов, входящих и в список L1 и в список L2 - C++
создать список л3 из элементов входящих и в список л1 и в список л2

3 класса: список, стек(как список), очередь(как список) - C++
препод дал задание: написать 3 класса (список, стек, очередь), методы: вывод, добавление, удаление. Использовать при обращении указатель...

Список: связный список, в котором информация о книгах сортируется по убыванию стоимости. - C++
Друзья помогите с реализацией списка. Нужно запрограммировать связный список, в котором информация о книгах сортируется по убыванию...

list. Cоздать список из результатов(с массивами), а потом просмотреть весь список - C++
Подскажите пожалуйста как мне создать список из моих результатов(с массивами) а потом просмотреть весь список, вот код который имеется ...

Сформировать список из 10 работников, используя динамическую структуру данных двусвязный список - C++
спасайте Сформировать список из 10 работников, используя динамическую структуру данных двусвязный список. Информация о работнике...

Вводится число N. Создать список его делителей и вывести список на экран - C++
#include<iostream> #include<stdio.h> #include<malloc.h> #include<string.h> #include<stdlib.h> using namespace std; struct...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
doommer
1 / 1 / 0
Регистрация: 17.08.2010
Сообщений: 22
24.08.2010, 16:11  [ТС] #16
Ааааа... Т.е. если нам например нужно передать функции строку и символ, а она должна вернуть есть ли такой символ или нет... то тут использовать итеративную?! Я просто немного не разобрался сам, что от меня собственно хотят) особенно с символом)
easybudda
Модератор
Эксперт CЭксперт С++
9530 / 5523 / 932
Регистрация: 25.07.2009
Сообщений: 10,607
24.08.2010, 16:32 #17
Цитата Сообщение от doommer Посмотреть сообщение
Я просто немного не разобрался сам, что от меня собственно хотят
Вы уж определитесь как-нибудь, а то я Вам так всю стандартную библиотеку в рекурсивной версии перепишу...
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
 
char * rec_strchr(const char * s, char c){
    return ( *s == '\0' ) ? NULL : ( *s == c ) ? (char*)s : rec_strchr(++s, c);
}
 
int main(void){
    char * text = "This is a good day to die.";
    char c, * found;
 
    printf("String: %s\n", text);
    printf("Character to find in: ");
    scanf("%c", &c);
    if ( found = rec_strchr(text, c) )
        printf("Yes, it's a %d(th) from begin.\n", found - text + 1);
    else
        printf("Character '%c' not found.\n", c);
 
    return 0;
}
doommer
1 / 1 / 0
Регистрация: 17.08.2010
Сообщений: 22
25.08.2010, 15:05  [ТС] #18
Полностью с Вами согласен! Надо взяться за голову)

Добавлено через 21 час 52 минуты
Что-то меня обругали за эти программки)

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
#include <stdio.h>
 
void rec_reverse(const char * s){
    if ( ! *s )
        return;
    rec_reverse(s + 1);
    putchar(*s);
}
 
void it_reverse(const char * s){
    const char * p;
    for ( p = s; *p; ++p )
        ;
    while ( p > s )
        putchar(*--p);
}
 
int main(void){
    char buf[BUFSIZ];
 
    printf("String: ");
    scanf("%[^\n]%*c", buf);
    printf("Recursive: ");
    rec_reverse(buf);
    printf("\nIterative: ");
    it_reverse(buf);
    printf("\n");
 
    return 0;
}
Сказали, что не так понял задание( "Надо было написать функцию, которой дают строку, а она ее переворачивает. Тут такой функции нет. Тут есть программа, которая что-то читает и пишет."
Budda подскажите,плз, как исправить?
Вторую программку переделал уже, а вот с этой какая-то морока.
easybudda
Модератор
Эксперт CЭксперт С++
9530 / 5523 / 932
Регистрация: 25.07.2009
Сообщений: 10,607
25.08.2010, 17:12 #19
Цитата Сообщение от doommer Посмотреть сообщение
Надо было написать функцию, которой дают строку, а она ее переворачивает.
Вот нет бы сразу так
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
#include <stdio.h>
 
char * strreverse(char * s){
    char * pHead, * pTail, c;
 
    for ( pTail = s; *pTail; ++pTail )
        ;
    for ( --pTail, pHead = s; pHead < pTail; ++pHead, --pTail ){
        c = *pHead;
        *pHead = *pTail;
        *pTail = c;
    }
 
    return s;
}
 
int main(void){
    char buf[BUFSIZ];
 
    printf("String:  ");
    scanf("%[^\n]%*c", buf);
    printf("Reverse: %s\n", strreverse(buf));
 
    return 0;
}
Цитата Сообщение от doommer Посмотреть сообщение
Написать списочек, в который мы вводим данные, а на выходе у нас введенные данные, но в обратном порядке..
На будующее - списком в С обычно называют набор из однотипных данных (структур), последовательно связанных между собой указателями.
doommer
1 / 1 / 0
Регистрация: 17.08.2010
Сообщений: 22
29.08.2010, 16:21  [ТС] #20
Здравствуйте, Будда)

Я нашел мааааленькую ошибочку)) В этой программульке функция меняет данную строку, должна ее не трогать, а просто выводить новую строку...
Перепишите пожалуйста)
easybudda
Модератор
Эксперт CЭксперт С++
9530 / 5523 / 932
Регистрация: 25.07.2009
Сообщений: 10,607
29.08.2010, 16:40 #21
Цитата Сообщение от doommer Посмотреть сообщение
Я нашел мааааленькую ошибочку)) В этой программульке функция меняет данную строку, должна ее не трогать, а просто выводить новую строку...
Это не "ошибочка", это в очередной раз с условием не задалось. Ну создайте дополнительный буфер, копируйте в него прочитанную строку и передавайте его в функцию...
doommer
1 / 1 / 0
Регистрация: 17.08.2010
Сообщений: 22
30.08.2010, 11:46  [ТС] #22
Я чуть чуть переписал, чтоб цикл for не перегружать, но так и не понял, что сделать со строкой... правда и сие чудо не работает( Тоже не могу ошибку найти! Проверьте плиз!

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 <stdio.h>
 
char *string_rev(char *s)
{
char *pTail = s;
while (*pTail != '\0'); 
    {
    ++pTail;
    }
 
pTail = pTail-1;
for (char *pHead = s; pHead < pTail; pHead++, pTail--) 
   {
    char c = *pHead;
    *pHead = *pTail;
    *pTail = c;
   }
 return s;
}
int main()
{
    char buf[BUFSIZ];
 
    printf("String:  ");
    scanf("%[^\n]%*c", buf);
    printf("Reverse String : %s\n", string_rev(buf));
 
    return 0;
}
Добавлено через 16 часов 36 минут
I need help ppl, please!
easybudda
Модератор
Эксперт CЭксперт С++
9530 / 5523 / 932
Регистрация: 25.07.2009
Сообщений: 10,607
31.08.2010, 11:53 #23
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
#include <stdio.h>
 
char * strreverse(const char * inStr, char * outStr, int size){
    const char * pIn;
    char * pOut;
    
    for ( pIn = inStr; *pIn; ++pIn)
        ;
    
    for ( pOut = outStr; pIn > inStr && size > 1; --size )
        *pOut++ = *--pIn;
    *pOut = '\0';
    
    return outStr;
}
 
int main(void){
    char inBuf[BUFSIZ], outBuf[BUFSIZ];
    
    printf("String: ");
    scanf("%[^\n]%*c", inBuf);
    printf("Result: %s\n", strreverse(inBuf, outBuf, BUFSIZ));
    
    return 0;
}

Не по теме:

Интересно, что на этот раз не так окажется...

doommer
1 / 1 / 0
Регистрация: 17.08.2010
Сообщений: 22
31.08.2010, 12:38  [ТС] #24
Спасибо, easy! Вы реально мне с этим очень помогли! Можно закрывать тему))) Больше ничего не буду писать, ибо разобрался)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.08.2010, 12:38
Привет! Вот еще темы с ответами:

Сформировать список из 10 книг, используя динамическую структуру данных односвязный список - C++
друзья спасайте Сформировать список из 10 книг, используя динамическую структуру данных односвязный список С++

Упорядочить список студентов по среднему баллу и вывести весь список - C++
форумчане,выдает ошибку :( столько маюсь с задачей уже #include &lt;vcl.h&gt; #include &lt;stdio.h&gt; #pragma hdrstop /*Упорядочить список...

Описать функцию, которая будет проверять входит ли список l1 в список l2 - C++
Здравствуйте, нужно Описать функцию, которая будет проверять входит ли список l1 в список l2. Ни как не могу понять как это сделать. ...

Создать список, после каждого отрицательного числа вставить в список 0 - C++
задание такое, создать список, после каждого отрицательного числа вставить в список 0. я кое-что тут пытался делать: #include...


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

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

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