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

  • Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Задача: Одномерные массивы, работа с четными и ничет. элементами

  • Автор темы Sheriff92
  • Дата начала
Статус
Закрыто для дальнейших ответов.
S

Sheriff92

Задание:
С помощью датчика случайных чисел сформировать два массива X и Y
размерностью 100 и 200 чисел в диапазоне от 0 до 1 и от 0 до 100 соответственно. По
массиву Х - найти сумму всех элементов с четными номерами, по массиву Y – сумму всех
элементов с нечетными номерами.
Ну и сумма у меня пока не доделанная. Если можете, то и её посоветуйте как делать?

Добавлено: #include"stdafx.h"
#include<conio.h>
#include<math.h>
#include<stdlib.h>


void main()
{
constint N1=1, N2=100;
int x[N1], y[N2], m=100, p=200, i, j, sNech, sCh;
scanf ("%d%d",&m,&p);
random();
for (i=0;i<m;i++)
x=random();
printf ("sformirovanniy massiv x:\n");
for (i=0;i<m;i++)
printf ("%d",x);
sNech=0;
for (i=0;i<m;i++)
sNech=sNech+x;
printf ("\nsumma elementov massiva x=%d",sNech);

for (j=0;j<p;j++)
y[j]=random();
printf ("sformirovanniy massiv y:\n");
for (j=0;j<p;j++)
printf ("%d",y[j]);
sCh=0;
for (j=0;j<p;j++)
sCh=sCh+y[j];
printf ("\nsumma elementov massiva y=%d",sCh);
getch();
}
 
D

DarkKnight

C++:
#include <iostream>
#include <conio.h>
#include <time.h>

using namespace std;
void main()
{

const int N1=1, N2=100; //Что то в N1 - очень мало элементов
int x[N1], y[N2], m=100, p=200, i, j, sNech, sCh;
scanf ("%d%d",&m,&p);
//random(); // чет я такого не знаю наверное тут randomize();
//но у меня и этого нету так что так инициализирую
srand(time(NULL));
for (i=0;i<m;i++)
//x[i]=random(); //незнаю опять же такой функции
x[i] = rand();
printf ("sformirovanniy massiv x:\n");
for (i=0;i<m;i++)
printf ("%d ",x[i]);
sNech=0;
for (i=0;i<m;i++)
sNech=sNech+x[i];
printf ("\nsumma elementov massiva x=%d",sNech);

for (j=0;j<p;j++)
//y[j]=random();
y[j] = rand();
printf ("sformirovanniy massiv y:\n");
for (j=0;j<p;j++)
printf ("%d ",y[j]);
sCh=0;
for (j=0;j<p;j++)
sCh=sCh+y[j];
printf ("\nsumma elementov massiva y=%d",sCh);
getch();
}
 

Вложения

  • n1.jpg
    n1.jpg
    22,7 КБ · Просмотры: 430
S

Sheriff92

так N1 - это разве не диапазон чисел из которых будет составлен массив рандомом? я по одной книжке делал, там так сказано. Например: если надо чтоб массив был заполнен рандомом из чисел от 1 до 15, то по книге N1=15 X[15]

А про функции random скорей всего да, это у меня ошибки были!

а как задать сумму элементов массива с нечётными или чётными номерами?
 
D

DarkKnight

так N1 - это разве не диапазон чисел из которых будет составлен массив рандомом?
Нет :))))
я по одной книжке делал, там так сказано. Например: если надо чтоб массив был заполнен рандомом из чисел от 1 до 15, то по книге N1=15 X[15]
Плюнь автору книги в лицо : ;-)))

Нужен диапозон используй "%" - взятие остатка
int n = rand()%15 (это значит что n - будет от 0 до 14)
int n = rand()%15 + 1 (это значит что n - будет от 1 до 15)
 
S

Sheriff92

ха, хорошо:discard:)) спасибо!

а как задать сумму элементов массива с нечётными или чётными номерами?

может, например если для суммы элементов с чётными номерами:

for (i=0;i<=m;i++)
if (i=....... )
sCh=sCh+;

...блин, даже незнаю что и предположить! уже мозг вскипел.
 
D

DarkKnight

Sheriff92 : Шериф ;-) Все куда проще чем ты уже себе надумал :)
Вот смотри :
C++:
for (i=0;i<=m;i++)
//Это значит что i от 0 до m-1
//Следовательно четные эл. ты в этой схеме 0,2,4,6,8... и т.д
if (i % 2 == 0) //Вот их мы и найдем;-) Если остаток от деления на 2 равен 0, то эл. четный
{
sCh=sCh+;
}
else {}//Ну а тут если бы нужны еще были и ничетные
 
S

Sheriff92

#include"stdafx.h"
#include<conio.h>
#include<math.h>
#include<stdlib.h>

int t_main()
{
int x, y[j], m=100, p=200, i, j, sNech, sCh;
scanf ("%d%d",&m,&p);
srand(time(NULL));
for (i=0;i<m;i++)
x=rand();
printf ("sformirovanniy massiv x:\n");
for (i=0;i<m;i++)
printf ("%d",x);
sNech=0;
for (i=0;i<m;i++)
if (i%2==0)
{
sNech=sNech+x;
}
printf ("\nsumma elementov massiva x=%d",sNech);
for (j=0;j<p;j++)
y[j]=rand();
printf ("sformirovanniy massiv y:\n");
for (j=0;j<p;j++)
printf ("%d",y[j]);
sCh=0;
for (j=0;j<p;j++)
if (i%2!=0)
{
sCh=sCh+y[j];
}
printf ("\nsumma elementov massiva y=%d",sCh);
_getch();
}



я вот попробовал по всем собранным материалам переделать программу, но что-то всё-вравно не работает?
выдает три ошибки:
error C2065: 'i' : undeclared identifier
error C2065: 'j' : undeclared identifier
error C3861: 'time': identifier not found
 
D

DarkKnight

C++:
//#include"stdafx.h"
#include<conio.h>
#include<math.h>
#include<stdlib.h>
//Сюда добавь
#include <time.h>
#include <stdio.h>

int t_main()
{
//int x[i], y[j]; // Вот тут, чувствуешь сам, что про i и j ничего выше нету... Так дело совсем не пойдет
//заменим
const int cX = 100;
const int cY = 100;
//И уже только тогда
int x[cX], y[cY];
int m=100,p=200, i, j, sNech, sCh;
scanf ("%d%d",&m,&p);
srand(time(NULL));
for (i=0;i<m;i++)
x[i]=rand();
printf ("sformirovanniy massiv x:\n");
for (i=0;i<m;i++)
printf ("%d",x[i]);
sNech=0;
for (i=0;i<m;i++)
if (i%2==0)
{
sNech=sNech+x[i];
}
printf ("\nsumma elementov massiva x=%d",sNech);
for (j=0;j<p;j++)
y[j]=rand();
printf ("sformirovanniy massiv y:\n");
for (j=0;j<p;j++)
printf ("%d",y[j]);
sCh=0;
for (j=0;j<p;j++)
if (i%2!=0)
{
sCh=sCh+y[j];
}
printf ("\nsumma elementov massiva y=%d",sCh);
_getch();
return 0; //Ты описал t_main как:
// int t_main()
//Поэтому все же вернем значение типо int
}
 
S

Sheriff92

а что такое
const int cX = 100;
const int cY = 100;
число элементов в массивах X и Y ?
я же число элементов через m=100, p=200 задал?

а int в скобки у int t_main добавить: int t_main(int)?
 
D

DarkKnight

const int cX = 100;
const int cY = 100;
Посмотри на текст который я закомментировал в твоем прошлом посте, а именно:
//int x, y[j]; // Вот тут, чувствуешь сам, что про i и j ничего выше нету... Так дело совсем не пойдет
//заменим

Я тут не вижу ни m, ни n
а int в скобки у int t_main добавить: int t_main(int)?
Тут без комментариев... напишите
void t_main(void) - и не мучайтесь
 
S

Sheriff92

а, тоесть получается без всяких m и p можно?
......
const int cX=100, cY=200; //где 100 и 200 число элементов массива
int X[cX], Y[cY], i, j, sNech, sCh;

и уже в for будет:
........
for (i=0;i<=cX;i++)
x=rand();
......ну и так далее
 
S

Sheriff92

C++:
#include"stdafx.h"
#include<conio.h>
#include<math.h>
#include<stdlib.h>

void t_main(void)
{
const int cX=100, cY=200;
int x[cX], y[cY], i, j, sNech, sCh;
for (i=0;i<cX;i++)
x[i]=rand();
printf ("sformirovanniy massiv x:\n");
for (i=0;i<cX;i++)
printf ("%d",x[i]);
sNech=0;
for (i=0;i<cX;i++)
if (i%2==0)
{
sNech=sNech+x[i];
}
printf ("\nsumma elementov massiva x=%d",sNech);
for (j=0;j<cY;j++)
y[j]=rand();
printf ("sformirovanniy massiv y:\n");
for (j=0;j<cY;j++)
printf ("%d",y[j]);
sCh=0;
for (j=0;j<cY;j++)
if (i%2!=0)
{
sCh=sCh+y[j];
}
printf ("\nsumma elementov massiva y=%d",sCh);
_getch();
}

Смотрите, программу переделал, а всё-равно почему-то какая-то ошибка одна вылазит:
Project : error PRJ0003 : Error spawning 'rc.exe'.
Что это за ошибка?
 
L

lazybiz

Все прочитать не успел, но:
C++:
for (i=0;i<=m;i++)
//Это значит что i от 0 до m-1
это НЕ значит что до m-1 !!! Это значит до m ВКЛЮЧИТЕЛЬНО. Может это Вам уже и не нужно, но тем не менее...
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!