Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Несколько легких задач на С, прошу помощи с написанием 
:(
    Опции темы
artwor
  Дата 11.10.2008, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 11.10.2008

Репутация: нет
Всего: нет



Всем здравствуйте. Посоветовали написать на ваш форум, заранее извиняюсь если не в той теме. Сам студент 1-ого курса, изучаем язык программирования С. Преподаватель женщина, 75 лет, поэтому 98% группы просто не понимает, о чем идет речь на лекциях и практике. Поэтому прошу помощи в написании нескольких простеньких программ.
Вот например: вместо данного массива вывести два, в первом из которых будут отображаться ненулевые элементы (!=0) а во втором - индексы этих ненулевых массивов.
Вообщем-то программу я написал, но хотелось бы все-таки сверить или хотя бы совета.

Заранее спасибо, не сочтите, пожалуйста, за наглость. Если помощь последует, напишу еще несколько задачек, если нет - и на этом спасибо smile 
PM MAIL   Вверх
susanin
Дата 11.10.2008, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 587
Регистрация: 7.10.2006
Где: Санкт-Петербург

Репутация: 2
Всего: 7



Цитата(artwor @  11.10.2008,  13:04 Найти цитируемый пост)
Вообщем-то программу я написал

ну так скинь код.. а уж здесь тебе скажут, правильно написал или нет...

Это сообщение отредактировал(а) susanin - 11.10.2008, 15:31
PM MAIL   Вверх
artwor
Дата 11.10.2008, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 11.10.2008

Репутация: нет
Всего: нет



Неправильно выразился - есть примерные варианты на бумаге, но концовку незнаю как составлять. И очень хочется понять принцип, составлять ли 3 разных массива или нет, и как уже сказал, концовку.

PM MAIL   Вверх
mr.Anderson
Дата 11.10.2008, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 1
Всего: 128



artwor, когда говоришь, что решал, давай свое решение, чтобы тебе помогли исправить ошибки.

Вот вариант:
Код

#include <stdio.h>
#include <conio.h>

void main(void)
{
 const m = 5;

 int a[m] = {0,1,1,0,1};
 int a0[m], i0[m];
 int c = 0; 

 for (int i=0; i<m; i++)
  if (a[i] != 0)
  {
   a0[c] = a[i];
   i0[c] = i;

   c++;
  }

 for (i=0; i<c; i++)
  printf("Index: %d, elem: %d\n", i0[i], a0[i]);

 getch();
}


Это сообщение отредактировал(а) mr.Anderson - 11.10.2008, 16:12


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
artwor
Дата 11.10.2008, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 11.10.2008

Репутация: нет
Всего: нет



Хорошо. Вроде разобрался с этой задачкой.
Пример 2 посложнее, прошу подсказки, дала указание (которое я напишу ниже) и дала пример, ничего не объяснив.

Указание:

Метод трапеций для вычисления интеграла:

Код

double trap(double a,double b,double eps, double (*f)(double))
{
double h,s,s0,s1,sn;
int n,i;
s=1; sn=101;
n=4;
s0=(f(a)+f(b))*.5;
s1=f(.5*(a+b));
while(fabs(s-sn)>eps){
sn=s;
h=(b-a)/n;
for(i=0, i<n/2, i++)
s1+=f(a+(2*i+1)*h);
s=h*(s0+s1);
n*=2;
}
return s;
}



у меня собсвенно несколько вопросов по этому указанию.  Как я понял, мы задаем не целые числа, а числа с плавающей точкой (double a,b,c итд). Но я не понял, что значит double (*f) и double eps.
Далее, задаем такие же числа с плавающей точкой для высоты, первой и второй площадей трапеции, а также какой то еще площади, условно sn.
Затем вводим целочисленные значения - кол-во сторон (n) и какое-то число i
Далее для трапеции число сторон n =4, что вполне логично.
я не понял эту строку - s=1; sn=101;, а также последующие 3.. может кто-нибудь объяснить идиоту что это значит? 



Это сообщение отредактировал(а) JackYF - 12.10.2008, 10:32
PM MAIL   Вверх
jonie
Дата 12.10.2008, 01:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 6
Всего: 118



Цитата

double (*f)(double)
функтор (указатель на функцию), принимающую параметр double и возвращающей double.  Функция должна выглядеть так: double someFunct(double){...}
Цитата

double eps
просто объявление параметра функции с именем eps.
Цитата

s=1; sn=101;
начальная инициализация, чтобы while отрабтал минимум один раз. умеснее, наверно, было бы изменить условие на do{...}while, но видимо было кому-то лень 8-)


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
JackYF
Дата 12.10.2008, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 6
Всего: 162



artwor, на форуме есть кнопка для подсвечивания кода. Пользуйся.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
artwor
Дата 12.10.2008, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 11.10.2008

Репутация: нет
Всего: нет



jonie, 
функции еще не изучали..


JackYF, 
благодарю.

А вот и сама задача: вычислить - 1|0 (интеграл от 1 до 0) x*tg(x)dx, используя метод трапеций. Может кто-то помочь? Напомню, что язык - Си, не с++.
PM MAIL   Вверх
jonie
Дата 12.10.2008, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 6
Всего: 118



artwor вам в раздел "работа", тут за вас никто ничего писать не собирается.


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0746 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.