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

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

Войти
Регистрация
Восстановить пароль
 
Shelbanin
0 / 0 / 0
Регистрация: 28.04.2013
Сообщений: 6
#1

Заполнение массива с использованием указателей - C++

28.04.2013, 22:03. Просмотров 508. Ответов 3
Метки нет (Все метки)

Необходимо заполлнить массив a[] с использовнием ничего не возвращающей функии и указателей. Однако происходить только заполнение всех элементов массива первым введенным значением, подскажите пожалуйста, в чем может быть проблема.
Код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
 
void fill_in(int *b, int c);
 
int main()
{
    int a[4];
    int *p;
    
    p=&a[0];
    for (int i=0; i<4; i++)
    {
        fill_in(p, i);
        printf("%d", a[i]);
    }
}
 
void fill_in(int *b, int c)
{
    int m;
    *(b+c)=scanf("%d", &m);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.04.2013, 22:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Заполнение массива с использованием указателей (C++):

Заполнение из файла массива указателей на базовый класс - C++
У меня есть базовый класс Myclass, и 2 производных класса Class1,Class2, наследование идет public,а поля находятся в protected, помогите...

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

Рисунок в C++ с использованием массива и указателей - C++
Создать одномерный символьный массив размерностью N*N (N - const). Заполнить его содержимое пробелами &quot;_&quot;. Заполнить его содержимое при...

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

Создание одного массива из другого с использованием указателей - C++
Ошибка 1 error C2440: =: невозможно преобразовать &quot;double *&quot; в &quot;double&quot; 17 Ошибка 2 error C2440: =: невозможно преобразовать &quot;double *&quot;...

Вывод массива на экран функцией с использованием указателей - C++
Привет, при написании функции возникла проблема: в помеченной комментарием строке выдало ошибку( Ошибка C2228 выражение слева от &quot;.size&quot;...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Fler
208 / 210 / 9
Регистрация: 20.12.2011
Сообщений: 635
28.04.2013, 22:09 #2
C++
1
2
3
4
5
6
void fill_in(int *b, int c)
{
    int m;
    scanf("%d", &m);
    *(b+c) = m;
}
Shelbanin
0 / 0 / 0
Регистрация: 28.04.2013
Сообщений: 6
29.04.2013, 19:05  [ТС] #3
Fler, спасибо большое)
еще возник вопрос, почему, когда я заменяю scanf и printf на getchar() и putchar() при i = 1 и i=3 функция fill_in не вызывается?!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
 
void fill_in(int *b, int c);
 
int main()
{
    int a[4];
    int *p;
    
    p=&a[0];
    for (int i=0; i<4; i++)
    {
       fill_in(p, i);
       putchar(a[i]);
    }
}
 
void fill_in(int *b, int c)
{
    int m;
    m=getchar();
    *(b+c)=m;
}
Добавлено через 1 час 52 минуты
Еще вопрос, подскажите, как быть, если мне надо, чтобы массив заполнялся словами:
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
#include <stdio.h>
#include <string>
 
using namespace std;
 
void fill_in(string *b, int c);
 
int main()
{
    string s[5];
    string *ps;
    ps=s;
    for (int i=0; i<5; i++)
    {
        fill_in(ps, i);
        printf("%s", s[i]);
    }
}
 
void fill_in(string *b, int c)
{
    string m;
    scanf("%s", m);
    *(b+c)=m;
}
Такой вариант не работает- в массиве содержатся после ввоа какие-то левые символы... И еще, можно ли как-нибудь реальзивоть данную программу не через string, а через char?

Добавлено через 18 часов 57 минут
Подскажите пожалуйста
Цитата Сообщение от Shelbanin Посмотреть сообщение
Fler, спасибо большое)
еще возник вопрос, почему, когда я заменяю scanf и printf на getchar() и putchar() при i = 1 и i=3 функция fill_in не вызывается?!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
 
void fill_in(int *b, int c);
 
int main()
{
    int a[4];
    int *p;
    
    p=&a[0];
    for (int i=0; i<4; i++)
    {
       fill_in(p, i);
       putchar(a[i]);
    }
}
 
void fill_in(int *b, int c)
{
    int m;
    m=getchar();
    *(b+c)=m;
}
Добавлено через 1 час 52 минуты
Еще вопрос, подскажите, как быть, если мне надо, чтобы массив заполнялся словами:
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
#include <stdio.h>
#include <string>
 
using namespace std;
 
void fill_in(string *b, int c);
 
int main()
{
    string s[5];
    string *ps;
    ps=s;
    for (int i=0; i<5; i++)
    {
        fill_in(ps, i);
        printf("%s", s[i]);
    }
}
 
void fill_in(string *b, int c)
{
    string m;
    scanf("%s", m);
    *(b+c)=m;
}
Такой вариант не работает- в массиве содержатся после ввоа какие-то левые символы... И еще, можно ли как-нибудь реальзивоть данную программу не через string, а через char?
Leshak
259 / 235 / 40
Регистрация: 10.12.2011
Сообщений: 513
29.04.2013, 19:23 #4
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 <iostream>
#include <cstdio>
 
using namespace std;
/* str1 - массив для внесения строки*/
/* str2 - вносимая строка*/
void StringIn ( char *str1, char *str2, int n){
   while ( n!=0 ) {
      if (!(*str1))n--;
      str1++;
   while (*str2){
     *str1 = *str2;
       str1++;
       str2++;
   }
   *str1 = '\0';
   }
}
 
void StringOut (char *str, int n){
        while ( n!=0 ) {
        if (!(*str))n--;
        str++;
        }
       cout<<str<<endl;
}
 
int main(){
    char str[120];
    char s[30];
    for ( int i = 0; i < 3 ; i++ ){
      gets(s);
      StringIn(str,s,i);}
      StringIn(str,"One more time",3);
    or ( int i = 0; i < 3 ; i++ ) StringOut(str,i);
return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.04.2013, 19:23
Привет! Вот еще темы с ответами:

Ошибка при переборе массива с использованием указателей - C++
Собственно сабж. Есть код int m = {4,5,46,57,35,65,35,55,45,95}; for (int *p = &amp;m; p&lt;&amp;m; p++) { cout &lt;&lt; m &lt;&lt;...

С использованием функций и указателей отсортировать строки массива строк по убыванию - C++
Суть задачи: с использование функций и указателей отсортировать строки массива строк по убыванию. Скажите что это оно выдает в выводе...

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

Добавление нового указателя в конец массива указателей, удаление указанного элемента, добавление указателей - C++
Здравствуйте. Помогите, пожалуйста, разобраться с одним большим заданием. Задание пока в процессе написания, но уже наверное есть ошибки....


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

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

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