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

Как массив сделать динамическим? - C++

Восстановить пароль Регистрация
 
sashka19
1 / 1 / 0
Регистрация: 21.11.2012
Сообщений: 16
03.06.2013, 23:34     Как массив сделать динамическим? #1
нужно массив char street[50] сделать динамическим.помогите пожалуйста(



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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#include "stdafx.h"
#include <iostream>
#include <string.h>
#include <conio.h>
 
using namespace std;
 
class Student
{  
   char last_name[50];
   char name[50];
   char midlle_name[50];
     int year;
     char street[50];
     int house;
   int telephone,rate;
   char faculty[50];
 
    public:  // открытые функции и переменные класса
        Student() {  name[0] = '\0', last_name[0] = '\0', midlle_name[0] = '\0', 
        faculty[0] = '\0', year = 0,street[0] = '\0',house = 0,telephone = 0,rate = 0 ;} 
    void get(); 
    void set(char n1[500]); 
    void set(char n1[500],int&r);
    void set(int&date);
 
};
     
void Student::get()
{ setlocale(LC_ALL,"Russian");
    std::cout << "Vvedite imya studenta " << std::endl; 
    std::cin >> name; 
    std::cout << "Vvedite otchestvo studenta " << std::endl; 
    std::cin >> midlle_name; 
    std::cout << "Vvedite familiyu studenta " << std::endl; 
    std::cin >> last_name; 
    std::cout << "Vvedite god rogdenia studenta " << std::endl; 
    std::cin >> year; 
    std::cout << "Vvedite nazvanie ylizi" << std::endl; 
    std::cin >> street; 
    std::cout << "Vvedite nomer doma " << std::endl; 
    std::cin >> house; 
    std::cout << "Vvedite telefon" << std::endl; 
    std::cin >> telephone; 
      std::cin.sync();
     std::cout << "Vvedite fakultet " << std::endl; 
    std::cin.getline(faculty, 50); 
    std::cout << "Vvedite kurs " << std::endl; 
    std::cin >> rate;    
} 
void Student::set(char n1[500])
{if (strcmp(faculty,n1)==0){
                        
                         cout<<"Last Name: "<<last_name<<endl;
                         cout<<"Name: "<<name<<endl;
                         cout<<"Midlle name: "<<midlle_name<<endl;
                         cout<<"Telephone: "<<telephone<<endl;"\n";
                         }
                        }
void Student::set(char n1[500],int&r)
{if ((strcmp(faculty,n1)==0)&&(rate=r)){
                         cout<<"Last name: "<<last_name<<endl;
                         cout<<"Telephone: "<<telephone<<endl;
                         cout<<"Address: "<<street<<" "<<house<<endl;"\n";
                         }
                        }
void Student::set(int&date)
{if (date<year){
                         cout<<"Last name: "<<last_name<<endl;
                         cout<<"Name: "<<name<<endl;
                         cout<<"Faculty: "<<faculty<<endl;
                         cout<<"Rate: "<<rate<<endl;"\n";}
                        }
 
 
 
int main(int args,char*argv[])
{setlocale(LC_ALL,"Russian");
    
     Student *spis;
     int i=0;
     char n1[500];
     int n,date,r,j;
     
     cout<<"Vvedite kolichestvo studentov: ";
     cin>>n;
     spis=new Student [n];
     for(int k=0;k<n;k++)
         spis[k].get();
     do
     {getch();
     cout<<"Vvedite 1 dlya vivoda spiska students dlya zadannogo faculte\n";
     cout<<"Vvedite 2 dlya vivoda spiska students dlya kagogo faculte and rate\n";
     cout<<"Vvedite 3 dlya vivoda spiska students, rodivshichsa posle zad. goda\n";
     cout<<"Vvedite 0 slya vihoda\n";
     cin >> i;
     switch (i)
     {case 1: cout<<"Vvedite facultet: "; cin>>n1; 
     for(j=0;j<n;j++){spis[j].set(n1);cout<<"=============================="<<endl; }break;
     case 2:cout<<"Vvedite facultet: "; cin>>n1;cout<<"Vvedite rate: ";cin>>r;
         for(j=0;j<n;j++){spis[j].set(n1,r);cout<<"=============================="<<endl;}break;
     case 3: cout<<"Vvedite year: "; cin>>date; 
         for(j=0;j<n;j++){spis[j].set(date);cout<<"=============================="<<endl;}break;
     } if (i>3) cout<<"oshibka,povtorite vvod\n";}
     while(i>0);
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Игорь с++
 Аватар для Игорь с++
429 / 452 / 15
Регистрация: 26.01.2011
Сообщений: 2,029
03.06.2013, 23:40     Как массив сделать динамическим? #2
C++
1
2
char *street;
street = new char [50];
sashka19
1 / 1 / 0
Регистрация: 21.11.2012
Сообщений: 16
04.06.2013, 00:07  [ТС]     Как массив сделать динамическим? #3
а куда это вставить?у меня ошибку постоянно выдает.
Игорь с++
 Аватар для Игорь с++
429 / 452 / 15
Регистрация: 26.01.2011
Сообщений: 2,029
04.06.2013, 11:02     Как массив сделать динамическим? #4
Цитата Сообщение от Игорь с++ Посмотреть сообщение
char *street;
первое объявление
Цитата Сообщение от Игорь с++ Посмотреть сообщение
street = new char [50];
перед первым использованием
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
04.06.2013, 11:06     Как массив сделать динамическим? #5
Утечкам памяти учишь? В конце надо проверить, существует ли массив и удалить его
C++
1
2
3
4
if (street)
{
 delete [] street;
}
, а объявлять так:
C++
1
char *street=NULL;
, или
C++
1
char *street=null_ptr;
.
Игорь с++
 Аватар для Игорь с++
429 / 452 / 15
Регистрация: 26.01.2011
Сообщений: 2,029
04.06.2013, 11:11     Как массив сделать динамическим? #6
Цитата Сообщение от taras atavin Посмотреть сообщение
Утечкам памяти учишь?
ну так во первых вопрос был-
Цитата Сообщение от sashka19 Посмотреть сообщение
нужно массив char street[50] сделать динамическим
а во вторых , ну как бы само сабой разумеющиеся - delete
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11819 / 6798 / 769
Регистрация: 27.09.2012
Сообщений: 16,871
Записей в блоге: 2
Завершенные тесты: 1
04.06.2013, 11:15     Как массив сделать динамическим? #7
Цитата Сообщение от taras atavin Посмотреть сообщение
существует ли массив и удалить его
C++
1
2
3
4
if (street)
{
 delete [] street;
}
Это проверка указателя на нуль. А delete [] с переданным нулем вещь вполне корректная

Ах, да... существование так не проверяется
C++
1
2
3
4
    char * p;
    if(p){
        delete [] p;
    }
ибо это условие полностью бесполезно
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
04.06.2013, 13:25     Как массив сделать динамическим? #8
Цитата Сообщение от Игорь с++ Посмотреть сообщение
а во вторых , ну как бы само сабой разумеющиеся - delete
При не знании всей темы.
Игорь с++
 Аватар для Игорь с++
429 / 452 / 15
Регистрация: 26.01.2011
Сообщений: 2,029
04.06.2013, 13:50     Как массив сделать динамическим? #9
Цитата Сообщение от taras atavin Посмотреть сообщение
При не знании всей темы.
а с общими принципи нельзя ознакомиться в google ?

Добавлено через 22 секунды
Цитата Сообщение от Игорь с++ Посмотреть сообщение
принципи
принципами
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.06.2013, 00:28     Как массив сделать динамическим?
Еще ссылки по теме:

C++ Как сделать двумерный массив
C++ Как правильно освободить память после работы с динамическим массивом
Массив фиксированного размера может быть динамическим? Что такое "динамический массив"? C++

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

Или воспользуйтесь поиском по форуму:
sashka19
1 / 1 / 0
Регистрация: 21.11.2012
Сообщений: 16
05.06.2013, 00:28  [ТС]     Как массив сделать динамическим? #10
и все равно не работает. программа запускается,ввожу количество учеников и всё обрывается
Yandex
Объявления
05.06.2013, 00:28     Как массив сделать динамическим?
Ответ Создать тему
Опции темы

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