Обсуждение Программирование на C/C++

JC Denton

Ословед
А почему массив вдруг двумерный?

Код:
#include <iostream>
#include <algorithm>
#include <vector>

int main()
{
    using namespace std;
    setlocale(LC_ALL, "Russian");
    cout << "Введите x\n";

    double x;
    cin >> x;

    vector<double> array(11);
    double power = 1;        
    for_each(array.begin(), array.end(), [&power,x](double& y) { y = power; power *= x; });
    for_each(array.begin(), array.end(), [](double x) { std::cout << x << " "; } );    
}
 
А почему массив вдруг двумерный?

Код:
#include <iostream>
#include <algorithm>
#include <vector>

int main()
{
    using namespace std;
    setlocale(LC_ALL, "Russian");
    cout << "Введите x\n";

    double x;
    cin >> x;

    vector<double> array(11);
    double power = 1;        
    for_each(array.begin(), array.end(), [&power,x](double& y) { y = power; power *= x; });
    for_each(array.begin(), array.end(), [](double x) { std::cout << x << " "; } );    
}

Квадратная матрица подразумевается, задание на работу с двумерными массивами просто, поэтому только массив и только двумерный:). Учитывая мое 3-х недельное знакомство с с++ такой вариант меня пугает, ибо не понимаю что тут реализовано:)
 
Квадратная матрица подразумевается, задание на работу с двумерными массивами просто, поэтому только массив и только двумерный:). Учитывая мое 3-х недельное знакомство с с++ такой вариант меня пугает, ибо не понимаю что тут реализовано:)
Надо что-то вроде vector<vector<int>> я думаю. :crazy2:
 
Надо что-то вроде vector<vector<int>> я думаю. :crazy2:

По заданию надо массив использовать, типа massive[x][y]
Вот как то так у меня начало вырисовывается:

Код:
#include<stdio.h>
#include<iostream.h>
#include<math.h>
int main()
{
    cout << "Eta programma stroit matrix deistvitelnux chisel\n"
         << "na osnove vvedennogo parametra X\n"
         << "Vvedite znachenie parametra X:";
    float X;
    cin >> X;
    float mtrx[10][10];
    int j=0;
    int i=0;
    int q=0;
    while(q<=9&&i<=9)
    {
        mtrx[i][j]=pow(X,(0+q));
        i++;
        q++;
    }
    

    cout << mtrx[8][0];
}
 
По заданию надо массив использовать, типа massive[x][y]
Вот как то так у меня начало вырисовывается:

Код:
#include<stdio.h>
#include<iostream.h>
#include<math.h>
int main()
{
    cout << "Eta programma stroit matrix deistvitelnux chisel\n"
         << "na osnove vvedennogo parametra X\n"
         << "Vvedite znachenie parametra X:";
    float X;
    cin >> X;
    float mtrx[10][10];
    int j=0;
    int i=0;
    int q=0;
    while(q<=9&&i<=9)
    {
        mtrx[i][j]=pow(X,(0+q));
        i++;
        q++;
    }
    

    cout << mtrx[8][0];
}
У заголовочников стандартной библиотеки C++ .h в конце не пишется. Да и зачем вам stdio, вам достаточно iostream и cmath. И да, для функций cout и cin обязательно нужно указывать, что они из пространства имен std.
 
У заголовочников стандартной библиотеки C++ .h в конце не пишется. Да и зачем вам stdio, вам достаточно iostream и cmath. И да, для функций cout и cin обязательно нужно указывать, что они из пространства имен std.

Хммм... Ну до этого все работало и без указания std, я code::blocks использую. Там проблема была изначально только в том, что он iostream не находил библиотеку. Вот пример, все отлично компилится и работает:
Код:
#include<iostream.h>
int main()
{
    char sz[256], szZamena[256], szEnd[256];
    int i=0,k=0;
    cout << "Vvedite stroku: \n";
    cin.getline(sz,256);

    if(sz[0]=='E' && sz[1]=='t' && sz[2]=='o' && sz[3]==' ')
    {
        sz[0]='T';
        sz[1]='o';
        sz[2]=' ';
    }

    while(sz[i]!='\0')
    {
          if(((sz[i]=='e'||sz[i]=='E')&&(sz[i-1]==' '||i==0)) && sz[i+1]=='t' && sz[i+2]=='o' && (sz[i+3]==' '||sz[i+3]=='\0'))
          {
                 i++;
          }
          else
          {
                  szZamena[k]=sz[i];
                  k++;
                  i++;
          }
    }
	szZamena[k]='\0';
	cout << szZamena;
}
 

JIECHuK

Ословед
Хммм... Ну до этого все работало и без указания std, я code::blocks использую. Там проблема была изначально только в том, что он iostream не находил библиотеку. Вот пример, все отлично компилится и работает:

компилятор не борланд с++ случаем? тогда не удивительно, что без namespace работает и ругается, если .h убрать
 

JC Denton

Ословед
И да, для функций cout и cin обязательно нужно указывать, что они из пространства имен std.

Не сочтите за занудство, но cout и cin - это объекты-потоки с перегруженными операторами сдвига, а не функции.


Karbofos, насчет iostream.h - просто постарайтесь не использовать этот заголовочный файл, он устарел.
 

    Just Talk

    очки: 33
    Да я в курсе. (;

istomineo

Ословед
Знающие люди, подскажите: можно ли подключить стороннюю dll(Simulink или Matlab) к с++ проекту?
 

ThreasStish

Ословед
Вопрос больше не по С++ сколько по Borlad C++ Builder 6. Есть на форме компонент ScrollBox. Его клиентская область раза в 2 больше размера экрана монитора во вертикали, Свойство AutoScroll = true. Полосы прокрутки есть и горизонтальаня и вертикальная. Каким образом сделать так, чтобы при перетаскивании ползунков страница ехала синхронно? Я чет не пойму никак ато. Голова уже не соображает просто и в нете ниче хорошего не найду. Ато мне не особо нравится, что обновление страницы происходит только тогда, когда сдвинешь полосу прокрутки и отпустишь и только потом сдвинется сама страница
 
Вопрос больше не по С++ сколько по Borlad C++ Builder 6. Есть на форме компонент ScrollBox. Его клиентская область раза в 2 больше размера экрана монитора во вертикали, Свойство AutoScroll = true. Полосы прокрутки есть и горизонтальаня и вертикальная. Каким образом сделать так, чтобы при перетаскивании ползунков страница ехала синхронно? Я чет не пойму никак ато. Голова уже не соображает просто и в нете ниче хорошего не найду. Ато мне не особо нравится, что обновление страницы происходит только тогда, когда сдвинешь полосу прокрутки и отпустишь и только потом сдвинется сама страница
в свойствах скрола выставь:
ScrollBox1->VertScrollBar->Tracking = true;
 

    ThreasStish

    очки: 21
    Спс за помощь, тока оно и так стоит тру и нифига не помогает..
Задача на с++

Условие:
Дан массив, содержащий сведения о книгах. Сведения о каждой из книг-это фамилия автора, название и год издания. Определить книги, изданные за период с 1970 по 1990 годы. Если таких книг нет, то сообщить об этом.

Решил следующим образом:
Код:
#include<stdio.h>
#include<iostream.h>
#include<string.h>

struct libData
    {
        public:
        char autorName[128];
        char bookName[128];
        int godIzd;
    };

    int getLib(libData& izd)
    {
        cout << "\nEnter autor: ";
        cin >> izd.autorName;
        if(stricmp(izd.autorName, "exit")==0)
        {
            return 0;
        }
        cout << "Enter bookname: ";
        cin >> izd.bookName;
        cout << "Enter god izdaniya: ";
        cin >> izd.godIzd;
        return 1;
    }

    void izdData(libData& izd)
    {
        if(izd.godIzd>=1970&&izd.godIzd<=1990)
        {
            cout << "\nAutor: "<<izd.autorName
                 << "\n"
                 << "Book name: "<<izd.bookName
                 << "\n"
                 << "God izdaniya: "<<izd.godIzd
                 << "\n";

        }
    }

int main(int nArg, char* pszArgs[])
{
    const int MAX=25;
    libData izd[MAX];
    cout << "Programma poiska knig za period 1970-1990 god.\n"
         << " Vvedite 'exit' v pole autor dlya vuhoda\n";
         int index=0;
         while(getLib(izd[index])&&index<MAX)
         {
             index++;
         }
         cout << "\nElementu:\n";
         for(int i=0;i<index;i++)
         {
             izdData(izd[i]);
         }

         return 0;
}
Застопорился на последнем пункте, о выводе сообщения если в указанном периоде книг не оказалось.
Прошу совета.
 

AlexDev

Ословед
Условие:
Дан массив, содержащий сведения о книгах. Сведения о каждой из книг-это фамилия автора, название и год издания. Определить книги, изданные за период с 1970 по 1990 годы. Если таких книг нет, то сообщить об этом.
....
Застопорился на последнем пункте, о выводе сообщения если в указанном периоде книг не оказалось.
Прошу совета.

Как вариант, на вскидку, переделайте функцию izdData(..) примерно вот так:

Код:
bool izdData(libData& izd)
    {
        if(izd.godIzd>=1970&&izd.godIzd<=1990)
        {
            cout << "\nAutor: "<<izd.autorName
                 << endl
                 << "Book name: "<<izd.bookName
                 << endl
                 << "God izdaniya: "<<izd.godIzd
                 << endl;
            return true;
        }
        return false;
    }

и в main-е:

Код:
bool bFlag = false;
for(int i=0;i<index;i++)
{
    bFlag = izdData(izd[i]);
}

if (!bFlag) 
{
    cout << "Books not found." << endl;
}

P.S. Ошибся. Не совсем так. Код должен быть немного другим. Как вариант:
Код:
int iCount = 0;
for(int i=0;i<index;i++)
{
    if izdData(izd[i]) iCount++;
}

if (iCount == 0) 
{
    cout << "Books not found." << endl;
}
 
Непонятный кусок кода

Код:
{
if izdData(izd[i]) iCount++;
}

Этот кусок не понял, не компилится.
 
Сверху