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

не могу сделать программу с указателями на массив и с функцией - C++

Восстановить пароль Регистрация
 
Kosstudent
0 / 0 / 0
Регистрация: 08.09.2012
Сообщений: 21
21.10.2012, 21:13     не могу сделать программу с указателями на массив и с функцией #1
такая "беда"
впервые столкнулся с указателями,в них чайник..
вот код
задание--вывести массив,сделать так,чтоб к этому массиву прибавить по 1 к каждому значению (через функцию вне головной программы) и распечатать полученные значения
действовать через указатели

проблема в том
что у меня,как сказали,чёрт пойми чё делает функция раз,во вторых,распечатываются только введённые значения массива

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
#include <iostream>
#include <cstdlib>
#include <cstdio>
using namespace std;
 
void procedure (int *pArray) {//v funkci'u peredaetsa ukazatel' na massiv
int array[2];
for (int r=0;r<2;r++) {
array[r]=array[r]+1;
}
}
 
int main(int nNumberofArgs, char* pszArgs[]) {
int array[2];
int* pArray; //sozdanie ukazatel'a
pArray = array; //adres v ukazatel'
 
void procedure (int *);//prototip
 
cout«"vvod elementov"«endl;
for (int i=0;i<2;i++) {
cin»array[i];
}
cout«"vivod elementov"«endl;
 
for(int pArray = 0;pArray<2; pArray++) {
cout«array[pArray]«endl;
}
return 0;
}
как нужно изменить что-то,чтобы это все заработало?как примерно такая функция будет выглядеть?и ещё--возможно,не знаю,как сделать так,чтобы функция возвращала изменённые значения массива

я не представляю
и нигде не нахожу

ну нигде не нахожу..мб не те книги читаю
прошу если что,не сильно переделывать сам алгоритм.Чужие программы мне сложно читать((
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.10.2012, 21:13     не могу сделать программу с указателями на массив и с функцией
Посмотрите здесь:

C++ Не могу разобраться с указателями
C++ Не могу разобраться с указателями
C++ Не могу что-то понять с указателями
C++ Нужно сделать программу с указателями , из обычной . (Функции)
C++ Сделать функцию, которая принимает одномерный массив и возвращает индексы его максимального и минимального элементов, с указателями. С++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGrig
176 / 159 / 2
Регистрация: 08.10.2012
Сообщений: 422
21.10.2012, 21:32     не могу сделать программу с указателями на массив и с функцией #2
Если честно ваш код напоминает бред сумашедшего, я так и не разобрал что он делает=) благо вы дали так сказать ТЗ. Алгоритм как вы и просили не стал переделывать сильно, оставил большую часть на своих местах. Сами действия правильные выбрали, запутались немного. И еще прототип если и делается то вне мэйна....

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
#include <iostream>
#include <cstdlib>
#include <cstdio>
using namespace std;
 
 
void procedure (int *pArray,int n) {//v funkci'u peredaetsa ukazatel' na massiv
    for (int r=0;r<n;r++) {
        pArray[r]=pArray[r]+1; //или pArray[r]+=1 или pArray[r]++ (возможно только если в массиве pArray хранятся числа + если нужно прибавить 1)
    }
}
 
int main() {
    cout<<"vvod kolvo elementov"<<endl;
    int n;
    cin>>n;
    int* Array=new int [n]; //sozdanie ukazatel'a
    cout<<"vvod elementov"<<endl;
    for (int i=0;i<n;i++) {
        cin>>Array[i];
    }
    procedure(Array,n);
    cout<<"vivod elementov"<<endl;
 
    for(int i = 0;i<n; i++)
        cout<<Array[i]<<endl;
    delete[] Array;
    return 0;
}
Kosstudent
0 / 0 / 0
Регистрация: 08.09.2012
Сообщений: 21
21.10.2012, 21:35  [ТС]     не могу сделать программу с указателями на массив и с функцией #3
чайник,не ругайте сильно)
спасибо,я вам благодарен)удачи вам,всего самого наилучшего)
MrGrig
176 / 159 / 2
Регистрация: 08.10.2012
Сообщений: 422
21.10.2012, 21:36     не могу сделать программу с указателями на массив и с функцией #4
Цитата Сообщение от Kosstudent Посмотреть сообщение
не знаю,как сделать так,чтобы функция возвращала изменённые значения массива
чтобы функция чтото возвращала нужно вместо войд поставить тип переменной/класса со знаком* (* есть правило хорошего тона ибо если передавать/возвращать целые объекты есть несщадно жрать ресурсы компьютера) в вашем случае передается в функцию указатель на память в которой содержится массив, соответственно функция работает с памятью через указатель и возвращать указатель еще раз смысла неимеет
Kosstudent
0 / 0 / 0
Регистрация: 08.09.2012
Сообщений: 21
21.10.2012, 21:38  [ТС]     не могу сделать программу с указателями на массив и с функцией #5
а какие бы вы книги посоветовали бы почитать?адекватные и для чайников
кроме книги с соответствующим названием,Подбельского нашел.Он вроде ничего
MrGrig
176 / 159 / 2
Регистрация: 08.10.2012
Сообщений: 422
21.10.2012, 21:38     не могу сделать программу с указателями на массив и с функцией #6
Цитата Сообщение от Kosstudent Посмотреть сообщение
чайник,не ругайте сильно)
спасибо,я вам благодарен)удачи вам,всего самого наилучшего)
нисколько не ругал вас=) лишь сказал что вы запутались. Почитайте по больше во-первых про выделение памяти динамическим массивам, а также про указатели. а дальше вам попрет =)
Kosstudent
0 / 0 / 0
Регистрация: 08.09.2012
Сообщений: 21
21.10.2012, 21:46  [ТС]     не могу сделать программу с указателями на массив и с функцией #7
хорошо)Большое спасибо вам.Еще раз всего-всего
почитаю,разберусь)никуда не деться от этого

Добавлено через 4 минуты
чуть чуть не то.Я потом разберусь,но если вдруг нет--
ваша функция возвращает только последнее значение массива,увеличенное на 1
а по заданию надо чтобы оба элемента

Добавлено через 1 минуту
аа,стоп
тупанул
все верно
MrGrig
176 / 159 / 2
Регистрация: 08.10.2012
Сообщений: 422
21.10.2012, 22:24     не могу сделать программу с указателями на массив и с функцией #8
Цитата Сообщение от Kosstudent Посмотреть сообщение
а какие бы вы книги посоветовали бы почитать?адекватные и для чайников
кроме книги с соответствующим названием,Подбельского нашел.Он вроде ничего
а чем вам это та не нравится? =)
С++ Для чайников
по моему очень не плохо расписаны отдельные аспекты =)
Если вы имеете ввиду синтаксис язака С++ то меня этому учили в универе и школе, отдельно книг особо не читал =)

могу посоветовать моего препода по информатике
CPROG - о программировании вообще, в том числе на Си/Си++
еще могу предложить данную литературу
Статьи и учебники C++
Kosstudent
0 / 0 / 0
Регистрация: 08.09.2012
Сообщений: 21
21.10.2012, 22:37  [ТС]     не могу сделать программу с указателями на массив и с функцией #9
спасибо)почитаем
ну си++ для чайников хорошая,но просто не всегда содержит все что нужно)одной её недостаточно

Добавлено через 1 минуту
а почему в программе нет прототипа функции?

Добавлено через 9 минут
в мэйне например перед вызовом void procedure (int *,int)
MrGrig
176 / 159 / 2
Регистрация: 08.10.2012
Сообщений: 422
21.10.2012, 22:41     не могу сделать программу с указателями на массив и с функцией #10
Цитата Сообщение от Kosstudent Посмотреть сообщение
а почему в программе нет прототипа функции?
смотрите в чем дело, компилятор в визуал студио не видит весь проект полностью, он считывает по строково. Например если вы пишете сначала основную функцию и знаете что нужно передавать в доп функцию и что с неё будете получать, поперед мэйном пишите прототип доп фунции только с параметрами. Тогда компилятор не скажет что такая функция неопределена, но возможно вылезет варнинг что у функции есть только прототип. А уже ниже мэйн фунции или даже мб в другом .срр файле распишите что в теле функции делается.

Добавлено через 43 секунды
прототипа функции в мэйне не делается

Добавлено через 47 секунд
хотя мб и делается, я в этом если честно не сведущ, просто не знаю зачем это делать
Kosstudent
0 / 0 / 0
Регистрация: 08.09.2012
Сообщений: 21
21.10.2012, 22:44  [ТС]     не могу сделать программу с указателями на массив и с функцией #11
аа,ну ясненько
спасибо огромное!!!!)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.10.2012, 22:45     не могу сделать программу с указателями на массив и с функцией
Еще ссылки по теме:

Сделать функцию, которая принимает двумерный массив и возвращает индексы его максимального элемента(номер строки и столбца), с указателями, С++ C++
C++ Сделать функцию, которая принимает одномерный массив и возвращает индексы трех его самых больших элементов(сортировку не использовать), указателями
C++ Не могу разобраться с указателями!

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

Или воспользуйтесь поиском по форуму:
Ryzhikov_A
6 / 6 / 0
Регистрация: 14.10.2012
Сообщений: 36
21.10.2012, 22:45     не могу сделать программу с указателями на массив и с функцией #12
//опоздал, но вроде бы чуть подробнее)
Прототип не обязателен. Обычно используется, когда функция объявлена ниже по коду, чем то место, где вызывается (дабы намекнуть компилятору, что если функция при проходе по тексту до точки вызова не найдена, то это еще не значит, что ее вовсе нет, и стоит поискать ее ниже). В примере же функция объявлена выше места вызова (в main'е) => все хорошо и прототип не нужен.
Yandex
Объявления
21.10.2012, 22:45     не могу сделать программу с указателями на массив и с функцией
Ответ Создать тему
Опции темы

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