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

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

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

Не заполняется динамический массив - C++

09.03.2011, 18:36. Просмотров 574. Ответов 6
Метки нет (Все метки)

Со статическим массивом всё работает как надо,а в динамическом заполняется только первый элемент.
Может кто подскажет где ошибка? Заранее благодарю.
Фрагмент программы:
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
38
39
40
41
42
43
44
 #include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
using namespace std;
struct cubes
{
double rebro;
char col[7];
char mat[6];
};
cubes *GetMemory(int n){
     cubes *mas;
     mas=new cubes[n];
     return mas;
}
int main(){
int i,n,r=0,g=0,b=0,y=0,w=0,m=0;
double v=0,vr=0,vg=0,vb=0,vy=0;
FILE *f;
cubes *sc,*sc1 ;
cout << " Input number of cubes " << endl;
cin >> n;
sc=GetMemory(n);
if ((f=fopen("c:\\cubix.dat","wb"))==NULL) {
        perror("Cannot open file.\n");
        return 1;
    }
for (i = 0; i < n; i++) {
     clrscr();
     cout << "Cube ->  " << i+1 << endl;
     cout << " Input cube size: " << endl;
     cin >> sc[i].rebro ;
     cout << " Input color of cube ( red, green, yellow or blue) " << endl;
     cin.ignore();
     cin.getline(sc[i].col,7);
     cout << " Input material of cube (wood,metal,paper)" << endl;
     cin.getline(sc[i].mat,6);
     }
clrscr();
fwrite(sc,sizeof(sc),n,f);
fclose(f);
delete[] sc;
........
Добавлено через 49 минут
Может я его неправильно объявил?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.03.2011, 18:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не заполняется динамический массив (C++):

Не заполняется динамический массив, кроме нулевого элемента - C++
Создал программу для расчета корней явным методом Эйлера ОДУ не заполняются массивы, везде искал, везде также, даже на вашем форуме...

Заполнить массив строк из файла. Массив заполняется, но выводится не корректно - C++
Здравствуйте! Такая проблема. В файле имена записаны в столбик и разделены точкой с запятой. Массив заполняется, но выводится не корректно....

Не заполняется массив - C++
#include &quot;stdafx.h&quot; #include &quot;iostream&quot; using namespace std; int m, n, a, b, c; int mas; int masd; int _tmain(int argc,...

Не заполняется массив - C++
Здравствуйте! Подскажите, пожалуйста, почему при создании нового массива, размерность создается, а сам массив не заполняется. Код: ...

Не заполняется массив - C++
Здравствуйте, не передается заполненный массив и не понимаю в чем проблема: N = 15 void Print(int *a, int n) { for (int...

Не заполняется массив указателей - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;locale.h&gt; #include &lt;time.h&gt; #include &lt;iomanip&gt; using namespace std; struct...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
amfisat
67 / 67 / 1
Регистрация: 16.06.2009
Сообщений: 240
09.03.2011, 20:35 #2
Если честно, было лень читать код - просто написал объявление и заполнение динамического массива.

C++
1
2
3
int *array=new int[n];
for (int i=1; i<=n; i++)
     array[i]= 0;
Sasha_3108
1 / 1 / 0
Регистрация: 15.01.2011
Сообщений: 13
09.03.2011, 21:13  [ТС] #3
В общем, я так и писал
Aress0111
12 / 12 / 0
Регистрация: 13.01.2011
Сообщений: 71
09.03.2011, 21:28 #4
C++
1
2
3
4
5
6
7
8
9
10
11
struct telefon  {
                char fam[20];
                char name[20];
                char otch[20];
                char n_tel[15];
                char adres[30];
                unsigned int n_sch;
                unsigned int dolg;
                telefon *next;};
  char fname[]="D:\\struct1.dat";
  telefon *telefonh=NULL;
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
38
39
40
41
42
43
int f_add()
    {
    telefon *a,*b;
    char ss[30];
    int i=1;
    if(telefonh!=NULL)
      {
      a=telefonh;
      i++;
      for(;a->next!=NULL;i++)
     {
      a=a->next;
     }
      }
     printf("%d. Enter surename -------> ",i);
     scanf("%s",&ss);
     if(ss[0]=='*') {printf("vvod zakonchen!!!");}
     b=(telefon*)malloc(sizeof(telefon));
    strcpy(b->fam,ss);
     printf("%d. Enter name     -------> ",i);
     scanf("%s",&ss);
    strcpy(b->name,ss);
     printf("%d. Enter pat.name--------> ",i);
     scanf("%s",&ss);
    strcpy(b->otch,ss);
     printf("%d. Enter Num of telefon--> ",i);
     scanf("%s",&ss);
    strcpy(b->n_tel,ss);
     printf("%d. Enter adress----------> ",i);
     scanf("%s",&ss);
    strcpy(b->adres,ss);
     printf("%d. Enter number of count-> ",i);
     scanf("%d",&(b->n_sch));
     printf("%d. Enter debt----> ",i);
     scanf("%d",&(b->dolg));
      b->next=NULL;
     if(telefonh==NULL)
    {
    telefonh=b;
    }
     else {a->next=b;}
    return 0;
     }
я делал так только не потоком!!Попробуйте переделать под потоковый ввод вывод
Sasha_3108
1 / 1 / 0
Регистрация: 15.01.2011
Сообщений: 13
09.03.2011, 22:11  [ТС] #5
Да нет, ввод-вывод работают нормально ( со статическим массивом ),а с динамическим заполняется только первый элемент массива. Никак не пойму в чём ошибка, но скорее всего с объявлением массива напортачил.
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
10.03.2011, 05:29 #6
C++
1
fwrite(sc,sizeof(sc),n,f);
sizeof *sc
Sasha_3108
1 / 1 / 0
Регистрация: 15.01.2011
Сообщений: 13
10.03.2011, 06:49  [ТС] #7
accept,огромное спасибо. Поменял и всё заработало!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.03.2011, 06:49
Привет! Вот еще темы с ответами:

не правильно заполняется массив - C++
#include&lt;iostream&gt; #include&lt;fstream&gt; using namespace std; int main() { int i,k,n,m,j,l; k = 0; l = 2;

Массив не заполняется значениями - C++
Проблема: почему программа не запоминает массив b? int main(){ int n=10; for (int i=0; i&lt;n; i++) { for...

Не заполняется двумерный массив char - C++
Не заполняется массив char числами. Проблема более хороша на скриншотах (обратите внимание на значение arr) P.S. Если что, я хочу этим...

Почему не заполняется массив vector? - C++
Здравствуйте! Не могу понять, почему не заполняется массив vector.. Он в классе объявлен типа public. #include &lt;iostream&gt; ...


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

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

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