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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.11.2012, 12:55   #1
InonZur
 
Регистрация: 19.11.2012
Сообщений: 6
По умолчанию Функция зануления столбца двумерного массива

Помогите разработать функцию зануления столбца двумерного массива. Занулить 3 столбца. Результат вывести на печать.
InonZur вне форума Ответить с цитированием
Старый 19.11.2012, 12:57   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Сам как пробовал?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.11.2012, 12:59   #3
InonZur
 
Регистрация: 19.11.2012
Сообщений: 6
По умолчанию

Код:
#include <cstdlib>
#include <iostream>

using namespace std;

int main()
{
    int a,b,i,j,mas[255][255];
    char y;
    cin >>a>>b;
    for(i=0;i<a;i++)
    {
                    for(j=0;j<b;j++)
                    {
                                    mas[i][j]=rand() % 100;
                                    printf("%3i",mas[i][j]);
                                    
                                    }
                                    cout<<endl;
                    }
                    cout<<"obnyliti pervyi-D stroky?"<<endl<<"y/n?"<<endl;
                    cin>>y;
                    if(y='y')
                    {
                             for(i=a-b;i<b*a;i++)
                             {
                                             for(i=a-b;i<b*a;i++)
                                             {
                                                                 for(i=a-b;i<(b*a);i++)
                                             {
                                                               mas[i][j]=0;
                                             printf("%3i",mas[i][j]);
                                             
                                                               }
                                                             
                                                             
                                                             }
                                                             cout<<endl;
                                            }
                                            
                                             cout<<endl;
                             }
                             
                             
                             else
                             {
                                   system("PAUSE");
                                      EXIT_SUCCESS;   
                                      }
    system("PAUSE");
    return EXIT_SUCCESS;
}
Как то так, но обнулённые столбцы выводятся в строчку

Последний раз редактировалось Stilet; 19.11.2012 в 13:02.
InonZur вне форума Ответить с цитированием
Старый 19.11.2012, 13:05   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
void TheNull(int Col,int **a){ for(int i=0;i<255;i++) a[n][i]=0;return;}
И пробуй вызывать так:
Код:
 TheNull(5,&mas);
Где 5 - номер столбца.
Код не проверял.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.11.2012, 13:19   #5
InonZur
 
Регистрация: 19.11.2012
Сообщений: 6
По умолчанию

А можете написать полностью измененный код? Я только начал изучать, не могу понять что-то.
InonZur вне форума Ответить с цитированием
Старый 19.11.2012, 14:23   #6
Xardas
Сисадмин
Форумчанин
 
Аватар для Xardas
 
Регистрация: 28.12.2007
Сообщений: 320
По умолчанию

Используя процедуру уважаемого Stilet, чуть измененную...

Код:
void TheNull (int size, int Col, int **a) 
//передаем количество строк в массиве, 
//столбец, который зануляем
{ 
	for(int i = 0; i < size; i++) a[i][Col]=0;
}

int main()
{
	.......
	int **mas;
	mas = new int* [a];
	for (int i = 0; i < a; i++)
	{
		mas[i] = new int[b];
	}

	// ввод опускаю

	for (int i = 0; i < 3; i++) //3 столбца
	{
		TheNull(a, i, reinterpret_cast<int**>(mas));
	}
             
             //вывод 

	for (int i = 0; i < a; i++)
                  delete[] mas[i];

}
Примерно так
Xardas вне форума Ответить с цитированием
Старый 26.11.2012, 06:37   #7
InonZur
 
Регистрация: 19.11.2012
Сообщений: 6
По умолчанию

Написал программу, немного иначе, но появилась новая проблема, вместо зануления 3х столбцов массива, необходимо в чётных строчках массива выставить еденицы.
Вот код в котором происходит зануление столбцов массива, его надо немного изменить, дабы получить вышесказанный результат с еденицами:
Код:
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
zanul (int x, int y, int y1, int y2, int y3)
{
randomize();
int a[100][100],z;
int w,q,t,u;
for ( q=1;q<=x;q++)
{
for ( t=1;t<=y;t++)
{
a[q][t]=random(10);
z=a[q][t];
printf(" %i",z);
if(t==y) cout<<endl;}}
cout<<endl<<endl;
for ( u=1;u<=x;u++) a[u][y1]=0;
for ( u=1;u<=x;u++) a[u][y2]=0;
for ( u=1;u<=x;u++) a[u][y3]=0;

for ( q=1;q<=x;q++)
{
for ( t=1;t<=y;t++)
{
cout<<a[q][t]<<" ";
if(t==y) cout<<endl;}}
return 0;}
void main ()
{
int i,j,m,n,j1,j2,j3,k;
nac:clrscr();
cout<<"Razmernost massiva:"<<endl<<"kol-vo strok=";cin>>m;
cout<<"kol-vo stolbcov=";cin>>n;
cout<<"Kakie stolbcu hotite zanulit:";cin>>j1>>j2>>j3;
zanul(m,n,j1,j2,j3);
getch();
}
Можете помочь?

Последний раз редактировалось Stilet; 26.11.2012 в 09:10.
InonZur вне форума Ответить с цитированием
Старый 26.11.2012, 07:35   #8
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Берете функцию, которую дал Stilet и меняете местами [n] и [i]. Ну и вместо нуля - единицу.

P.S. Функции однотипные, неужели трудно включить соображаловку с логикой и пару минут вдуматься в одну строчку кода?
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 26.11.2012, 08:22   #9
InonZur
 
Регистрация: 19.11.2012
Сообщений: 6
По умолчанию

Благодарю...вроде всё сделал
InonZur вне форума Ответить с цитированием
Старый 03.12.2012, 09:04   #10
InonZur
 
Регистрация: 19.11.2012
Сообщений: 6
По умолчанию

А как можно изменить этот код, что бы автоматически в чётных строчках ставились единицы, а не в ручном режиме вводить номера строк?
Вот этот код:
Код:
#include<iostream.h>
#include<math.h>
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
zanul (int x, int y, int y1, int y2, int y3)
{
randomize();
int a[100][100],z;
int w,q,t,u;
for ( q=1;q<=x;q++)
{
for ( t=1;t<=y;t++)
{
a[q][t]=random(10);
z=a[q][t];
printf(" %i",z);
if(t==y) cout<<endl;}}
cout<<endl<<endl;
for ( u=1;u<=y;u++) a[y1][u]=1;
for ( u=1;u<=y;u++) a[y2][u]=1;
for ( u=1;u<=y;u++) a[y3][u]=1;

for ( q=1;q<=x;q++)
{
for ( t=1;t<=y;t++)
{
cout<<a[q][t]<<" ";
if(t==y) cout<<endl;}}
return 0;}
void main ()
{
int i,j,m,n,j1,j2,j3,k;
nac:clrscr();
cout<<"Razmernost massiva:"<<endl<<"kol-vo strok=";
cin>>m;
cout<<"kol-vo stolbcov=";
cin>>n;
cout<<"Kakie stroki hotite zanulit:";
cin>>j1>>j2>>j3;
zanul(m,n,j1,j2,j3);
getch();
}


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 03.12.2012 в 09:21.
InonZur вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удаление строки и столбца из двумерного массива Hitory Общие вопросы Delphi 0 06.06.2012 20:59
Задание на обработку двумерного массива!Найти наибольшее из значений элементов столбца ленок-носок Помощь студентам 10 18.03.2012 17:01
функция рандомного заполнения двумерного массива (с) Miles Помощь студентам 1 08.01.2012 14:35
функция ввода двумерного массива (с) Miles Помощь студентам 1 23.12.2011 00:27
обмен столбца и строки двумерного массива Shelena Помощь студентам 12 08.11.2010 12:04