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

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

Восстановить пароль Регистрация
 
Sasha_3108
1 / 1 / 0
Регистрация: 15.01.2011
Сообщений: 13
09.03.2011, 18:36     Не заполняется динамический массив #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
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 минут
Может я его неправильно объявил?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
amfisat
 Аватар для amfisat
67 / 67 / 1
Регистрация: 16.06.2009
Сообщений: 235
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
 Аватар для 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
4837 / 3236 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
10.03.2011, 05:29     Не заполняется динамический массив #6
C++
1
fwrite(sc,sizeof(sc),n,f);
sizeof *sc
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.03.2011, 06:49     Не заполняется динамический массив
Еще ссылки по теме:

Заполнить массив строк из файла. Массив заполняется, но выводится не корректно C++
Не заполняется массив указателей C++
Не заполняется динамический массив, кроме нулевого элемента C++

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

Или воспользуйтесь поиском по форуму:
Sasha_3108
1 / 1 / 0
Регистрация: 15.01.2011
Сообщений: 13
10.03.2011, 06:49  [ТС]     Не заполняется динамический массив #7
accept,огромное спасибо. Поменял и всё заработало!
Yandex
Объявления
10.03.2011, 06:49     Не заполняется динамический массив
Ответ Создать тему
Опции темы

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