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

записать слова ограниченой длины в массив и выписать в обратном порядке. - C++

Войти
Регистрация
Восстановить пароль
 
N1K003
3 / 3 / 2
Регистрация: 14.05.2011
Сообщений: 55
14.05.2011, 20:12     записать слова ограниченой длины в массив и выписать в обратном порядке. #1
Всем добрый вечер. Столкнулся сейчас с проблемой написания динамического двумерного массива.

Цель: записать слова ограниченой длины в массив и выписать в обратном порядке.
*изначально неизвестно, сколько будет слов.
Задача на Си.

Думал сделать что-то такое, как mas[i][255], но не умею работать с двумерными масивами, а тем более присваивать им память. Пытался сам разобраться, но никак не вышло.

Может ли кто-то помочь?
Зарание благодарю.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.05.2011, 20:12     записать слова ограниченой длины в массив и выписать в обратном порядке.
Посмотрите здесь:

C++ Слова в обратном порядке (!не палиндром!)
Вывести слова в обратном порядке C++
C++ Отсортировать слова в обратном порядке
Все буквы каждого слова в предложении записать в обратном порядке и распечатать получившееся предложение C++
Записать все буквы данного слова в обратном порядке C++
Вывести слова в обратном порядке C++
Дан массив целых чисел. Записать его элементы в обратном порядке. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nursik77
 Аватар для Nursik77
273 / 233 / 21
Регистрация: 05.04.2011
Сообщений: 645
14.05.2011, 20:14     записать слова ограниченой длины в массив и выписать в обратном порядке. #2
А зачем делать это через массивы? и зачем двумерные?
N1K003
3 / 3 / 2
Регистрация: 14.05.2011
Сообщений: 55
14.05.2011, 20:16  [ТС]     записать слова ограниченой длины в массив и выписать в обратном порядке. #3
А каким способом? Суть в том, что нужно использовать динамическое программирование.
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
14.05.2011, 20:16     записать слова ограниченой длины в массив и выписать в обратном порядке. #4
Присваивать им что?
Nursik77
 Аватар для Nursik77
273 / 233 / 21
Регистрация: 05.04.2011
Сообщений: 645
14.05.2011, 20:20     записать слова ограниченой длины в массив и выписать в обратном порядке. #5
Можно через строки:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{
char str[800];
int i;
clrscr();
puts("Vvedite stroku: ");
gets(str);
puts(strrev(str));
getch();
}
asics
Freelance
Эксперт C++
 Аватар для asics
2841 / 1778 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
14.05.2011, 20:20     записать слова ограниченой длины в массив и выписать в обратном порядке. #6
Цитата Сообщение от N1K003 Посмотреть сообщение
Суть в том, что нужно использовать динамическое программирование.
Зачем для столь тривиальной задачи использовать ДП ?
N1K003
3 / 3 / 2
Регистрация: 14.05.2011
Сообщений: 55
14.05.2011, 22:35  [ТС]     записать слова ограниченой длины в массив и выписать в обратном порядке. #7
Цитата Сообщение от asics Посмотреть сообщение
Зачем для столь тривиальной задачи использовать ДП ?
Это Вы не у меня, а у препода спрашивайте

Nursik77, спасибо, но немножко не то... Но благодаря Вашей подсказке понял, что искать)


Посидел еще, разобрался со строками)
Можете найти ошибку, плз? Записывает первые 5 слов, после чего выписывает 5 раз последнее.
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
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
        char str[255];
        int *mas, i, j=0;
 
        mas=(int*)malloc(1);
 
        for(i=1;;i++)
        {
                if(str[j]=='s' || str[j+1]=='t' || str[j+2]=='o' || str[j+3]=='p')
/*stop if string is "stop"*/
                {
                        break;
                }
                else
                {
                        printf("Enter word #%d: ", i);
                        gets(str);
                        mas=(int*) realloc (mas, i+1 * sizeof(int));
                }
 
 
        }
 
        for(i;i>=1;i--)
        {
                puts(str);
        }
 
 
free(mas);
return 0;
}
Заранее спасибо
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7955 / 4717 / 318
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
15.05.2011, 01:42     записать слова ограниченой длины в массив и выписать в обратном порядке. #8
N1K003, Не разобрались. Нифига вы не делаете в программе. Каждый раз при gets в строку вводится новое значение и никуда не записывается. В итоге в последнем цикле получается 5 раз последнее слово.
N1K003
3 / 3 / 2
Регистрация: 14.05.2011
Сообщений: 55
15.05.2011, 17:26  [ТС]     записать слова ограниченой длины в массив и выписать в обратном порядке. #9
Да, понял уже, правда после того, как запостил тут; А отредактировать пост не смог.
Вот очередная попытка, теперь не могу придумать, как остановить ввод
Можете посмотреть плз и подсказть?

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 <stdio.h>
#include <stdlib.h>
 
int main()
{
        char **mas;
        int i=0, j=0, t=0;
        int *ukaz;
        
        ukaz=(int*)malloc((t+1)*sizeof(int));
        mas=(char**)malloc((j+1) * sizeof(char*));
        mas[j]=(char*)malloc(255*sizeof(char));
        
        while(mas[i][j]!='s' && mas[i][j+1]!='t' && mas[i][j+2]!='o' && mas[i][j+3]!='p')
        {
            for(i;;i++)
            {
                while(mas[i][j]!='\n')
                {
                    for(j=0;;j++)
                    {
                        scanf("%c", &mas[i][j]);
                    }
                }
                
                for(t;;t++)
                {
                    ukaz[t]=j;
                    ukaz=(int*)realloc(ukaz, (t+1)*sizeof(int));
                }
                
                mas=(char**) realloc(mas, (j+1) * sizeof(char*));
            
            }
        }
 
        printf("\n");
        
        for(i; i>=0; i--)
        {
            for(t; t>=0; t--)
            {
                j=ukaz[t];
            }
            for(j; j>=0; j--)
            {
                printf("%c", mas[i][j]);
            }
            printf("\n");
        }
 
printf("\n\n\t\tEND\n");        
        
free(mas);
return 0;
}
Добавлено через 14 часов 56 минут
Попробовал еще сделать с помощью брейка, но не могу разобраться, где ставить. Подкажите кто-то, плиз
Может есть еще какие-то способы, как остановить цикл?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2011, 22:06     записать слова ограниченой длины в массив и выписать в обратном порядке.
Еще ссылки по теме:

Как записать элементы матрицы в обратном порядке C++ C++
C++ На входе строка любой длины, на выходе получить строку в обратном порядке
Вывести слова в обратном порядке C++
C++ Дана строка символов до точки. Записать слова этой строки в обратном порядке
C++ Записать в предложении символы длинного слова (всех длинных, если их несколько) в обратном порядке

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

Или воспользуйтесь поиском по форуму:
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
15.05.2011, 22:06     записать слова ограниченой длины в массив и выписать в обратном порядке. #10
break нужно ставить в том месте, где хотите выйти из цикла. Если циклы вложенные, то выход будет осуществлен только из самого "глубокого".
Yandex
Объявления
15.05.2011, 22:06     записать слова ограниченой длины в массив и выписать в обратном порядке.
Ответ Создать тему
Опции темы

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