Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.01.2008, 05:58   #1
Andres
 
Регистрация: 01.01.2008
Сообщений: 3
По умолчанию Помогите решить задачу с динамическими массивами и строками символов

Лабораторная 6 "Динамические массивы"

Для заданной матрицы размером 8 на 8 найти такие к, что к-я строка матрицы совпадает с к-м столбцом. Найти сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент.

Вот программа:

#include <iostream.h>
#include<iomanip.h>
int const n=4;
int mas[n][n],a,b,sum = 0;
void main()

{
for(a=0;a<n;a++)
{
for(b=0;b<n;b++)
{
cin>>mas[a][b];
}
}
bool error = false;

for(a=0;a<n;a++)
{for(b=0;b<n;b++)
{
if(mas[a][b] != mas[b][a])
{
error = true;
break;
}
}
if(error == false)
{
cout<<"nomer = "<<a<<endl;
}
}
for(a = 0;a<n;a++)
{
int tsum = 0;
bool otr = false;
for(b = 0;b<n;b++)
{
if(otr == false && mas[a][b] < 0)
otr = true;
tsum += mas[a][b];
}
if(otr == true)
{
sum+=tsum;
}
}
cout<<"summna = "<< sum<<endl;
}



Эта прога работает, но в ней двумерные массивы, а мне надо чтобы динамические, подскажите как переделать из двумерных в динамические.


Лабораторная 8 "Строки символов"
В произвольном тексте, содержащем не более 10 строк, в каждой строке не более 80 символов, заменить все цифры от 0 до 9 на слова "ноль", "один", "два",...,"девять.
Andres вне форума Ответить с цитированием
Старый 31.01.2008, 10:44   #2
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Динамические массивы отличаются от обычных тем, что при создании обычного массива для него выделяется объем памяти N1 * N2 * .... * Nn * <размер элемента>, а для динамического в большинстве случаев память изначально не резервируется вообще и по мере необходимости динамически выделяется по той же формуле. Например если в вышеприведенном примере нужно объявить динамический массив mas, делается это обычно так:
Код:
int **mas = NULL;
После этого, когда необходимо увеличение размера массива, просто изменяется размер выделенной под него памяти, скажем так:
Код:
mas = realloc(mas, n1 * n2 * sizeof(int));
после чего массив можно индексировать в пределах 0...n1, 0...n2.

Ваша задача со строками несколько отличается от приведенного примера и больше похожа на вот эту http://programmersforum.ru/showthread.php?t=13439
B_N вне форума Ответить с цитированием
Старый 31.01.2008, 11:09   #3
still_alive
Great Code Monkey
Форумчанин
 
Аватар для still_alive
 
Регистрация: 09.08.2007
Сообщений: 533
По умолчанию

Поскольку программа написана на С++, то new и delete в помощь. Однако realloc там уже нет, ибо realloc применяется вместе с malloc и free (stdlib.h), его приходится реализовывать вручную.
still_alive вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите дорешить задачу с массивами(Pascal) Дима82 Помощь студентам 4 23.05.2008 23:11
помогите решить 3 задачи с массивами! эра Помощь студентам 5 20.02.2008 14:57
Помогите решить две задачи с массивами SHiZiK Помощь студентам 3 21.12.2007 10:01
Помогите решить. Паскаль. Работа со строками. Удалить лишние пробелы. Комильфо Помощь студентам 3 10.11.2007 21:42