IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

3 страниц V  1 2 3 >  
 Ответить  Открыть новую тему 
> Вопрос по выполнению кода
сообщение
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 212
Пол: Мужской

Репутация: -  0  +


НЕ знал как озоглавить тему и куда ее воткнуть, но вот что меня заинтересовало, просто писал так сказать организацию меню вот первый вариант

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

using namespace std;

int main()
{ bool menu=true;
while (menu)
{
cout<<"1: \n";
cout<<"2: \n";
cout<<"3: \n";
cout<<"4: \n";
cout<<"5: \n";
switch (getchar())
{
case '1':menu=false; break;

}

}
cout<<"Bay! Bay! \n";

return 0;
}

При этом почему то выводится после ввода не '1' два раза подряд список меню так сказать
а вот если написать вот так

#include <stdio.h>
#include <iostream.h>
#include <conio.h>
int main()
{ bool menu=true;
char ch;
while (menu)
{
cout<<"1: \n";
cout<<"2: \n";
cout<<"3: \n";
cout<<"4: \n";
cout<<"5: \n";
cin>>ch;
switch (ch)
{
case '1':menu=false; break;

}

}
cout<<"Bay! Bay! \n";

return 0;
}
то нормально один раз, в чем разница исполнения не пойму, если логически проходить, то вроде не должно быть в первом варианте двойного вывода?

НУ и конечно я поищу, но межет подскажете очистку экрана?

Сообщение отредактировано: Account -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата
в чем разница исполнения не пойму, если логически проходить, то вроде не должно быть в первом варианте двойного вывода?
Ты так думаешь? smile.gif Ну, хорошо... Смотри: вывелось тебе меню, ты чего нажимаешь, чтобы обозначить свой выбор? Цифру и enter, правда? Вот цифра (отличная от 1) тебе дает первый проход, а enter - второй проход (это тоже символ, '\n', однако). Чтоб не было второго прохода - используй getch(), которая не ждет enter-а, а реагирует сразу после нажатия на кнопку, вместо getchar().

Цитата
подскажете очистку экрана?
25 раз
cout << endl;
?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Бывалый
***

Группа: Пользователи
Сообщений: 212
Пол: Мужской

Репутация: -  0  +


Цитата(volvo @ 5.07.2009 18:33) *



25 раз
cout << endl;
?


Такой метод уводит курсор, и вследующий раз уже меню выводится с низу)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Бывалый
***

Группа: Пользователи
Сообщений: 212
Пол: Мужской

Репутация: -  0  +


Решение найдено
подсоеденяем
Код
#include <stdlib.h>


и для очистки

Код
  system("cls");

Не знаю может было уже где,но вдруг кому понадобится)

Сообщение отредактировано: Account -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Бывалый
***

Группа: Пользователи
Сообщений: 212
Пол: Мужской

Репутация: -  0  +


volvo, подскажи пожайлуста как мне передать в функцию двухмерный массив, естественно в С++ (CodeBlock).
Делаю интерполяцию по формуле Лагранжа, данные из файла передал в массив (кстати по этому еще тоже будет вопрос). Есть массив двух мерный mas [6][3], как только не пробовал передавть блин ругается и все,вот например есть функция, передавал просто количество точек для которых надо найти значение функции и массив с данными саму функцию например описываю
Код
double pol_lag(int &kol_x, double *mmas)


Как правильно его передавать из главной функции?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Так что тебе куда передавать надо? Запутал все что можно. Ты толком скажи: что есть, где описано, и куда надо передать.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Бывалый
***

Группа: Пользователи
Сообщений: 212
Пол: Мужской

Репутация: -  0  +


#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
#include <fstream.h>

using namespace std;

int pol_lag(int&, double *mas);

int main()
{ int kol_xy,i=0;
system("cls");

cout<<"Vvedite kol-vo znacheniy x && y: ";
cin>>kol_xy;
double mas [kol_xy] [3]; // <---Вот этот массив надо передать в pol_lag(int &kol_xyx, double *mas)

return 0;
}

int pol_lag(int &kol_xyx, double *mas)
{

return 0;
}


РУгается на использование в дальнейшем вот такой записи например mas [i][j] в функциии pol_lag

Сообщение отредактировано: Account -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Во-первых, это не будет компилироваться, пока не залезешь в настройки проекта и не разрешишь принудительно (по Стандарту С++ это запрещено, размер статического массива должен быть константным, а не переменным. Для переменных размеров есть динамические массивы). Но если наплевать на совместимость с ISO, то:

int pol_lag(int&, double *mas[3]);
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Бывалый
***

Группа: Пользователи
Сообщений: 212
Пол: Мужской

Репутация: -  0  +


А как с ним тогда потом работать, например на выражение в функции он ругается
Код
p=p*mmas [i][1]
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






А что такое mmas? Там вообще-то mas был...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Бывалый
***

Группа: Пользователи
Сообщений: 212
Пол: Мужской

Репутация: -  0  +


Ошибся, это старое обозначение но он и на mas ругается, даже пытался полностью определять mas [6][3], все равно не хочет, ругается((
Сделал просто вот так отправил в глобальные переменные
Код
int kol_xy;
double mas [6] [3];


не люблю пользоваться глобальными но так вышло пока проще...

P.S Самое интересное решение полинома сделал, теперь вот только выделить в функцию хотел более грамотно))

Сообщение отредактировано: Account -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гость






Что у тебя там ругается - не понимаю:
int  pol_lag(int &kol_xyx, double *mas[3])
{
double p = 1;
for(int i = 0; i < kol_xyx; i++) {
p *= mas[i][1]; // это аналог твоего выражения
}
return 0;
}

компилируется прекрасно. Приводи код функции, что-то не то ты делаешь.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Бывалый
***

Группа: Пользователи
Сообщений: 212
Пол: Мужской

Репутация: -  0  +


Код
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
#include <fstream.h>

using namespace std;

int pol_lag(int&, double *mas [3]);


int main()
{   int  kol_xy,i=0;
    system("cls");

    cout<<"Vvedite kol-vo znacheniy x && y: ";
    cin>>kol_xy;
double mas [kol_xy] [3];
  ifstream infile("data.txt");

    while (i<kol_xy)
    {
        infile>>mas [i][0]>>mas [i][1]>>mas [i][2];
         printf("X = %lg; Y = %lg; x = %lg\n", mas [i][0],mas [i][1],mas [i][2] );
   i++;

    }
    cout<<"------------------------------------\n";

     pol_lag(kol_xy, *mas [3]);
getchar();
    cout<<"Good Luck!\n";
    cout<<"Bay! Bay! \n";

   return 0;
}

int pol_lag(int kol_xyx, double *mas [3])
{
for( int xn=0;xn<kol_xyx;xn++)
    { double s=0;
    for(int i=0;i<kol_xyx;i++)
    { double p=1;
        for(int j=0;j<kol_xyx;j++)
        {
             (i!=j) ?  p*= ((mas[xn][2] - mas[j][0])/(mas[i][0]-mas[j][0])) : p*=mas [i][1];
            }
            s+=p;

        }
        cout<<"Resul for x"<<xn+1<<":  "<<mas[xn][2]<<"  | y:"<<s<<"\n";
    }
    return 0;
}





Сообщение отредактировано: Account -


Прикрепленные файлы
Прикрепленный файл  data.txt ( 118 байт ) Кол-во скачиваний: 262
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Гость






А так?
#include <iostream>
#include <fstream>
#include <stdlib.h>

using namespace std;

int pol_lag(int&, double mas[][3]);

int main()
{
int kol_xy,i=0;
system("cls");

cout<<"Vvedite kol-vo znacheniy x && y: ";
cin>>kol_xy;
double mas [kol_xy] [3];
ifstream infile("data.txt");

while (i<kol_xy) {
infile>>mas [i][0]>>mas [i][1]>>mas [i][2];
printf("X = %lg; Y = %lg; x = %lg\n", mas [i][0],mas [i][1],mas [i][2] );
i++;
}
cout<<"------------------------------------\n";

pol_lag(kol_xy, mas);
getchar();
cout<<"Good Luck!\n";
cout<<"Bay! Bay! \n";
return 0;
}

int pol_lag(int &kol_xyx, double mas[][3])
{
for( int xn=0;xn<kol_xyx;xn++) {
double s=0;
for(int i=0;i<kol_xyx;i++) {
double p=1;
for(int j=0;j<kol_xyx;j++) {
p *= (i != j) ? ((mas[xn][2] - mas[j][0])/(mas[i][0]-mas[j][0])) : (mas [i][1]);
}
s+=p;
}
cout<<"Resul for x"<<xn+1<<": "<<mas[xn][2]<<" | y:"<<s<<"\n";
}
return 0;
}
Заметь, я не пользуюсь iostream.h и fstream.h, это устаревшие заголовочные файлы. Если ты работаешь с namespace std, то подключай те файлы, в которых этот неймспейс есть, а это как раз файлы без расширения.

Ну, и оператор ? : тоже я по-другому использовал, так лучше будет.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Бывалый
***

Группа: Пользователи
Сообщений: 212
Пол: Мужской

Репутация: -  0  +


volvo, ну как всегда СПАСИБО, держи +.
А вот такой метод по стандарту ISO ?

НУ и еще хотел спросить по поводувот считывания файла, хотел в файле еще сверху дописать обозначения над столбиками X Y x, соответсвенно, но вот таким метотодом считывания из файла не как не получилось пропустить строку, так как он после ее считывания просто напросто запинается так сказать, выводит ее и все я сначала пытался сделать считываени

Код
char s[255];
infile.getline(s,255);

но не вышло)))

и еще почемуто опять getchar() не работает, что то попадает под поток не пойму?

Сообщение отредактировано: Account -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Гость






Цитата
выводит ее и все я сначала пытался сделать считываени
char s[255];
infile.getline(s,255);

но не вышло)))
blink.gif
Прикрепленное изображение
Что я делаю не так? getchar работает, кстати... Что у тебя творится - непонятно.

Цитата
А вот такой метод по стандарту ISO ?
По стандарту ISO получил размер массива - выделяй памяти под него динамически. Задание НЕконстантой размера массива - это расширение GCC, причем очень нехорошее, потом программу трудно заставить работать под другим компилятором, я этим не пользуюсь, поэтому обычно у меня стоит ключ -ansi, с которым твоя программа не компилируется.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Бывалый
***

Группа: Пользователи
Сообщений: 212
Пол: Мужской

Репутация: -  0  +


Блин вот счас работает, а тогда нет, да если честно у меня тут и винда уже настолько извиняюсь за выражения "сасрана", переустанавливать систему надо и чистить, бардак полный))))
Все нормально считывается и выводится)
Но вот getchar() не пашет, потом exe-ник запускаю, просто выполняется и пролетает, не ждет нажатия(

Сообщение отредактировано: Account -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Гость






Цитата
exe-ник запускаю, просто выполняется и пролетает, не ждет нажатия(
А, да... Это есть. Потому что после ввода количества данных в буфере остается '\n', я уже говорил об этом. И его надо оттуда убрать. Вот так, например:
    cout<<"Vvedite kol-vo znacheniy x && y: ";
(cin>>kol_xy).get(); // прочитать число и сразу прочесть '\n'
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Бывалый
***

Группа: Пользователи
Сообщений: 212
Пол: Мужской

Репутация: -  0  +


volvo,честно меня поражают твои знания)))
Теперь возьмусь за полином Ньютона)

P.S. А если не секрет кем работаешь?

Сообщение отредактировано: Account -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20


Гость






Цитата
А если не секрет кем работаешь?
А ты как думаешь? smile.gif
 К началу страницы 
+ Ответить 

3 страниц V  1 2 3 >
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 20.04.2024 9:08
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name