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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.12.2009, 15:41   #1
Junk1E
Пользователь
 
Регистрация: 09.12.2009
Сообщений: 28
По умолчанию Задание массива с помощю функции

Вопрос, чет не могу сообразить как сделать что бы 2у мерный массив задавался с помощью функции ... Есть мысли, но без помощи не могу додумать )Проблема в том, что ни как не могу понять как возвращающиеся значение массивом сделать
Код:
#include <iostream>
#include <stdlib.h>
using namespace std;

int rn(int x,int y);
int main(){
    int x,y;
    cout<<"Vvedite x i y"<<endl;
    cin>>x;
    cin>>y;
    int mas[x][y];
    mas[x][y]=rn(x,y);
    for(int i=0;i<y;i++){             
              cout<<endl;                        
              for(int j=0;j<x;j++){
                      cout<<mas[i][j]<<" ";           
              }
    };
}
int rn(int x, int y){
    int a[x][y];
    for(int i=0;i<y;i++){
            for(int j=0;j<x;j++){
                    a[i][j]=0;
            }
    }
    return(a[x][y]);
}
Junk1E вне форума Ответить с цитированием
Старый 11.12.2009, 15:46   #2
osichev
Форумчанин
 
Регистрация: 18.05.2009
Сообщений: 180
По умолчанию

Код:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define max_x  10
#define max_y  7
void gen(int k,int kk,int a,int b,int x[max_x][max_y]);
void out(int k,int kk,int x[max_x][max_y]);
void main() {
int x[max_x][max_y];
int n,m;
int aa,bb; 

printf("Введите кол-во элементов массива n m (n<=10,m<=7): ");
scanf("%d%d", &n,&m);      

printf("Введите промежуток: ");
scanf("%d%d",&aa,&bb);
 gen(n,m,aa,bb,x);
 out(n,m,x);
}
void gen(int k,int kk,int a,int b,int x[max_x][max_y]) {
int i,j;
srand(time(NULL)*1000);
for(i=0;i<k;i++)
for(j=0;j<kk;j++)
x[i][j]=(rand()*1.0/(RAND_MAX)*(b-a)+a);
}
void out (int k,int kk,int x[max_x][max_y]) {
int i,j;
for (i=0;i<k;i++){
for(j=0;j<kk;j++)
printf("%4d", x[i][j]);
printf("\n");
}

   }
вот))))

разберайся
Программист без пива, как спирт без пробки - выдохнется___________-

Последний раз редактировалось Sazary; 13.12.2009 в 04:21.
osichev вне форума Ответить с цитированием
Старый 11.12.2009, 15:57   #3
Junk1E
Пользователь
 
Регистрация: 09.12.2009
Сообщений: 28
По умолчанию

а что значит промежуток, и количество эл-ов ? 2ое как я понял кол-во строк, столбцов, а вот промежуток ... )

насколько я понял , это множество элементов в массиве, пример : от 1 до 5 если а=1, б=5 ????

Последний раз редактировалось Sazary; 13.12.2009 в 04:21.
Junk1E вне форума Ответить с цитированием
Старый 11.12.2009, 16:00   #4
osichev
Форумчанин
 
Регистрация: 18.05.2009
Сообщений: 180
По умолчанию

выводит только те числа,которые находятся в этом промежутке.

да!но он хдесь есть генерация случайных чисел

x[i][j]=(rand()*1.0/(RAND_MAX)*(b-a)+a);

может вывести (например) :1 1 3 2 5
4 4 4 2 1
если масиив 2*2.Это я привёл пример
Программист без пива, как спирт без пробки - выдохнется___________-

Последний раз редактировалось Sazary; 13.12.2009 в 04:22.
osichev вне форума Ответить с цитированием
Старый 11.12.2009, 16:24   #5
Junk1E
Пользователь
 
Регистрация: 09.12.2009
Сообщений: 28
По умолчанию

не мгу понять почему не работает (((
Код:
#include <iostream>
#include <stdlib.h>
using namespace std;
void rn(int x,int y,int a[x][y]);
void out(int x,int y,int a[x][y]);
int main(){
    int x;
    int y;
    cout<<"Vvedite x i y"<<endl;
    cin>>x;
    cin>>y;
    int mas[x][y];
    rn(x,y,mas[x][y]);
    out(x,y,mas[x][y])           
              }
    }
}
void rn(int x,int y,int a[x][y]){
    for(int i=0;i<x;i++){
            for(int j=0;j<y;j++){
                    a[i][j]=0;
            }
    }
}
void out(int x,int y,int a[x][y]){
     for (i=0;i<x;i++){
         cout<<endl;
         for(j=0;j<y;j++){
         cout<<x[i][j];
         }
   }
}
выдает ошибки типа:
Цитата:
4 `x' was not declared in this scope
4 `y' was not declared in this scope
5 `x' was not declared in this scope
5 `y' was not declared in this scope
и мой моск не очень хочет понимать эти строчки :
Код:
#define max_x  10
#define max_y  7
а точнее, возможно ли без них , реализовать данным способом

Последний раз редактировалось Junk1E; 11.12.2009 в 16:32.
Junk1E вне форума Ответить с цитированием
Старый 11.12.2009, 16:32   #6
osichev
Форумчанин
 
Регистрация: 18.05.2009
Сообщений: 180
По умолчанию

void rn(int x,int y,int a[m][n]);
void out(int x,int y,int a[m][n]);

попробуй так

void rn(int x,int y,int a[x][y]){
for(int i=0;i<x;i++){
for(int j=0;j<y;j++){
a[i][j]=0;
}
}
}


здесь тоже,почему ты приравнял a[i][j]=0; ?
Программист без пива, как спирт без пробки - выдохнется___________-

Последний раз редактировалось Sazary; 13.12.2009 в 04:22.
osichev вне форума Ответить с цитированием
Старый 11.12.2009, 16:39   #7
Junk1E
Пользователь
 
Регистрация: 09.12.2009
Сообщений: 28
По умолчанию

так, компилятор ругается на размерность массива .... ща покурю и пойду вешаться .. походу с дефайном делать придется .. (

Цитата:
Сообщение от osichev Посмотреть сообщение
void rn(int x,int y,int a[x][y]){
for(int i=0;i<x;i++){
for(int j=0;j<y;j++){
a[i][j]=0;
}
}
}


здесь тоже,почему ты приравнял a[i][j]=0; ?
Да эта прога мне вообще то понять как задать массив, так что мне хотя бы с нулевыми элементами, но для задания надо изначально все "0", а далее будет изменяться.

Последний раз редактировалось Sazary; 13.12.2009 в 04:23.
Junk1E вне форума Ответить с цитированием
Старый 11.12.2009, 16:46   #8
osichev
Форумчанин
 
Регистрация: 18.05.2009
Сообщений: 180
По умолчанию

Код:
#include<iostream.h>
#include<stdlib.h>
#include<time.h>
void gen(int k,int kk,int x[30][20]);
void out(int k,int kk,int x[30][20]);
void main() {
int x[30][20];
int n,m;

cout<<"Введите кол-во элементов массива n m: ";
cin>>n>>m; 

 gen(n,m,x);
 out(n,m,x);
}
void gen(int k,int kk,int x[30][20]) {
int i,j;
for(i=0;i<k;i++)
for(j=0;j<kk;j++)
x[i][j]=i;
}
void out (int k,int kk,int x[30][20]) {
int i,j;
for (i=0;i<k;i++){
for(j=0;j<kk;j++)
cout<<"\t"<<x[i][j];
cout<<"\n";
}

   }



вот ещё так пробуй!

Модератор: тег CODE!
Программист без пива, как спирт без пробки - выдохнется___________-

Последний раз редактировалось Sazary; 13.12.2009 в 04:23.
osichev вне форума Ответить с цитированием
Старый 11.12.2009, 17:00   #9
Junk1E
Пользователь
 
Регистрация: 09.12.2009
Сообщений: 28
По умолчанию

Спасибо, это работает
Junk1E вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Предусмотреть задание параметров функции «по умолчанию» и с клавиатуры. R@Ziel Помощь студентам 2 01.12.2009 00:29
Вычисление массива значений функции mathe Общие вопросы C/C++ 0 22.04.2009 10:27
Функции. Передача массива в качестве параметра функции. Wia Помощь студентам 2 17.03.2009 14:57
Вывод массива из функции LeoN PHP 2 13.11.2008 13:57