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

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

Восстановить пароль Регистрация
 
Shelbanin
0 / 0 / 0
Регистрация: 28.04.2013
Сообщений: 6
28.04.2013, 22:03     Заполнение массива с использованием указателей #1
Необходимо заполлнить массив 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++
Переставить столбцы массива с использованием указателей C++
С использованием функций и указателей отсортировать строки массива строк по убыванию C++
Yайти максимальное и минимальное число и его индекс одномерного массива с использованием указателей C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Fler
207 / 209 / 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;
}
Yandex
Объявления
29.04.2013, 19:23     Заполнение массива с использованием указателей
Ответ Создать тему
Опции темы

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