RE: Вопросы по C/C++ (Для новичков)
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-12-15 16:15:11.293333
|
|
|
Ins3t
Сообщений: 9
Оценки: 0
Присоединился: 2009-07-19 14:08:21.010000
|
2paKemoSHA
#include <stdio.h>
int main ()
{
FILE * f;
f= fopen ("test.txt","wt+");
if (f !=NULL)
{
fputs ("str1",f);
fclose (f);
}
return 0;
}
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-12-15 22:04:35.996666
|
|
|
GrafMine
Сообщений: 23
Оценки: 0
Присоединился: 2009-04-29 17:08:19.376666
|
quote:
ORIGINAL: GrafMine Помогите в решении задачи пожалуйста: Полями структуры есть координаты точки.Узнать три экземпляра структуры и найти периметр триугольника ,что создают эти точки. очень нуждаюсь в решении задачи. надеюсь на вашу отзывчивость… quote:
ORIGINAL: psina007 Детский сад, IMHO. #include <iostream>
#include <math.h>
using namespace std;
struct point
{
float X;
float Y;
};
int main(int argc,char* argv[])
{
point a,b,c;
a.X = 10; a.Y = 78;
b.X = 1.5; b.Y = 7.8;
c.X = 7.01; c.Y = 9.45;
double P = sqrt((a.X - b.X)*(a.X - b.X)+(a.Y - b.Y)*(a.Y - b.Y)) +
sqrt((a.X - c.X)*(a.X - c.X)+(a.Y - c.Y)*(a.Y - c.Y)) +
sqrt((c.X - b.X)*(c.X - b.X)+(c.Y - b.Y)*(c.Y - b.Y));
cout << P;
} Ответ : до этого поста: quote:
ORIGINAL: Lost_boy GrafMine, начинай пользоваться гуглом, без него ты далеко не уйдешь. http://dfe3300.karelia.ru/koi/posob/c/c.htm http://www.intuit.ru/department/se/pbmsu/8/ http://www.codenet.ru/progr/cpp/sprd/ Изучай, там все описано, и вопросы сами исчезнут. Последняя ссылка это список функций С, с полным описанием. я считал этот пример как правильный(может он и правильный только в С++ ;) ), пришло время разбирать пример,и тут я посмотрел на этот пример что долекий,что мой препод =) было минутное молчание =))) с вот таким вот лицом -> (о_О) ;)))) В общем я так подумал и решил его сделать , только вот не знаю как его начать;),соответственно помогите пробить "бетон" землю постараюсь капнуть я сам … -\\-\\-\\-\\-\\-\\-\\-\\-\\-\\-\\-\\-\\-\\-\\-\\-\\-\\-\\-\\-\\- З.Ы.вот пример каторый розберали целую прошлую страничку :
#include <stdio.h>
#include <conio.h>
int main( void )
{
int i, n1, n2, sum = 0;
int a1[] = { 1, 2, 3, 4 };
int a2[] = { 5, 6, 7, 8, 9 };
n1 = sizeof( a1 ) / sizeof( *a1 );
n2 = sizeof( a2 ) / sizeof( *a2 );
for ( i = 0; i < n1; i++ )
sum += a1[i];
for ( i = 0; i < n2; i++ )
sum += a2[i];
printf( "Summ = %d", sum );
getch();
return 0;
}
Увы не рабочий =( да и с сумой у него не совсем лады… вот на замену него код программы
#include <stdio.h>
int main()
{
int *a1,*a2;
int sum1=0,sum2=0,n1,n2;
printf("Vvedite dlinny pervogo massiva ");
scanf("%d",&n1);
printf("Vvedite dlinny vtorogo massiva ");
scanf("%d",&n2);
a1=new int[n1];
a2=new int[n2];
for(int i=0;i<n1;i++) a1[i]=rand();
for(int i=0;i<n2;i++) a2[i]=rand();
for(int i=0;i<n1;i++) sum1+=a1[i];
for(int i=0;i<n2;i++) sum2+=a2[i];
if(sum1<sum2)printf("Summa elementov vtorogo massiva bolwe\n");
else printf("Summa elementov pervogo massiva bolwe\n");
return 0;
}
только выдает вот эти ошибки : Вот ошибки какие выдает компилятор: 12: Function 'rand' should have a prototype 13,15,16: Multiple declaration for 'i' помогите с ними =)
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-12-16 01:20:46.673333
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
www.translate.google.com quote:
ORIGINAL: GrafMine … З.Ы.вот пример каторый розберали целую прошлую страничку :
#include <stdio.h>
#include <conio.h>
int main( void )
{
int i, n1, n2, sum = 0;
int a1[] = { 1, 2, 3, 4 };
int a2[] = { 5, 6, 7, 8, 9 };
n1 = sizeof( a1 ) / sizeof( *a1 );
n2 = sizeof( a2 ) / sizeof( *a2 );
for ( i = 0; i < n1; i++ )
sum += a1[i];
for ( i = 0; i < n2; i++ )
sum += a2[i];
printf( "Summ = %d", sum );
getch();
return 0;
}
Увы не рабочий =( да и с сумой у него не совсем лады… вот на замену него код программы … Нук, что тут не работает?
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-12-16 07:12:54.486666
|
|
|
GrafMine
Сообщений: 23
Оценки: 0
Присоединился: 2009-04-29 17:08:19.376666
|
quote:
ORIGINAL: _SaZ_ www.translate.google.com quote:
ORIGINAL: GrafMine … З.Ы.вот пример каторый розберали целую прошлую страничку :
#include <stdio.h>
#include <conio.h>
int main( void )
{
int i, n1, n2, sum = 0;
int a1[] = { 1, 2, 3, 4 };
int a2[] = { 5, 6, 7, 8, 9 };
n1 = sizeof( a1 ) / sizeof( *a1 );
n2 = sizeof( a2 ) / sizeof( *a2 );
for ( i = 0; i < n1; i++ )
sum += a1[i];
for ( i = 0; i < n2; i++ )
sum += a2[i];
printf( "Summ = %d", sum );
getch();
return 0;
}
Увы не рабочий =( да и с сумой у него не совсем лады… вот на замену него код программы … Нук, что тут не работает? Извиняюсь ,видать не доглядел ,ну сума не соответствует примеру =) можно так сделать ? :
#include <stdio.h>
#include <conio.h>
int main( void )
{
int i, n1, n2, sum1, sum2 = 0;
int a1[] = { 1, 2, 3, 4 };
int a2[] = { 5, 6, 7, 8, 9 };
n1 = sizeof( a1 ) / sizeof( *a1 );
n2 = sizeof( a2 ) / sizeof( *a2 );
for ( i = 0; i < n1; i++ )
sum1 += a1;
for ( i = 0; i < n2; i++ )
sum2 += a2;
printf( "Summ1 = %d", sum1 );
printf( "Summ2 = %d", sum2 );
getch();
if(sum1<sum2)printf("Summa elementov vtorogo massiva bolwe\n");
else printf("Summa elementov pervogo massiva bolwe\n")
return 0;
}
[i][i] выдает след.ошибки: 14,16: Illegal use of pointer{sum1 +=<здесь курсор>a1;} 24: 'a1','a2' is asigned a value that is never used
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-12-16 11:35:46.136666
|
|
|
VAN32
Сообщений: 20
Оценки: 0
Присоединился: 2009-11-06 20:37:37.856666
|
Чого при вставки текста кодом Memo->Lines->Add("Text\text2\text3"); недобавляется символ " \ "
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-12-16 11:45:43.426666
|
|
|
psina007
Сообщений: 98
Оценки: 0
Присоединился: 2009-05-09 22:41:33.580000
|
Потому что "\t" это табуляция. Попробуй так: Memo->Lines->Add("Text\\text2\\text3");
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-12-16 11:59:07.140000
|
|
|
VAN32
Сообщений: 20
Оценки: 0
Присоединился: 2009-11-06 20:37:37.856666
|
quote:
ORIGINAL: psina007 Потому что "\t" это табуляция. Попробуй так: Memo->Lines->Add("Text\\text2\\text3"); Работает спасибо
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-12-16 12:04:18.123333
|
|
|
Lost_boy
Сообщений: 327
Оценки: 0
Присоединился: 2009-03-25 11:07:27.910000
|
GrafMine, прочитай основные сведения по языку, переменным, массивам и т.д. Ссылки я тебе уже дал! Ты пишешь бред.
for ( i = 0; i < n1; i++ )
sum1 += a1;
for ( i = 0; i < n2; i++ )
sum2 += a2;
Так делать нельзя! Ты пойми а1 это массив и суммируешь ты его по элементно, а чтобы получить доступ к каждому эл-ты мы используем цикл и переменную i которая на каждой итерации меняется, тем самым мы получаем сначала а1[0], потом a1[1], a1[2].. и т.д. quote:
Найти для каждого из массивов сумму всех элементов и сравнить полученные значения. Результат сравнения отобразить на экран Либо ты не понимаешь своего задания, либо, что вероятней, ты так и не понимаешь основ. Вот подправил немного код, все просто и разжевано:
#include <stdio.h>
#include <conio.h>
int main()
{
int i, n1, n2, sum = 0, sum1 = 0;
int a1[] = { 1, 2, 3, 4 };
int a2[] = { 5, 6, 7, 8, 9 };
n1 = sizeof( a1 ) / sizeof( *a1 );
n2 = sizeof( a2 ) / sizeof( *a2 );
for ( i = 0; i < n1; i++ )
sum += a1[i];
for ( i = 0; i < n2; i++ )
sum1 += a2[i];
printf( "Summ = %d", sum );
printf( "\nSumm1 = %d", sum1 );
if (sum > sum1)
printf( "\nSumm > Summ1 ");
if (sum < sum1)
printf( "\nSumm < Summ1 ");
else
printf( "\nSumm = Summ1");
getch();
return 0;
}
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-12-16 12:09:34.436666
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
quote:
ORIGINAL: GrafMine Извиняюсь ,видать не доглядел ,ну сума не соответствует примеру =) Да, потому что я считал общую сумму. quote:
ORIGINAL: GrafMine можно так сделать ? : … выдает след.ошибки: 14,16: Illegal use of pointer{sum1 +=<здесь курсор>a1;} 24: 'a1','a2' is asigned a value that is never used Естественно выдаёт.
Сумма 1 не инициализирована:
int i, n1, n2, sum1, sum2 = 0;
Ошибка компиляции:
(бред полный, ты походу даже теорию не читал по массивам)
for ( i = 0; i < n1; i++ )
sum1 += a1;
for ( i = 0; i < n2; i++ )
sum2 += a2;
Ты тут вместо наращивания суммы пытаешься n раз прибавлять к переменным один и тот же АДРЕС нулевого элемента.
В общем, иди учи теорию. Потом только приходи с задачами.
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-12-16 12:12:05.220000
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
quote:
ORIGINAL: Lost_boy if (sum > sum1) printf( "\nSumm > Summ1 "); else if (sum < sum1) printf( "\nSumm < Summ1 "); else printf( "\nSumm = Summ1"); Else забыл, а так в общем правильно ;).
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-12-16 12:20:29.436666
|
|
|
Lost_boy
Сообщений: 327
Оценки: 0
Присоединился: 2009-03-25 11:07:27.910000
|
quote:
ORIGINAL: _SaZ_ quote:
ORIGINAL: Lost_boy if (sum > sum1) printf( "\nSumm > Summ1 "); else if (sum < sum1) printf( "\nSumm < Summ1 "); else printf( "\nSumm = Summ1"); Else забыл, а так в общем правильно ;). К чему он тут)) ведь без него все прекрасно работает.
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-12-16 12:27:55.490000
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Если sum > sum1 то вывод будет такой: printf( "\nSumm > Summ1 "); printf( "\nSumm = Summ1");
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-12-16 13:08:37.656666
|
|
|
Lost_boy
Сообщений: 327
Оценки: 0
Присоединился: 2009-03-25 11:07:27.910000
|
quote:
ORIGINAL: _SaZ_ Если sum > sum1 то вывод будет такой: printf( "\nSumm > Summ1 "); printf( "\nSumm = Summ1"); Согласен не углядел.
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-12-16 14:21:52.790000
|
|
|
psina007
Сообщений: 98
Оценки: 0
Присоединился: 2009-05-09 22:41:33.580000
|
Кстати, GrafMine, я нашел способ как задать произвольную длину массива.
int arrsize = 0;
std::cin >> arrsize;
int* arr = new int[arrsize];
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-12-16 14:35:13.366666
|
|
|
Lost_boy
Сообщений: 327
Оценки: 0
Присоединился: 2009-03-25 11:07:27.910000
|
psina007, он на С пишет, по крайней мере пытается, так что спрячь свои "cin>>". З.Ы. Юзаем scanf вместо cin
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-12-16 14:43:43.306666
|
|
|
psina007
Сообщений: 98
Оценки: 0
Присоединился: 2009-05-09 22:41:33.580000
|
Из виду упустил, то что он на Си пишет.
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-12-17 01:05:56.036666
|
|
|
GrafMine
Сообщений: 23
Оценки: 0
Присоединился: 2009-04-29 17:08:19.376666
|
quote:
ORIGINAL: GrafMine quote:
ORIGINAL: GrafMine Помогите в решении задачи пожалуйста: Полями структуры есть координаты точки.Узнать три экземпляра структуры и найти периметр триугольника ,что создают эти точки. очень нуждаюсь в решении задачи. надеюсь на вашу отзывчивость… quote:
ORIGINAL: psina007 Детский сад, IMHO. #include <iostream>
#include <math.h>
using namespace std;
struct point
{
float X;
float Y;
};
int main(int argc,char* argv[])
{
point a,b,c;
a.X = 10; a.Y = 78;
b.X = 1.5; b.Y = 7.8;
c.X = 7.01; c.Y = 9.45;
double P = sqrt((a.X - b.X)*(a.X - b.X)+(a.Y - b.Y)*(a.Y - b.Y)) +
sqrt((a.X - c.X)*(a.X - c.X)+(a.Y - c.Y)*(a.Y - c.Y)) +
sqrt((c.X - b.X)*(c.X - b.X)+(c.Y - b.Y)*(c.Y - b.Y));
cout << P;
} В общем я так подумал и решил его сделать , только вот не знаю как его начать;),соответственно помогите пробить "бетон" землю постараюсь капнуть я сам … и обьясните что делает эта строка: result += pow(x, 2) * pow(y, 0.5); и как здесь работает "+="? =))
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-12-17 01:26:30.163333
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
В гугле напиши: operator += pow C++
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-12-17 13:56:56.680000
|
|
|
VAN32
Сообщений: 20
Оценки: 0
Присоединился: 2009-11-06 20:37:37.856666
|
Как сделать в Memo штоб текст добавлялся В опредильною строку. например: Було: Txt Txt Txt Txt Стало: Txt VAN32 Txt Txt
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-12-17 14:55:01.446666
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
0. Выучить русский язык 1. Удалить в нужной строке старый текст 2. Добавить новый
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-12-20 12:10:10.803333
|
|
|
Zmaster
Сообщений: 930
Оценки: 0
Присоединился: 2007-02-09 19:02:43.500000
|
http://articles.org.ru/lessond/les12.php
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-12-21 10:50:17.550000
|
|
|
Actek
Сообщений: 604
Оценки: 0
Присоединился: 2008-02-24 10:24:14.710000
|
вопрос. с помощью GetAsyncKeyState получаем виртуальный код клавиши в переменную key nScan= MapVirtualKeyEx(key, 0, layout);
chcount = ToAscii(key, nScan, buf, &ch, 0); потом переходим в ascii, чтобы работать с русской раскладкой. и когда пишу printf( "%с", (char)ch); то пишутся только маленькие буквы. Как учитывать заглавные?
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-12-21 11:19:09.423333
|
|
|
psina007
Сообщений: 98
Оценки: 0
Присоединился: 2009-05-09 22:41:33.580000
|
Думаю надо следить за тем или нажата кнопка Shift, и если она нажата, то букву преобразуем в заглавную.
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-12-21 12:07:24.860000
|
|
|
Actek
Сообщений: 604
Оценки: 0
Присоединился: 2008-02-24 10:24:14.710000
|
ну то что следить шифтом и кэпсом это понятно, но почему не выводит заглавные? преобразовывать через дополнительный массив(имхо не рационально)
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-12-21 12:14:40.006666
|
|
|
psina007
Сообщений: 98
Оценки: 0
Присоединился: 2009-05-09 22:41:33.580000
|
Зачем дополнительный массив? Можно просто сделать так:
char convertLetter(char c)
{
if((int)c >= (int)'a' && (int)c <= (int)'z') return (char)((int)c + 32);
else if((int)c >= (int)'A' && (int)c <= (int)'Z') return (char)((int)c - 32);
}
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-12-21 12:17:04.600000
|
|
|
Actek
Сообщений: 604
Оценки: 0
Присоединился: 2008-02-24 10:24:14.710000
|
это ты описал работу с латиницей. Тогда легче написать toupper()/tolower(). а меня интересует кириллица
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-12-21 21:03:32.673333
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
А разница?
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-12-22 05:59:36.210000
|
|
|
Actek
Сообщений: 604
Оценки: 0
Присоединился: 2008-02-24 10:24:14.710000
|
то что попробуй прибавь к букве А 32 и посмотри. проблему решил с помощью toupper((char)ch, locale("Russian")) -работает с русскими. теперь вопрос при GetKeyState(VK_SHIFT) < 0, после отпускания шифта первая нажатая буква все равно большая.
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-12-22 13:10:11.493333
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
quote:
ORIGINAL: Actek то что попробуй прибавь к букве А 32 и посмотри. А ты попробуй прибавь не какое-то волшебное, непонятно откуда взявшееся, число 32, а примерно так: c += 'ы' - 'Ы';
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-12-22 19:46:36.446666
|
|
|
pricolist
Сообщений: 17
Оценки: 0
Присоединился: 2009-12-21 21:11:38.130000
|
народ не могу найти косяк в цикле где одно отрицательное число #include <math.h> #include <iostream> using namespace std; int main (void) { double x,y,z,p,p1,p2,p3,m,r,r1,r2,r3,t=0; // t- счётчик cout<< "vvedite tri chisla"<<endl; cin>>x>>y>>z; if (x>=0&&y<0&&z>=0||x<0&&y>=0&&z>=0||x>=0&&y>=0&&z<0)// 1 отрицательное { if(x>=0) p1=x; else m=x; if(y>=0) p2=y; else m=y; if(z>=0) p3=z; else m=z; if(p1<=p2&&p1<=p3) {r=m*p1; cout<<"odno otrijatelinoe"<<r<<endl;}; if(p2<=p3&&p2<=p1) {r=m*p2; cout<<"odno otrijatelinoe"<<r<<endl;}; if(p3<=p2&&p3<=p1) {r=m*p3; cout<<"odno otrijatelinoe"<<r<<endl;}; }; if(x>=0&&y<0&&z<0 || x<0&&y>=0&&z<0|| x<0&&y<0&&z>=0)// 2 отрицательного { if(x>=0) p=x; else { t++; r1=x/2; cout<<t<<" otrijatelinoe = "<<r1<<endl;}; if(y>=0) p=y; else { t++; r2=y/2; cout<<t<<" otrijatelinoe = "<<r2<<endl;}; if(z>=0) p=z; else { t++; r3=z/2; cout<<t<<" otrijatelinoe = "<<r3<<endl;}; }; if(x>=0&&y>=0&&z>=0||x<0&&y<0&&z<0)// другое cout<<"net yslovi9"<<endl; return 0; }
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-12-22 19:56:20.506666
|
|
|
pricolist
Сообщений: 17
Оценки: 0
Присоединился: 2009-12-21 21:11:38.130000
|
на кучу переменных не обращайте внимания [:o]
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-12-22 20:20:06.833333
|
|
|
pricolist
Сообщений: 17
Оценки: 0
Присоединился: 2009-12-21 21:11:38.130000
|
а всё нашел
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-12-24 17:24:04.870000
|
|
|
GrafMine
Сообщений: 23
Оценки: 0
Присоединился: 2009-04-29 17:08:19.376666
|
Задачка: Найти значения выражения. Полученый результат занести в свободный файл вот что я накатал:
#include <stdio.h>
#include <math.h>
void main()
{
FILE*FL;
float G;
int a,b;
FL=fopen("input.txt","r");
if (FL==NULL)
{
puts ("owubka read");
}
else
{
fscanf(FL,"%i%i",&a,&b);
fclose(FL);
}
G=(log(pow(a,12)-sqrt(pow(a,7))*exp(b)/(cos(13*(a*a)))));
printf("%f",G);
{
FILE*fp;
fp=fopen("output.txt","w");
if (FL==NULL)
{
puts ("owubka write");
}
else
{
fprintf(fp, "%i",G);
fclose(fp);
}
}
}
Ну есть одно НО, в файле output.txt всегда получается "0", почему ? где ошибка =)
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-12-24 17:35:44.426666
|
|
|
GrafMine
Сообщений: 23
Оценки: 0
Присоединился: 2009-04-29 17:08:19.376666
|
quote:
ORIGINAL: GrafMine Ну есть одно НО, в файле output.txt всегда получается "0", почему ? где ошибка =) исправил ошибку,изменив : fprintf(fp,"%i",G); на fprintf(fp,"%f",G); Теперь работает прекрасно;), сейчас пишу другую задачку такого-же типа, возможно потребуются ваша подсказка:)
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-12-26 16:25:32.140000
|
|
|
Kadead
Сообщений: 108
Оценки: 0
Присоединился: 2007-10-22 23:02:04.916666
|
Добрый день.Подскажите пожалуйста как создать двумерный динамический массив. Вектор делаю так:
#include <iostream>
using namespace std;
int main()
{
int *ukazatel = new int [10];
return 0;
} И еще вопрос про динамичность данного массива. Как я понял в С++ нельзя сделать вот так:
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int arr[n][n];
return 0;
} компилятор ругается.Но в книжке по которой я учусь написано что с помощью указателей можно обойти это ограничение, но не написано как. попробывал сделать вот так:
#include <iostream>
using namespace std;
int main()
{
int *ukazatel = new int;
cin>>*ukazatel;
double arr [*ukazatel];
return 0;
}
не получилось. компилятор снова выдал ошибки. Подскажите пожалуйста как это реализовать.
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-12-26 16:37:01.416666
|
|
|
Zmaster
Сообщений: 930
Оценки: 0
Присоединился: 2007-02-09 19:02:43.500000
|
Двумерный массив - это, скажем так, указатель указателей на какой-либо тип данных. Следовательно, пишем: int **arr; //arr - указатель указателей на тип int Далее нужно под это дело выделить память: arr=new int*[5]; // Выделяем память под первый указатель, т.е. получили массив из пяти строк, если можно так сказать. for(int i=0;i<=4;i++)
arr[i]=new int[4]; // Выделяем память в цикле под столбцы, т.е. получили массив из 5 строк, в каждой строке 4 столбца. А лучше, чтобы с этим не мучаться, покури в сторону класса vector, который добрый дядя Бьерн Страуструп создал, чтобы люди не мучались.
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-12-26 17:03:00.700000
|
|
|
GrafMine
Сообщений: 23
Оценки: 0
Присоединился: 2009-04-29 17:08:19.376666
|
Помогите в решении задачи пожалуйста: Полями структуры есть координаты точки.Узнать три экземпляра структуры и найти периметр триугольника ,что создают эти точки. код программы на Си(для начинающих) данные нужно взять с файла, и записать в файл,очень нуждаюсь в решении задачи.
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-12-26 17:03:45.786666
|
|
|
Kadead
Сообщений: 108
Оценки: 0
Присоединился: 2007-10-22 23:02:04.916666
|
Все вроде бы уяснил как это делается))) У тебя там ошибка кстати исправь arr=new int*[5]; иначе компилятор ругается о несовместимости типов.Спасибо за помощь.А до классов мне пока еще рановато наверное.Пока буду придерживаться как в книжке.потом посмотрю.
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-12-26 17:38:01.120000
|
|
|
Kadead
Сообщений: 108
Оценки: 0
Присоединился: 2007-10-22 23:02:04.916666
|
GrafMine, я сам пока только учусь программированию на С++ и потому не умею работать с файлами.Если сумеешь организовать считывание из файла в поля структуры то вот тебе код программы. приспособлена для координат на плоскости.
#include <iostream>
#include <math.h>
using namespace std;
struct put
{
double x;
double y;
};
int main()
{
setlocale (0,"");
put A,B,C;
/*
тут считываешь данные в поля структуры из файла
*/
double AB=sqrt(pow(B.x-A.x,2)+pow(B.y-A.y,2));
double CB=sqrt(pow(B.x-C.x,2)+pow(B.y-C.y,2));
double AC=sqrt(pow(C.x-A.x,2)+pow(C.y-A.y,2));
double perim=AB+CB+AC;
cout<<"Периметр треугольника: P="<<perim<<endl;
return 0;
}
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2009-12-26 17:57:04.043333
|
|
|
GrafMine
Сообщений: 23
Оценки: 0
Присоединился: 2009-04-29 17:08:19.376666
|
quote:
ORIGINAL: Kadead GrafMine, я сам пока только учусь программированию на С++ и потому не умею работать с файлами.Если сумеешь организовать считывание из файла в поля структуры то вот тебе код программы. приспособлена для координат на плоскости.
#include <iostream>
#include <math.h>
using namespace std;
struct put
{
double x;
double y;
};
int main()
{
setlocale (0,"");
put A,B,C;
/*
тут считываешь данные в поля структуры из файла
*/
double AB=sqrt(pow(B.x-A.x,2)+pow(B.y-A.y,2));
double CB=sqrt(pow(B.x-C.x,2)+pow(B.y-C.y,2));
double AC=sqrt(pow(C.x-A.x,2)+pow(C.y-A.y,2));
double perim=AB+CB+AC;
cout>>"Периметр треугольника: P="<<perim<<endl;
return 0;
}
Спасибо конечно, ну я учу язык Си =) до С++ есчо не доходил…. ;)
|
|
|
|
|