Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

03.06.2013, 23:34. Просмотров 451. Ответов 9
Метки нет (Все метки)

нужно массив 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2013, 23:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как массив сделать динамическим? (C++):

Массив фиксированного размера может быть динамическим? Что такое "динамический массив"? - C++
есть код string line; char *dup=new char; Я так понимаю создается динамический массив фиксированного размера длинной символов...

Двумерный массив с динамическим выделением памяти - C++
Помогите пожалуйста вставить вот в эту вот задачу динамическое выделение памяти: #include &lt;iostream&gt; using namespace std; ...

Как правильно создать динамическим массивом - C++
Надо найти маршрут коня на доске произвольного, ограниченного только памятью машины, размера. Использование рекурсивного алгоритма...

Как правильно освободить память после работы с динамическим массивом - C++
Здравствуйте! Помогите понять в чём проблема при освобождении памяти. Простой пример: #define _CRT_SECURE_NO_WARNINGS #include...

пытаюсь сделать реализацию через считывание из файла кол-ва чисел, i,но незнаю как сделать реализацию из файла в массив и сортировки. - C++
В файле input.txt находится неизвестное количество вещественных чисел в интервале . Выцапарать их оттуда, отсортировать по убыванию модуля...

Как сделать массив классов? - C++
Привет, помогите разобраться, что здесь не так, в чём ошибка? Можно ли делать массив классов, и можно ли пример его роботы, буду...

9
Игорь с++
437 / 460 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
03.06.2013, 23:40 #2
C++
1
2
char *street;
street = new char [50];
1
sashka19
1 / 1 / 0
Регистрация: 21.11.2012
Сообщений: 16
04.06.2013, 00:07  [ТС] #3
а куда это вставить?у меня ошибку постоянно выдает.
0
Игорь с++
437 / 460 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
04.06.2013, 11:02 #4
Цитата Сообщение от Игорь с++ Посмотреть сообщение
char *street;
первое объявление
Цитата Сообщение от Игорь с++ Посмотреть сообщение
street = new char [50];
перед первым использованием
0
taras atavin
3570 / 1753 / 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;
.
0
Игорь с++
437 / 460 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
04.06.2013, 11:11 #6
Цитата Сообщение от taras atavin Посмотреть сообщение
Утечкам памяти учишь?
ну так во первых вопрос был-
Цитата Сообщение от sashka19 Посмотреть сообщение
нужно массив char street[50] сделать динамическим
а во вторых , ну как бы само сабой разумеющиеся - delete
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 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;
    }
ибо это условие полностью бесполезно
0
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
04.06.2013, 13:25 #8
Цитата Сообщение от Игорь с++ Посмотреть сообщение
а во вторых , ну как бы само сабой разумеющиеся - delete
При не знании всей темы.
0
Игорь с++
437 / 460 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
04.06.2013, 13:50 #9
Цитата Сообщение от taras atavin Посмотреть сообщение
При не знании всей темы.
а с общими принципи нельзя ознакомиться в google ?

Добавлено через 22 секунды
Цитата Сообщение от Игорь с++ Посмотреть сообщение
принципи
принципами
0
sashka19
1 / 1 / 0
Регистрация: 21.11.2012
Сообщений: 16
05.06.2013, 00:28  [ТС] #10
и все равно не работает. программа запускается,ввожу количество учеников и всё обрывается
0
05.06.2013, 00:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.06.2013, 00:28
Привет! Вот еще темы с ответами:

Как сделать указатель на массив - C++
Здрасти. Как мне сделать указатель на массив: string stud= {{&quot;49000&quot;, &quot;Eddy&quot;, &quot;Vedder&quot;, &quot;dzienne&quot;, &quot;19&quot;}, {&quot;49001&quot;, &quot;Roger&quot;,...

Как сделать двумерный массив - C++
Доброго времени суток. Допустим с клавиатуры вводятся 25 значений. Как их записать в двумерный массив(чтоб матрица образовалась?. Помогите...

Как сделать динамический массив из указателей? - C++
Всем привет! Как сделать динамический массив я знаю,и как сделать массив из указателей я знаю,а как сделать динамический массив из...

Как сделать динамический массив объектов? - C++
IContainer *C = new myString; Есть такая запись, нужно сделать массив из C. IContainer *C = new myString; такое не...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

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