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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как это загнать в цикл? гидропрограмма 
V
    Опции темы
Ventbelsos
Дата 19.12.2007, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Пожалуйста, помогите перевести вот эту кучу строчек со scanf в один цикл. Ниже - фрагмент программы. 
       
        float l1, l2, l3, l4, l5, l6, l7, l8, l9;
        float h1, h2, h3, h4, h5, h6, h7, h8, h9;
        scanf("%f, %f", &l1, &h1); 
    scanf("%f, %f", &l2, &h2);
    scanf("%f, %f", &l3, &h3);
    scanf("%f, %f", &l4, &h4);
    scanf("%f, %f", &l5, &h5);
    scanf("%f, %f", &l6, &h6);
    scanf("%f, %f", &l7, &h7);
    scanf("%f, %f", &l8, &h8);
    scanf("%f, %f", &l9, &h9);

PM MAIL   Вверх
JackYF
Дата 19.12.2007, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Ventbelsos @  19.12.2007,  19:45 Найти цитируемый пост)
 float l1, l2, l3, l4, l5, l6, l7, l8, l9;
        float h1, h2, h3, h4, h5, h6, h7, h8, h9;

Цитата

float l[9], h[9];
 вместо этих переменных пойдут? тогда перевести будет легко.


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


Новичок



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

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



Никогда не встречал подобный метод, но думаю, да! а что нужно после 
этого сделать? 
PM MAIL   Вверх
vx92
Дата 19.12.2007, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я не пишу на C,

но думаю надо сделать так:

Код

float l[9], h[9];
for(int i=0; i<=9; i++)
{
scanf("%f, %f", &l[i], &h[i]); 
}

PM MAIL   Вверх
Ventbelsos
Дата 19.12.2007, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(vx92 @ 19.12.2007,  20:26)


Код

float l[9], h[9];
for(int i=0; i<=9; i++)
{
scanf("%f, %f", &l[i], &h[i]); 
}

Только что сделал так - вроде по логике верно, но после ввода первой строчки программа вырубается. 
PM MAIL   Вверх
nickless
Дата 19.12.2007, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


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

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



Цитата(Ventbelsos @  19.12.2007,  18:38 Найти цитируемый пост)
но после ввода первой строчки программа вырубается.  

За пределы массива выходишь, надо в цикле проверять i<9 а не i<=9



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

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
vx92
Дата 19.12.2007, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



По логике а но та верно, но вот у меня на dev-c++ вопще не пашит.

А на каком компиляторе ты эту программу запускаешь?

Добавлено через 13 секунд
По логике а но то верно, но вот у меня на dev-c++ вопще не пашит.

А на каком компиляторе ты эту программу запускаешь?

PM MAIL   Вверх
Ventbelsos
Дата 19.12.2007, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



В Microsoft Visual не работает, а в Borland C++ Buider запустилось! 
Всех благодарю! smile 
PM MAIL   Вверх
DigitSphinx
Дата 20.12.2007, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Ventbelsos @  19.12.2007,  20:59 Найти цитируемый пост)
В Microsoft Visual не работает

а это почему ????


--------------------
Чтобы пробить стену лбом нужен или большой разбег, или много лбов.
(Альберт Эйнштейн)
Умен ты или глуп, велик ты или мал, не знаем мы, пока ты слова не сказал.
(Альберт Эйнштейн)
user posted image
PM MAIL ICQ   Вверх
zkv
Дата 20.12.2007, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


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

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



для такого формата:
scanf("%f, %f", &l[i], &h[i]);
данные должны быть представлены в таком виде:
1.1, 1.2 2.1, 2.2 3.1, 3.2 и т.д.
формат ввода такой?
PM MAIL   Вверх
Ventbelsos
Дата 22.12.2007, 04:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Да, такой, это данные для глубин в реке - они измеряются с точностью до 0,1 м. 
PM MAIL   Вверх
DigitSphinx
Дата 22.12.2007, 14:10 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ventbelsos, почему в ВС не работает ??
тебе походу мешает запятая

scanf("%f,%f", &l[i], &h[i]); 

или ты должен вводить числа через запятую как сказал zkv.


Это сообщение отредактировал(а) DigitSphinx - 22.12.2007, 14:10


--------------------
Чтобы пробить стену лбом нужен или большой разбег, или много лбов.
(Альберт Эйнштейн)
Умен ты или глуп, велик ты или мал, не знаем мы, пока ты слова не сказал.
(Альберт Эйнштейн)
user posted image
PM MAIL ICQ   Вверх
Ventbelsos
Дата 23.12.2007, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

#include <stdio.h>
#include <math.h> 
#include <conio.h>
main()
{
    float h[10]; /*Ââîäÿòñÿ ïåðåìåííûå äëÿ ãëóáèí â òî÷êàõ*/
    float l[10]; /*Ââîäÿòñÿ ïåðåìåííûå äëÿ óäàëåíèÿ òî÷åê îò óðåçà*/
    float sq[10]; /*Ââîäÿòñÿ ïåðåìåííûå äëÿ ïëîùàäåé ñåêòîðîâ ñå÷åíèÿ ðóñëà*/
    float part_sq[10];
    float full_sq; /*Ïåðåìåííàÿ äëÿ ïîëíîé ïëîùàäè ñå÷åíèÿ ðóñëà*/
    float width; /*Ïåðåìåííàÿ äëÿ øèðèíû ðóñëà*/
    float average_h; /*Ïåðåìåííàÿ äëÿ ñðåäíåé ãëóáèíû*/
    float kor[10]; /*Ïåðåìåííàÿ äëÿ cîñòàâëÿþùèõ ñìî÷åííîãî ïåðèìåòðà*/
    float full_kor; /*Ïåðåìåííàÿ äëÿ ñìî÷åííîãî ïåðèìåòðà      */
    float radius; /*Ïåðåìåííàÿ äëÿ ñìî÷åííîãî ðàäèóñà      */
    printf("Programma rasschitaet osnovnye morfometricheskie haracteristiki rusla.\n");
    printf(" \n");
    printf("Vam neobhodimo vvesti cherez zapyatuyu znacheniya\n");
        printf("udaleniya ot post. nachala i glubiny dlya v metrah dlya kajdoi iz 10 tochek.\n");
    printf(" \n");
    printf("Vvodite ih v formate |l, h|, snachala dlya pervoi, zatem dlya vtoroi, etc... \n");
    printf("Poslednyaya tochka doljna byt urezom vody na protivopolojnom beregu |l|. \n");
    for (int i=0; i<10; i++)
        scanf("%f %f", &l[i], &h[i]);
    for (i=1; i<8; i++)
        sq[i]=(h[i]+h[i+1])*(l[i+1]-l[i])/2;
    sq[i=1]=l[i=1]*h[i=1]/2;
        sq[i=10]=h[i=9]*(l[i=10]-l[i=9])/2;
    part_sq[i=1]=0;
    for (i=1; i<9; i++)
        part_sq[i]=sq[i-1]+part_sq[i-1];
    full_sq=part_sq[i=10];                                               /* ðàñ÷¸ò ïîëíîé ïëîùàäè ñå÷åíèÿ             */
    width=l[i=10];                                                       /* ðàñ÷¸ò øèðèíû ðóñëà                       */
    average_h=full_sq/width;                                             /* ðàñ÷¸ò ñðåäíåé ãëóáèíû                    */
    for (i=1; i<9; i++)
        kor[i]=sqrtf(powf(l[i]-l[i-1],2)+powf(h[i]-h[i-1],2));
        i=1;
    kor[i]=sqrtf(powf(l[1],2)+powf(h[1],2));                         /*                                          */
    full_kor=kor[i]+kor[i+1]+kor[i+2]+kor[i+3]+kor[i+4]+kor[i+5]+kor[i+6]+kor[i+7]+kor[i+8]+kor[i+9]; /*ðàñ÷¸ò ñìî÷åííîãî ïåðèìåòðà       */
    radius=full_sq/full_kor;                             /*ðàñ÷¸ò ãèäðàâëè÷åñêîãî ðàäèóñà            */
    printf("Resultaty: \n");
    printf("%f \n", l[i=9]);
    printf("Shirina rusla v stvore poperechnogo secheniya - %5.2f m. \n", width);
    printf("Ploshad' poperechnogo secheniya rusla - %5.2f m. \n", full_sq);
    printf("Srednyaya glubina rusla - %5.2f m. \n", average_h);
    printf("Gydravlicheskyi radius - %5.2f m. \n", radius);
    printf("Smochennyi perimetr - %5.2f m.\n", full_kor);
    getch();
}


вот во что превратились мои ваяния.. 
открылось много лагов, например в первом цикле. 
да и вообще, с циклами появилось много лажи. 

Например, есть такие строчки:
Код

width=l[i=10];
printf("Shirina rusla v stvore poperechnogo secheniya - %5.2f m. \n", width);

и возвращается не 10, как, по идее вводил пользователь, когда вышла десятая строчка в результате работы вот этого цикла:
Код

for (int i=0; i<10; i++)
        scanf("%f %f", &l[i], &h[i]);

а единица!

Прошу Вашей помощи! 
PM MAIL   Вверх
Ventbelsos
Дата 23.12.2007, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Собственно, более конкретный вопрос:
Код

x=l[i=10]-l[i=9];
    printf("%f %f %f\n", l[i=10], l[i=9], x);


Почему программа возвращает: "10  9  0"  ? =) 10-9=0? 
PM MAIL   Вверх
JackYF
Дата 23.12.2007, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Ventbelsos @  23.12.2007,  17:24 Найти цитируемый пост)
printf("%f %f %f\n", l[i=10], l[i=9], x);

эээ... сия конструкция вынесла мне мозг... ты что сделать-то хочешь? smile


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

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

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

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

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


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

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


 




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


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

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