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

Разобраться в принципе работы задачч. (Работа с динамической памятью через указатели. ) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Проблемки со строкой http://www.cyberforum.ru/cpp-beginners/thread512670.html
// filework.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream> #include <fstream> #include "stdafx.h" #include <stdlib.h> #include <stdio.h> #include <conio.h>
C++ Массивы, нахождение отрицательного элемента! найти в массиве отрицательный элемент и записать его в другой массив...не умею записать отрицательный элемент массива в другой массив то есть не знаю как из одной строчки данного массива записать в нужный нам массив больше 1-го значения мой код; ... int const k=5; int vid; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ if(mas<0) vid=mas;//????? http://www.cyberforum.ru/cpp-beginners/thread512658.html
C++ Анализ встречающихся слов в файле
Составить программу, анализирующую или обрабатывающую файл Input.txt(он должен содержать несколько строк, оканчивающихся символом перевода строки). Проанализировать содержимое файла и вывести количество встречающихся в нем слов(заданных в программе) на экран и в файл output.txt в следующем виде: example: anything 1 to 2 write 2 Список анализируемых слов должен составлять 5-10 слов и...
Моделирование игры в покер C++
Недавно начал изучать С++,использую книгу Харви М. Детела Как программировать на С++.В конце одной из глав есть упражнение,в котором нужно смоделировать игру в покер следующим образом. Сначала программа раздаёт 5 карт себе и играющему,затем она должна проанализировать свои карты и решить какие ей менять,а какие нет,после меняет человек и так 2 раза,затем вскрываются карты.При написании программы...
C++ исправить код программы, чтобы шли вычисления с помощью указателей http://www.cyberforum.ru/cpp-beginners/thread512511.html
#include<stdio.h> #define TWLV 12 #define YERS 5 void main() { float rain = { {5.2, 4.1, 6.2, 4.2, 2.1, 1.8, 0.2, 0.3, 1.1, 2.3, 6.1, 7.4}, {9.2, 9.8, 4.4, 3.3, 2.2, 0.8, 0.4, 0.0,0.6, 1.7, 4.3, 5.2},
C++ Вывести строки по убыванию Help me! Ввести n строк с консоли. Упорядочить и вывести строки в порядке возрастания (убывания) значений их длины выводит только 1 строку, самую длинную. Как вывести все, отсортированные? #include <iostream> #include <string.h> #include <stdio.h> using namespace std; подробнее

Показать сообщение отдельно
Count
0 / 0 / 0
Регистрация: 06.11.2011
Сообщений: 24
05.03.2012, 13:29     Разобраться в принципе работы задачч. (Работа с динамической памятью через указатели. )
Вот условие задачи:
Создать массив из N целых чисел, N вводит пользователь. Заполнить массив случайным образом в диапазоне от 1 до 12. Каждое число это оценка по 12-ти бальной системе. Перевести эти оценки в 5-ти бальную систему, где двойка от 1 до 3 включительно, тройка от 4 до 6, четверка от 7 до 9, пятерка от 10 до 12. Пользуясь указателем на массив целых чисел, посчитать процент двоек, троек, четверок и пятерок. Результат изобразить графически с помощью диаграммы, например:

2: **********
3: ********************
4: ****************************************
5: ******************************

Решение:
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
#include<windows.h>
#include<time.h>
#include<iostream>
 
#define BAR_MAX 10      //число символов для отображения 100% на экране
 
using namespace std;
 
int main()
{
        int i;                  //переменная цикла
        int N;                  //количество элементов в массиве
        int *Marks;             //массив оценок
        int Twos=0;             //количество двоек
        int Threes=0;   //количество троек
        int Fours=0;    //количество четверок
        int Fives=0;    //количество пятерок
        int NumStars;   //количество * для отображения % на диаграмме
        srand(time(NULL));      
        cout<<"Enter number of elements:"<<endl;
        cin>>N;
        Marks=new int[N];       
        cout<<"Marks in the 12th system:"<<endl;
        //заполняем массив отметок числами от 1 до 12
        for(i=0;i<N;i++) 
        {
                Marks[i]=rand()%12+1;
                cout<<Marks[i]<<" ";
        }
        cout<<endl<<"Marks in the 5th system:"<<endl;
        //переводим в систему 1-5
        for(i=0;i<N;i++)
        {
                if((Marks[i]>=1)&&(Marks[i]<=3)) Marks[i]=2;
                else if((Marks[i]>=4)&&(Marks[i]<=6)) Marks[i]=3;
                else if((Marks[i]>=7)&&(Marks[i]<=9)) Marks[i]=4;
                else Marks[i]=5;
                cout<<Marks[i]<<" ";
        }
        cout<<endl;     
        //собираем статистику
        i=0;
        while(i<N)
        {
                switch(*Marks)
                {
                        case 2: Twos++;break;
                        case 3: Threes++;break;
                        case 4: Fours++;break;
                        case 5: Fives++;break;
                }
                Marks++;
                i++;
        }
        //рисуем диаграмму
        cout<<"2:";
        NumStars=Twos*BAR_MAX/N;
        for(i=0;i<NumStars;i++) cout<<"*";
        cout<<endl;
        cout<<"3:";
        NumStars=Threes*BAR_MAX/N;
        for(i=0;i<NumStars;i++) cout<<"*";
        cout<<endl;
        cout<<"4:";
        NumStars=Fours*BAR_MAX/N;
        for(i=0;i<NumStars;i++) cout<<"*";
        cout<<endl;
        cout<<"5:";
        NumStars=Fives*BAR_MAX/N;
        for(i=0;i<NumStars;i++) cout<<"*";
        cout<<endl;     
        getchar();
        delete []Marks;
        return 0;
}
Можете пожалуйста "расписать" все что происходит в этом коде, плюс отдельные вопросы в "комментариях" (//).

код с вопросами:
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
#include<windows.h> // Для чего <windows.h>
#include<time.h> // Для чего <time.h>?
#include<iostream>
 
#define BAR_MAX 10      //Что такое #define, как он работает, что означает BAR_MAX 10, и как это понимать? 
 
using namespace std;
 
int main()
{
        int i;                
        int N;                  
        int *Marks;     // Что означает знак "*"       
        int Twos=0;             
        int Threes=0;   
        int Fours=0;    
        int Fives=0;   
        int NumStars;   
        srand(time(NULL));      
        cout<<"Enter number of elements:"<<endl;
        cin>>N;
        Marks=new int[N];       
        cout<<"Marks in the 12th system:"<<endl; // Что происходит здесь? 
               for(i=0;i<N;i++) // Что делает for?
        {
                Marks[i]=rand()%12+1; // Что происходит внутри for?
                cout<<Marks[i]<<" ";
        }
        cout<<endl<<"Marks in the 5th system:"<<endl; // Что делается тут?
                for(i=0;i<N;i++) //Что делает for?
        {
                if((Marks[i]>=1)&&(Marks[i]<=3)) Marks[i]=2; //Что происходит внутри for?
                else if((Marks[i]>=4)&&(Marks[i]<=6)) Marks[i]=3;
                else if((Marks[i]>=7)&&(Marks[i]<=9)) Marks[i]=4;
                else Marks[i]=5;
                cout<<Marks[i]<<" ";
        }
        cout<<endl;     
        i=0;
        while(i<N) // Что делает  while
        {
                switch(*Marks) // Что делает  switch
                {
                        case 2: Twos++;break; // Что происходит внутри switch
                        case 3: Threes++;break; // для чего case, и как это все работает? 
                        case 4: Fours++;break;
                        case 5: Fives++;break;
                }
                Marks++; // Что происходит здесь? 
                i++; // Здесь тоже)
        }
        cout<<"2:"; // Как рисуется диаграма? 
        NumStars=Twos*BAR_MAX/N;
        for(i=0;i<NumStars;i++) cout<<"*";
        cout<<endl;
        cout<<"3:";
        NumStars=Threes*BAR_MAX/N;
        for(i=0;i<NumStars;i++) cout<<"*";
        cout<<endl;
        cout<<"4:";
        NumStars=Fours*BAR_MAX/N;
        for(i=0;i<NumStars;i++) cout<<"*";
        cout<<endl;
        cout<<"5:";
        NumStars=Fives*BAR_MAX/N;
        for(i=0;i<NumStars;i++) cout<<"*";
        cout<<endl;     
        getchar();// ЧТо такое getchar, и что оно делает? 
        delete []Marks; // Что происходит здесь?
        return 0; // Что происходит здесь?
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 21:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru