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

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

Войти
Регистрация
Восстановить пароль
 
N1K003
3 / 3 / 2
Регистрация: 14.05.2011
Сообщений: 55
#1

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

14.05.2011, 20:12. Просмотров 1041. Ответов 9
Метки нет (Все метки)

Всем добрый вечер. Столкнулся сейчас с проблемой написания динамического двумерного массива.

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

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

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

Записать все буквы данного слова в обратном порядке - C++
Дано слово. Записать все буквы данного слова в обратном порядке.

Дана строка символов до точки. Записать слова этой строки в обратном порядке - C++
Дана строка символов до точки. Записать слова этой строки в обратном порядке (мама мыла раму > раму мыла мама). Подскажите кто что...

Записать в предложении символы длинного слова (всех длинных, если их несколько) в обратном порядке - C++
Поиогите пожалуйста не получается та часть кода где нужно найти и записать в обратном порядке слова. #include <stdio.h> #include...

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

Записать все элементы массива в другой массив в обратном порядке - C++
ЗАДАЧА 2. Задан массив Z(k) целых чисел. Записать все элементы массива Z в массив Y, записав числа в обратном порядке (например, 1234...

Дан массив целых чисел. Записать его элементы в обратном порядке. - C++
Доброго времени суток. Помогите, пожалуйста, в следующем. Дан массив целых чисел. Записать его элементы в обратном порядке. Что...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Nursik77
273 / 233 / 21
Регистрация: 05.04.2011
Сообщений: 645
14.05.2011, 20:14 #2
А зачем делать это через массивы? и зачем двумерные?
0
N1K003
3 / 3 / 2
Регистрация: 14.05.2011
Сообщений: 55
14.05.2011, 20:16  [ТС] #3
А каким способом? Суть в том, что нужно использовать динамическое программирование.
0
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
14.05.2011, 20:16 #4
Присваивать им что?
0
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();
}
1
asics
Freelance
Эксперт С++
2847 / 1784 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
14.05.2011, 20:20 #6
Цитата Сообщение от N1K003 Посмотреть сообщение
Суть в том, что нужно использовать динамическое программирование.
Зачем для столь тривиальной задачи использовать ДП ?
0
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;
}
Заранее спасибо
0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
15.05.2011, 01:42 #8
N1K003, Не разобрались. Нифига вы не делаете в программе. Каждый раз при gets в строку вводится новое значение и никуда не записывается. В итоге в последнем цикле получается 5 раз последнее слово.
0
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 минут
Попробовал еще сделать с помощью брейка, но не могу разобраться, где ставить. Подкажите кто-то, плиз
Может есть еще какие-то способы, как остановить цикл?
0
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
15.05.2011, 22:06 #10
break нужно ставить в том месте, где хотите выйти из цикла. Если циклы вложенные, то выход будет осуществлен только из самого "глубокого".
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2011, 22:06
Привет! Вот еще темы с ответами:

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

Ошибки (в файле содержатся строки разной длины - записать их в выходной файл в порядке возрастания длины строки) - C++
#include &lt;iostream&gt; #include &lt;set&gt; #include &lt;iterator&gt; #include &lt;fstream&gt; #include &lt;string&gt; #include &lt;algorithm&gt; int main()...

На входе строка любой длины, на выходе получить строку в обратном порядке - C++
дело было на собеседовании : задали такую задачу. На входе строка любой длины , на выходе получить строку в обратном порядке (ABC... ...

Вывести слова в обратном порядке - C++
Здравствуйте, а можете помочь написать программу на С++, оч нужно, пожалуйста)) Задание: Пользователь вводит строку символов, вывести...


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

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

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