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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.01.2011, 10:03   #1
Jenkins
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 10
По умолчанию С++ массивы и функции.

Здравствуйте, помогите мне, пожалуйста. Сомневаюсь в своих задачах и хочу задать вопросы по их решению.

Задача на одномерные массивы:
Дан одномерный массив из 100 элементов, состоящий из случайных вещественных чисел в диапазоне от -35 до 50. Вывести в порядке неубывания (возрастания) те положительные элементы этого массива, которые меньше заданного числа Х (0<X<50).
Код:
#pragma argsused
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main(int argc, char* argv[])
{ float x[100]={0},sw,a;
char j=0,i=0,min;
randomize();
for(i=0;i<100;i++)
x[i]=random(85)-35+random(100)/100.;
for(i=0;i<98;i++)
 {
 min=i;
  for(j=i+1;j<99;j++)
  if (x[min]>x[j]) min=j;
 sw=x[i];
 x[i]=x[min];
 x[min]=sw;
 }
 printf("Vvedite X:"); scanf("%f",&a);
 i=0;
 while (x[i]<=a)
 {
 printf("%f\n",x[i]);
 i++;
 };
 getchar(); getchar();
	return 0;
Двумерные массивы:
Дан двумерный массив из 5 строк и 6 столбцов. Определить для каждого четного столбца максимальный элемент. Найти произведение этих элементов.

Не могу понять как приписать четность столбца.
Код:
#pragma argsused
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{ int a[5][7]={0},i,j;
  float s=1;
randomize();
for (i = 0; i < 5; i++) {
for (j = 0; j < 6; j++) {
a[i][j]=random(100);
printf("%4d",a[i][j]);
if (a[i][j]>a[i][6]) a[i][6]=a[i][j];
} printf("  max=%d\n",a[i][6]);  s=s*a[i][6];
}
printf(" proizvedenie = %f",s);
getchar();getchar();
	return 0;
И последняя задачка на функции:
Дан одномерный массив из 100 случайных целых чисел в диапазоне от 5 до 25 включительно. Вывести все числа, которые максимально часто встречаются в массиве и количество их повторений. Подсчет количества повторений для числа оформить в виде функции.

Она у меня получилась нерациональной. Нужно для идеала упростить вот этот момент : y[i]==t+5

Код:
#pragma argsused
#include <stdio.h>
#include <stdlib.h>
#include <vcl.h>

int ter(int t,int *y)
{
int r=0;
for (int i = 0; i < 100; i++)
{
if (y[i]==t+5) r++;
}
return r;
}


int main(int argc, char* argv[])
{int a[100],i,flag=0;
int c[21],m,max=0,sw;
randomize();
for (i = 0; i < 100; i++)
{
a[i]=random(21)+5;
if (i%2==0) printf("%3d\n",a[i]);
else printf("%3d",a[i]);
}

printf("\n");
for (i=0; i < 21; i++)
{
c[i]=ter(i,a);
if (c[i]>max) max=c[i];

printf("4uCjlo %d BcTpe4aeTc9|  %d\n",i+5,c[i]);
}

for (m = 0; m < 21; m++) 
if (c[m]==max) printf("max Kojlu4ecTBo %d - elementov =%d\n",m+5,c[m]);

getchar();
	return 0;
Надеюсь на понимание и вашу помощь.

Последний раз редактировалось Jenkins; 12.01.2011 в 10:08.
Jenkins вне форума Ответить с цитированием
Старый 12.01.2011, 22:27   #2
andrewpalkin
Форумчанин
 
Аватар для andrewpalkin
 
Регистрация: 23.11.2010
Сообщений: 458
По умолчанию

У меня к тебе вопрос , в название темы у тебя написано , что это задачи на С# (С шарп) , но код у тебя не написан на С# . Так в чем прикол ?
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---
andrewpalkin вне форума Ответить с цитированием
Старый 13.01.2011, 05:37   #3
Jenkins
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 10
По умолчанию

да немного попутал
это С++

andrewpalkin, уважаемый. Помогите мне, пожалуйста!

Последний раз редактировалось Stilet; 15.01.2011 в 18:05.
Jenkins вне форума Ответить с цитированием
Старый 13.01.2011, 11:13   #4
xDyPx
Форумчанин
 
Аватар для xDyPx
 
Регистрация: 21.01.2009
Сообщений: 148
По умолчанию

По поводу второй задачи. Для того, чтобы определить четность, нужно поставить условие на проверку остатка от деления:
Код:
if(j%2==0) {...}//тогда число четное
МОЙ САЙТ
Компьютер позволяет решать все те проблемы, которые до появления компьютера не существовали.
xDyPx вне форума Ответить с цитированием
Старый 13.01.2011, 13:11   #5
Jenkins
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 10
По умолчанию

xDyPx,а в целом это как будет выглядеть?

все, исправил все кроме последней)
есть идеи, господа?

Последний раз редактировалось Stilet; 15.01.2011 в 18:10.
Jenkins вне форума Ответить с цитированием
Старый 14.01.2011, 01:38   #6
andrewpalkin
Форумчанин
 
Аватар для andrewpalkin
 
Регистрация: 23.11.2010
Сообщений: 458
По умолчанию

Цитата:
Сообщение от Jenkins Посмотреть сообщение
да немного попутал
это С++
Да и это не С++

Цитата:
Сообщение от Jenkins Посмотреть сообщение
...
Код:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int ter(int t,int *y)
{
int r=0;
for (int i = 0; i < 100; i++)
{
if (y[i]==t) r++;
}
return r;
}


int main(int argc, char* argv[])
{int a[100],i,flag=0;
int c[21],m,max=0,sw;
randomize();
for (i = 0; i < 100; i++)
{
a[i]=random(21)+5;
if (i%2==0) printf("%3d\n",a[i]);
else printf("%3d",a[i]);
}

printf("\n");
for (i=5; i < 26; i++)
{
c[i]=ter(i,a);
if (c[i]>max) max=c[i];

printf("4uCjlo %d BcTpe4aeTc9|  %d\n",i,c[i]);
}

for (m = 5; m < 26; m++) 
if (c[m]==max) printf("max Kojlu4ecTBo %d - elementov =%d\n",m,c[m]);

getchar();
	return 0;
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---

Последний раз редактировалось Stilet; 15.01.2011 в 18:11.
andrewpalkin вне форума Ответить с цитированием
Старый 15.01.2011, 17:03   #7
Jenkins
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 10
По умолчанию

первую переделал вот в такой код,а учитель все равно говорит, что я порчу массив :
Код:
#pragma hdrstop
#include<stdio.h>
#include<stdlib.h>


//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
randomize();
const n=100;
int i,k,mid,q,t;
float a[n],min,swap,j,x;

//Присвоение элементам массива случайного диапазона чисел -35 до 50
printf("massiv:\n");
for (i = 0; i < 100; i++)
{
	a[i]=rand()%(85)-35+random(101)/100.;
	printf("%5.2f   ", a[i]);
}

//Сортировка элементов массива
for(int q=0;q<99;q++)
{
min=a[q];
mid=q;
for(t=(q+1);t<100;t++)
{
   if (a[t]<min) {mid=t; min=a[t];};
}
swap=a[q];
a[q]=a[mid];
a[mid]=swap;
};

//Задание значения X
printf("\n vvedite X: ");
scanf("%f",&x);

//Вывод результата
printf(" rezultat:\n");
for (k = 0; k < 100; k++) if (a[k]<x) printf("%5.2f \n", a[k]);

getchar();getchar();
return 0;
}
нужно якобы создать массив и из него перекинуть все значения меньше Х во второй и там уже сортировать. Не могу понять как проделать это. Помогите, пожалуйста.

Последний раз редактировалось Jenkins; 15.01.2011 в 19:39.
Jenkins вне форума Ответить с цитированием
Старый 15.01.2011, 17:40   #8
andrewpalkin
Форумчанин
 
Аватар для andrewpalkin
 
Регистрация: 23.11.2010
Сообщений: 458
По умолчанию

Цитата:
Сообщение от Jenkins Посмотреть сообщение
первую переделал вот в такой код,а учитель все равно говорит, что я порчу массив :
...
Что ты вообще пытался тут сделать и почему ты свой код не ставишь в таги кода , невозможно ничего прочитать . Да и совет давать переменным понятные имена по смыслу , а не просто буквы алфавита .
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---
andrewpalkin вне форума Ответить с цитированием
Старый 15.01.2011, 19:42   #9
Jenkins
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 10
По умолчанию

Совет учту. А про код что-то забыл, извиняюсь.
По поводу того,что я хотел сделать в этой программе. Подписал комментарии в коде. Вы это имели ввиду?
Jenkins вне форума Ответить с цитированием
Старый 15.01.2011, 22:15   #10
andrewpalkin
Форумчанин
 
Аватар для andrewpalkin
 
Регистрация: 23.11.2010
Сообщений: 458
По умолчанию

Цитата:
Сообщение от Jenkins Посмотреть сообщение
Совет учту. А про код что-то забыл, извиняюсь.
По поводу того,что я хотел сделать в этой программе. Подписал комментарии в коде. Вы это имели ввиду?
Я просто не могу понять , в чем у тебя загвоздка . Тебе просто можно посчитать сколько элементов в массиве есть меньше заданного и создать новый массив такого размера . Потом пройти еще раз по массиву и переписать все эти элементы в новый массив и потом уже сортировать его . Можно самым простым способом "пузырька".

Код:
int iarray[ARRAY_SIZE];
  int x, y, holder;
 
  // Bubble sort method.
  for(x = 0; x < ARRAY_SIZE-1; x++)
    for(y = x+1; y < ARRAY_SIZE; y++)
      if(iarray[x] > iarray[y]) {
        holder = iarray[x];
        iarray[x] = iarray[y];
        iarray[y] = holder;
      }
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---
andrewpalkin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функции и массивы в С++.Строки. Metallica Помощь студентам 0 23.11.2010 18:40
функции и массивы SkrudjMakdak JavaScript, Ajax 2 03.10.2010 22:08
Функции и массивы. 3.14rojoke Общие вопросы C/C++ 1 14.04.2010 15:32
Функции и массивы Baaandit Общие вопросы C/C++ 11 21.03.2010 00:22
Массивы и функции на Си Wertex Помощь студентам 5 17.09.2009 23:59