Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.01.2012, 14:57   #1
mrG0bliN
Пользователь
 
Регистрация: 24.01.2012
Сообщений: 20
Печаль [СИ++ Builder(не консоль)]Создание простейшего массива с обьяснением

Читаю сейчас учебник про массивы, ничего догнать не могу...
Скинули мне код, тут вообще кашмар....
мб кто поможет мне разобраться с кодом и что где какая строчка для чего?? И если можно более простым языком... а то "// Декларация одномерного массива" это трудно для понимания...


Код:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
int n = 10;
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
 {
        randomize();			// Изменение начального адреса для random()
        StringGrid1->ColCount=n;
        for(int i=0; i<n;i++)		// Заполнение массива А случайными числами
        StringGrid1->Cells[i][0] = IntToStr(random(21)-10);
 }
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit1KeyUp(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
 if (Edit1->Text!="")
  if (StrToInt(Edit1->Text)>10)
    {
 ShowMessage("Максимальное количество 10!");
  n=10;
   Edit1->Text = "10";
        }

if (Key>47 && Key<59)
  {
   n=StrToInt(Edit1->Text);
    StringGrid1->ColCount=n;
     FormCreate(Form1);
        }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormActivate(TObject *Sender)
{
  Edit2->Text="";
  Edit1->Text=IntToStr(n);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  int i, S = 0, a[10], num1=-1, num2=-1;		// Декларация одномерного массива
//Заполнение массива А элементами из таблицы StringGrid1
 for(i=0; i<n;i++)
  {
    a[i]=StrToInt(StringGrid1->Cells[i][0]);
    if (a[i]<0 && num1==-1)
      num1=i;
    else
    if (a[i]<0 && num1!=-1 && num2==-1)
      num2=i;
  }
  if (num1!=-1 && num2!=-1)
  {
    for(i=num1+1; i<num2;i++)
      S+=a[i];
    Edit2->Text=" Сумма равна "+IntToStr(S);
  }
  else
    Edit2->Text=" Нет двух отрицательных элементов";


}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
   FormCreate(Form1);
}
//---------------------------------------------------------------------------
mrG0bliN вне форума Ответить с цитированием
Старый 26.01.2012, 17:50   #2
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

не сочтите за особую грубость, но если вам обычное объявление масива и ещё нескольких переменных в одной строке кажется чем то непонятным, может пара задуматься о другой сфере деятельности нежели программирование?
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 26.01.2012, 19:00   #3
mrG0bliN
Пользователь
 
Регистрация: 24.01.2012
Сообщений: 20
По умолчанию

Цитата:
Сообщение от VIK_aka_TOR Посмотреть сообщение
не сочтите за особую грубость, но если вам обычное объявление масива и ещё нескольких переменных в одной строке кажется чем то непонятным, может пара задуматься о другой сфере деятельности нежели программирование?
я не отрицаю что "я дурачок", но если бы вы мне немного помогли... я бы смог продвинуться дальше и стать чуточку умнее
mrG0bliN вне форума Ответить с цитированием
Старый 26.01.2012, 19:04   #4
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

и что тебе тут непонятно... так как все описывать и досканально чрезмерно влом...)
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 26.01.2012, 19:22   #5
Hal9000
Пользователь
 
Регистрация: 24.01.2012
Сообщений: 15
По умолчанию

Я вот тоже новичек в C++, я что-то не могу нащупать в коде main(), разве не с нее начинается работа программы?
Мне более важно знать о вот этом операторе "->". На сколько я знаю, он осуществляет переход к полям структуры через указатель. Если так, то в какой библиотеке он описан (stdlib не работает)?
Hal9000 вне форума Ответить с цитированием
Старый 26.01.2012, 19:31   #6
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

Цитата:
Сообщение от Hal9000 Посмотреть сообщение
Я вот тоже новичек в C++, я что-то не могу нащупать в коде main(), разве не с нее начинается работа программы?
Мне более важно знать о вот этом операторе "->". На сколько я знаю, он осуществляет переход к полям структуры через указатель. Если так, то в какой библиотеке он описан (stdlib не работает)?
вы сами ответили на свой вопрос... вы новичок... и в теме указано что это не под консольный проект... и на билдере написаный. значок -> тут используется для использования определенных свойств компонентов... а main в данном случае и в правду не требуется, т.к. это объектно-ориентированный раздел программирования...
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 26.01.2012, 19:40   #7
Hal9000
Пользователь
 
Регистрация: 24.01.2012
Сообщений: 15
Вопрос

Я не могу добиться чтобы "->" заработал, не пойму что надо подключить. stdlib не работает.

Наверное не правильно выражаюсь так например чтобы операторы "<<,>>" заработали надо написать "using namespase std". А что нужно написать чтобы заработал "->?

Последний раз редактировалось Hal9000; 26.01.2012 в 19:45.
Hal9000 вне форума Ответить с цитированием
Старый 26.01.2012, 19:40   #8
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Цитата:
вы сами ответили на свой вопрос... вы новичок...
Что это за ответ такой?
"Вы новичёк"
Цитата:
а main в данном случае и в правду не требуется, т.к. это объектно-ориентированный раздел программирования...
main в данном случае не используется потому что представленный листинг кода, это реализация одного из модулей!
Точнее Модуль
Цитата:
Код:
#include "Unit1.h"
А main ну точнее WinMain описывается в файле проекта!

Цитата:
Я не могу добиться чтобы "->" заработал, не пойму что надо подключить. stdlib не работает.
как бе одна, тема один вопрос!
p.s.: Покажите код!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303

Последний раз редактировалось Stilet; 26.01.2012 в 20:55.
Hacker19_90 вне форума Ответить с цитированием
Старый 26.01.2012, 19:52   #9
Hal9000
Пользователь
 
Регистрация: 24.01.2012
Сообщений: 15
Смущение

Цитата:
Сообщение от Hacker19_90 Посмотреть сообщение
как бе одна, тема один вопрос!
Извините, что вторгаюсь на территорию чужого вопроса.

Вот код(реализация связного списка):
Код:
#include <iostream>
#include <stdlib.h>
#include <string.h>

struct node
{
    char word[80];
    node* ptrToNextNode;
};

void fillList(node*& list);
void prntList(node* list);
void makeList(node*& list);

using namespace std;

int main()
{
    node* list;
    fillList(list);
    prntList(list);
    return 0;
}
void fillList(node*& list)
{
    makeList(list);
    cout<<"Input word end press 'Enter'(input '.' for exit): ";
    cin<< list -> word;
    if(!strcmp(".",list->word))
    {
        delete list;
        list=NULL;
    }
    node *current, *last;
    current=list;
    while(!strcmp(".",current->word))
    {
        last=new node;
        cout<<"Input word end press 'Enter'(input '.' for exit): ";
        cin<<last->word;
        if(!strcmp(".",last->word))
        {
            delete last;
            last=NULL;
        }
        current->ptrToNextNode=last;
        current=last;
    }
}
void makeList(node*& list)
{
    list=new node;
    if(list=NULL)
    {
        cout<<"Not enought memory! Terminate program...";
        exit(1);
    }
}
void prntList(node* list)
{
    if(list=NULL)
    {
        cout<<"This list is empty";
    }
    else
    {
        while(list!=NULL)
        {
            cout<<list->word<<endl;
            list=list.ptrToNextNode;
        }
        cout<<"//////////End of list//////////";
    }
}
Hal9000 вне форума Ответить с цитированием
Старый 26.01.2012, 19:54   #10
Hal9000
Пользователь
 
Регистрация: 24.01.2012
Сообщений: 15
Смущение

Я уже вижу свои косяки вроде cin<<... Ох кошмар..
Со мной всегда так, когда начинаю объяснять свою проблему другому, начинаю видеть проблемные места ))

Вот исправленный код, который все равно выдает ошибку при выполнении(после первого ввода):

Код:
#include <iostream>
#include <stdlib.h>
#include <string.h>

struct node
{
    char word[80];
    node* ptrToNextNode;
};

void fillList(node*& list);
void prntList(node* list);
void makeList(node*& list);

using namespace std;

int main()
{
    node* list;
    makeList(list);
    fillList(list);
    prntList(list);
    return 0;
}
void fillList(node*& list)
{
    makeList(list);
    cout<<"Input word end press 'Enter'(input '.' for exit): ";
    cin>>list->word;
    cout<<"OK ";
    cout<<list->word;
    if(!strcmp(".",list->word))
    {
        delete list;
        list=NULL;
    }
    node *current, *last;
    current=list;
    while(current!=NULL)
    {
        last=new node;
        cout<<"Input word end press 'Enter'(input '.' for exit): ";
        cin>>last->word;
        if(!strcmp(".",last->word))
        {
            delete last;
            last=NULL;
        }
        current->ptrToNextNode=last;
        current=last;
    }
}
void makeList(node *&list)
{
    list=new node;
    if(list=NULL)
    {
        cout<<"Not enough memory! Terminate program...";
        exit(1);
    }
}
void prntList(node *list)
{
    if(list=NULL)
    {
        cout<<"This list is empty";
    }
    else
    {
        while(list!=NULL)
        {
            cout<<list->word<<endl;
            list=list->ptrToNextNode;
        }
        cout<<"//////////End of list//////////";
    }
}

Последний раз редактировалось Hal9000; 26.01.2012 в 20:23.
Hal9000 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++Builder консоль valikgor C++ Builder 3 11.04.2010 09:24
Помогите с обьяснением кода Alex1991 Помощь студентам 4 31.03.2009 18:21
Создание простейшего обьявления coramba Microsoft Office Word 3 11.07.2008 12:47
Создание простейшего автоматизированного рабочего места [QBasic, Pascal, С#] toad88 Фриланс 1 18.12.2007 12:33