Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Помогите, пожалуйста, создать код на С++ (http://www.tehnari.ru/f41/t88133/)

Киры4 08.05.2013 18:01

Помогите, пожалуйста, создать код на С++
 
Помогите написать прогу на С++!! сроки горят. Понимаю, что для спецов это просто, но времени реально нет(учусь на вечернем)
Одно из двух хотя бы?
1)
Дана последовательность из n вещественных чисел.Вычислить количество нулевых элементов последовательности и произведение отрицательных элементов. Если вычисление невозможно, выдать об этом сообщение с указанием причины
2)Составить программу для вычисления y по заданной формуле. Проверить работу программы на контрольных примерах (тестах): в нормальных условиях, при граничных значениях входных данных и в исключительных ситуациях.
y= ax^3 если x>a
(ax^3+b)^2 если x<a
ab/sqrt(x)+b если x=a

kreol 13.05.2013 05:11

1)
Код:

#include <iostream>

using namespace std;

int main()
{
    int n=5, c=0;
   
    float *a = new float[n], m=1;
    a[0] = 0; a[1] = 0; a[2]= -3.3; a[3] = 2; a[4] = -10;
    for(int i=0; i<n; i++)
    {
        if(a[i]==0){
            c++;
        }
        else if(a[i]<0){
            m*=a[i];
        }
    }
   
    cout << c << " " << m << endl;
   
    delete[] a;
    return 0;
}

По последнему, я так понял надо затабулировать функцию? какой шаг задать для х?

Киры4 13.05.2013 12:19

благодарю!
Насчет шага...эээ...сорри за тупняк- это как? нам по этому поводу преп ничего не разьяснял.

Vladimir_S 13.05.2013 12:44

Цитата:

Сообщение от kreol (Сообщение 907335)
По последнему, я так понял надо затабулировать функцию? какой шаг задать для х?

Андрей, тут, как я понял, табулировать не нужно. Просто вводишь с консоли х, а программа выдает у. Что требуется, так это прописать обход ситуаций извлечения корня из отрицательного числа и нуля в знаменателе.

Киры4 13.05.2013 13:29

Владимир, верно. Ввод с консоли.Теперь и я понял суть вопроса.

kreol 13.05.2013 20:47

ясно
2) вот одна версия
Код:

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    float x, y, a, b;
    cout << "write x=";
    cin >> x;
    cout << "write a=";
    cin >> a;
   
    if(x>a)
    {
        y = a*pow(x, 3);
    }
    else if(x<a)
    {
        cout << "write b=";
        cin >> b;
        y = pow(a*pow(x, 3)+b, 2);
    }
    else
    {
        if(x>0)
        {
            cout << "write b=";
            cin >> b;
            y=a*b/sqrt(x)+b;
        }
        else
        {
            cout << endl << "Wrong x. x have to be > 0" << endl;
            return 1;
        }
    }
   
    cout << endl << "y=" << y << endl;
    return 0;
}

а вот вторая)) версия
Код:

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    float x, y, a, b;
    cout << "write x=";
    cin >> x;
    cout << "write a=";
    cin >> a;
   
    if(x>a)
    {
        y = a*pow(x, 3);
    }
    else if(x<a)
    {
        cout << "write b=";
        cin >> b;
        y = pow(a*pow(x, 3)+b, 2);
    }
    else
    {
        cout << "write b=";
        cin >> b;
       
        if(x>0)
        {
            y=a*b/sqrt(x)+b;
        }
        else if(x<0)
        {
            y=a*b/sqrt(abs(x));
            cout << y <<"*i + " << b << endl;
            return 0;
        }
        else
        {
            cout << "Infinity";
            return 0;
        }
    }
   
    cout << endl << "y=" << y << endl;
    return 0;
}


Киры4 14.05.2013 13:15

Спасибо, народ!!!реально выручили.

А вот здесь задание- найти отношение минимального элемента к максимальному среди элементов, предшествующих первому нулевому.Сделал отношение, предшествующее первому положительному. Как по-умному указать поиск первого нулевого? Еще одним флагом, что ли?

#include "stdafx.h"
#include <iostream>
#include <locale.h>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL,"Russian");
int n;
cout << "\nВведите количество элементов последовательности n = ";
cin >> n;
float a;
float min = 999;
float max = -999;
int fl = 0;
int i = 0;
while (i < n)
{
cout << "\nВведите элемент: ";
cin >> a;
if (a < min)
min = a;
if (fl < 1)
{
if (a <= 0)
{
if (a > max)
max = a;
}
else
fl = 1;
}
i++;
}
// cout << "\nmin = " << min;
// cout << "\nmax = " << max;
// cout << "\nfl = " << fl;
if (fl < 1)
cout << "\nНет положительных элементов.\n";
else
{
if (-999 == max)
cout << "\nНет элементов перед первым положительным.\n";
else
{
if (max == 0)
cout << "\nДеление на 0!\n";
else
{
float rel = min/max;
cout << "\nОтношение минимального элемента к максимальному среди предшествующих первому положительному: " << rel << "\n";
}
}
}
system("PAUSE");
return 0;
}


Часовой пояс GMT +4, время: 16:29.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.