Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

RE: Вопросы по C/C++ (Для новичков)

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> RE: Вопросы по C/C++ (Для новичков)
Имя
Сообщение << Старые топики   Новые топики >>
RE: Вопросы по C/C++ (Для новичков) - 2011-11-24 03:09:01.276666   
tarkys

Сообщений: 7
Оценки: 0
Присоединился: 2011-11-24 03:06:07.640000
Есть вопрос. Как записать одну из строк двухмерного динамического массива в одномерный динамический. Заранее спс за ответ.
Post #: 2321
RE: Вопросы по C/C++ (Для новичков) - 2011-11-24 10:53:40.386666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
typedef std::vector&lt; int &gt; array; typedef std::vector&lt; array&gt; matrix; matrix m; // Где-то тут инициализация, заполнение и пр. // ... size_t i = 5; // например, шестая строка, если она есть array a; a = m[i]; // Копирование
Post #: 2322
RE: Вопросы по C/C++ (Для новичков) - 2011-12-03 21:15:10.030000   
qw1234er

Сообщений: 14
Оценки: 0
Присоединился: 2011-04-01 21:22:36.600000
Подскажите пожалуйста как мой код можно переписать не используя операции деления,умножения и функцию atoi()?
Программа для перевода чисел из 10 в 2:
int main(int argc, char* argv[]) { int Dec,x,a[100],b[100],i=0,j=0; cin&gt;&gt;Dec; cout&lt;&lt;endl; while(Dec) { &nbsp;x=Dec%2;&nbsp;&nbsp; // 1 , 0 заносятся в&nbsp; a[i] &nbsp;Dec=Dec/2;[/i][i] &nbsp;a[i]=x; &nbsp;i++; } while(i) //&nbsp; тут двоичный код в обратном(правильном) порядке выводится { i--; b[j]=a[i]; cout&lt;&lt;b[j]; } system("Pause"); return 0; }
Post #: 2323
RE: Вопросы по C/C++ (Для новичков) - 2011-12-03 23:34:59.156666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
int val = 65535; int n = 0; int res[100]; while ( val ) { res[n] = val & 1; val &gt;&gt;= 1; n++; }
Post #: 2324
RE: Вопросы по C/C++ (Для новичков) - 2011-12-03 23:45:30.253333   
Sunzer

Сообщений: 253
Оценки: 31190
Присоединился: 2007-06-15 19:23:32.436666
quote:

операции деления,умножения
Реализуются примитивами + и - :)
Post #: 2325
RE: Вопросы по C/C++ (Для новичков) - 2011-12-04 19:21:57.673333   
qw1234er

Сообщений: 14
Оценки: 0
Присоединился: 2011-04-01 21:22:36.600000
thx
Post #: 2326
RE: Вопросы по C/C++ (Для новичков) - 2011-12-05 11:56:27.853333   
Gans_Hacker

Сообщений: 12
Оценки: 0
Присоединился: 2011-10-25 14:12:01.036666
Подскажите пожалуйста как правильно сложить два массива 4х5
Post #: 2327
RE: Вопросы по C/C++ (Для новичков) - 2011-12-05 12:41:32.313333   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Поэлементно. В чём, собственно, проблема?
Post #: 2328
RE: Вопросы по C/C++ (Для новичков) - 2011-12-05 14:51:32.056666   
Gans_Hacker

Сообщений: 12
Оценки: 0
Присоединился: 2011-10-25 14:12:01.036666
я пробовал так но всегда выводятся одни и те же числа
for(e=0; e&lt;4 ; e++) { &nbsp;for(f=0; f&lt;5; f++) &nbsp; { &nbsp;&nbsp; array3[e][f] = array1[a][b] + array2[c][d]; &nbsp;&nbsp; Form1-&gt;StringGrid1-&gt;Cells[e][f]=IntToStr(array3[e][f]); &nbsp; } }
Post #: 2329
RE: Вопросы по C/C++ (Для новичков) - 2011-12-05 15:33:25.293333   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
array3[e][f] = array1[a][b] + array2[c][d]; -&gt; array3[e][f] = array1[e][f] + array2[e][f];
Post #: 2330
RE: Вопросы по C/C++ (Для новичков) - 2011-12-05 15:52:03.553333   
Gans_Hacker

Сообщений: 12
Оценки: 0
Присоединился: 2011-10-25 14:12:01.036666
спасибо огромное за помощь =)
Post #: 2331
RE: Вопросы по C/C++ (Для новичков) - 2011-12-05 16:05:53.280000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Ты лучше подумай, почему такая ошибка возникла… Ты ведь переменные a b d c вообще не меняешь внутри цикла, т.е. для каждой ячейки всегда берёшь одни и те же значения.
Post #: 2332
RE: Вопросы по C/C++ (Для новичков) - 2011-12-05 17:27:34.496666   
Gans_Hacker

Сообщений: 12
Оценки: 0
Присоединился: 2011-10-25 14:12:01.036666
да я еще только учу его и не все понимаю как что работает
и еще пара вопросов которые не смог найти в инете
1)поменять столбцы местами в массиве
2)упорядочить столбец по убыванию
Post #: 2333
RE: Вопросы по C/C++ (Для новичков) - 2011-12-05 20:54:29.470000   
qw1234er

Сообщений: 14
Оценки: 0
Присоединился: 2011-04-01 21:22:36.600000
Подскажите плс , как перевести слово в 16-ный формат например:
Hello
48 65 6C 6C 6F.

Post #: 2334
RE: Вопросы по C/C++ (Для новичков) - 2011-12-06 11:09:23.410000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Gans_Hacker - ну так вот и учись. Насчёт твоих вопросов - делай всё по порядку:
1) научись менять местами столбцы, например, тебе нужно поменять первой и второй столбец. Для этого меняешь первый элемент первого столбца с первым элементом второго столбца, потом второй элемент первого столбца со вторым второго и т.д.
2) чтобы что-то упорядочить должен быть какой-то критерий сортировки. Для линейных массивов - это может быть само значение элемента, а вот для "столбца" - не понятно, что считать его значением. Но тут тоже самое. Любое упорядочивание в конечном счёте сводится к перестановке столбцов.
Старайся разобраться сам.

qw1234er - что значит "перевести слово"? Оно в памяти и так хранится в виде набора бит. А как их вывести на экран - в двоичном, шестнадцатеричном или буквенном виде - уже дело программиста. Если же тебе нужно получить строковое представление шестнадцатеричных кодов, то делается это просто:
0) пишется функция, которая преобразует цифру в её символьное представление, например так:
int convert( int ch ) { return ( ch &lt; 10 ) ? ( ch + '0' ) : ( ch - 10 + 'A' ); } 1) выделяешь память под N * 2 символов, где N - количество букв.
Потом для каждого байта:
2) берёшь старшие 4 бита, приводишь их к символьному представлению и загоняешь в первый байт
3) тоже самое для младших 4-х битов, только заносишь их во второй байт,
первая буква готова!
4) старшие 4 бита следующей буквы в третий байт и т.п.

Готовый код даже не просите, пока не покажите свои наработки и не возникнут более конкретные вопросы.
Post #: 2335
RE: Вопросы по C/C++ (Для новичков) - 2011-12-06 13:29:11.866666   
qw1234er

Сообщений: 14
Оценки: 0
Присоединился: 2011-04-01 21:22:36.600000
thx
и не думал просить :-D
щас буду пробовать-)
Post #: 2336
RE: Вопросы по C/C++ (Для новичков) - 2011-12-07 00:20:24.433333   
Gans_Hacker

Сообщений: 12
Оценки: 0
Присоединился: 2011-10-25 14:12:01.036666
вопрос почему в значение n возвращается другое число, вроде так же заменяются элементы в массиве, а на счет сортировки по убыванию там массив с числами
buff = v; v = array3[0][0]; n = array3[0][1]; v = n; n = buff;
Post #: 2337
RE: Вопросы по C/C++ (Для новичков) - 2011-12-07 12:22:03.380000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Подпиши комментарии к каждой строке, что и где ты пытаешься делать. Плюс - укажи какие типы у переменных, которые ты используешь.
Подсказка: поменять местами значения 2-х переменных можно так:
void swap1( int *v1, int *v2 ) { int buf = *v1; *v1 = *v2; *v2 = buf; } void swap2( int *v1, int *v2 ) { *v1 ^= *v2 ^= *v1 ^= *v2; } Или даже так:
std::swap( v1, v2 );
Post #: 2338
RE: Вопросы по C/C++ (Для новичков) - 2011-12-07 15:11:56.376666   
Gans_Hacker

Сообщений: 12
Оценки: 0
Присоединился: 2011-10-25 14:12:01.036666
да я это и хотел сделать спасибо
теперь осталось разобраться с сортировкой
Post #: 2339
RE: Вопросы по C/C++ (Для новичков) - 2011-12-08 11:40:37.790000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Учти, это обмен местами 2-х переменных, а не массивов.
Post #: 2340
RE: Вопросы по C/C++ (Для новичков) - 2011-12-08 18:03:19.446666   
Gans_Hacker

Сообщений: 12
Оценки: 0
Присоединился: 2011-10-25 14:12:01.036666
так мне надо было местами столбцы в массиве обменять
теперь осталось упорядочивание стобца числового массива по убыванию =\
int buf; for (int j=0;j&lt;4;j++)//счетчик if (array3[4][j] &lt; array3[4][j+1])//условие сортировки по убыванию { buf=array3[4][j];//обмен чисел в столбце массива array3[4][j]=array3[4][j+1]; array3[4][j+1]=buf; } else { buf=array3[4][j+1]; array3[4][j+1]=array3[4][j]; array3[4][j]=buf; }
Post #: 2341
RE: Вопросы по C/C++ (Для новичков) - 2011-12-08 18:32:27.186666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
У тебя if бессмысленный. И в иф и в элс у тебя меняются местами элементы. Зачем тебе тут вообще элс?
Post #: 2342
RE: Вопросы по C/C++ (Для новичков) - 2011-12-08 20:52:58.386666   
Gans_Hacker

Сообщений: 12
Оценки: 0
Присоединился: 2011-10-25 14:12:01.036666
а как тогда устроить сортировку по убыванию?
я себе как то так ее представлял
Post #: 2343
RE: Вопросы по C/C++ (Для новичков) - 2011-12-09 12:00:17.260000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Ты понимаешь, что ты у себя в коде не делаешь сортировки? Сортировка - это перестановка элементов по какому-то условию. У тебя в коде условие отсутствует, т.к. независимо от результата выражения array3[4][j] &lt; array3[4][j+1] ты переставляешь элементы. Т.е. ты переставляешь их абсолютно всегда, без условия.

В общем, бери листик и рисуй алгоритм. Потом пошагово проделай все операции на бумаге и только потом - программируй. Причём попробуй к каждой строке кода писать комментарий, что именно ты тут делаешь - так тебе будет проще разобраться, а нам указать на ошибки.
Плюс интернет тебе в помощь. Начни с этого: http://ru.wikipedia.org/wiki/Сортировка_пузырьком Это самая простая сортировка. Просто судя по твоему коду ты пока смутно представляешь, что ты пишешь.
Post #: 2344
RE: Вопросы по C/C++ (Для новичков) - 2011-12-10 16:22:07.620000   
Gans_Hacker

Сообщений: 12
Оценки: 0
Присоединился: 2011-10-25 14:12:01.036666
я вроде разобрался с сортировкой если правильно то почему не изменяет значений в stringgrid
for (int i=0; i&lt;3; i++)//поиск в оставшихся ячейках 3-&gt;2 &nbsp;for (int j=i; j&lt;4; j++)//поиск из всех 4 ячеек &nbsp; if (array3[5][i]&lt; array3[5][j])//условие &nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; int t = array3[5][i];//обмен переменных &nbsp;&nbsp;&nbsp; array3[5][i] = array3[5][j]; &nbsp;&nbsp;&nbsp; array3[5][j] = t; &nbsp;&nbsp; }
Post #: 2345
RE: Вопросы по C/C++ (Для новичков) - 2011-12-11 01:40:59.840000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Что за волшебное число 5?… Ещё раз тебя прошу - пиши комментарии к каждой строке, что ты тут пытаешься сделать.
Post #: 2346
RE: Вопросы по C/C++ (Для новичков) - 2011-12-11 11:15:17.870000   
Gans_Hacker

Сообщений: 12
Оценки: 0
Присоединился: 2011-10-25 14:12:01.036666
array3[5][4] это у меня массив в котором 5 столбцов и 4 строки
Post #: 2347
RE: Вопросы по C/C++ (Для новичков) - 2011-12-11 14:26:28.930000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Блин… Я про твой код, который ты написал последним… Что там за число 5? Почему ты всегда обращаешься к 5-й строке?!?! array[5][4] - это массив, где 5 строк и 4 столбца, не наоборот.

В общем… начни с чего-нибудь попроще, чем массивы. И попроси, чтобы тебя поучили пошаговой отладке, прежде чем браться за визуальное программирование.
Post #: 2348
RE: Вопросы по C/C++ (Для новичков) - 2011-12-17 22:55:31.150000   
Shiki

Сообщений: 1
Оценки: 0
Присоединился: 2011-12-17 22:50:09.840000
нужна помощь с кодом
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#pragma hdrstop
//—————————————————————————
#pragma argsused
int main(int argc, char * argv[])
{
int varl;
int var2;
//
int nvar2;
cout<<"insert var2:";
cin>>nvar2;
//
varl=2L*var2;
getch();
return 0;
}
при компилирование вылазит ошибка
[BCC32 Warning] File1.cpp(20): W8004 'varl' is assigned a value that is never used
Full parser context
File1.cpp(9): parsing: int main(int,char * *)
просто задать аргумент и найти неизвестное
Post #: 2349
RE: Вопросы по C/C++ (Для новичков) - 2011-12-18 13:59:49.663333   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Сделай вывод: cout << varl;
И это не ошибка, это предупреждение. Если переведёшь на русский - всё поймёшь
Post #: 2350
RE: Вопросы по C/C++ (Для новичков) - 2011-12-22 21:46:57.040000   
sssr1918

Сообщений: 17
Оценки: 0
Присоединился: 2011-12-06 17:34:22.253333
Подскажите есть кто тут кто может правильно разжевать работу C++
через скайп или аську
правильно поставить этапы освоения с максимально эффективностью и сокращением времени
заплачу денег за обучение c++

icq 285восемь77
Post #: 2351
RE: Вопросы по C/C++ (Для новичков) - 2011-12-23 11:18:10.056666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
20 WMZ в час устроит?
Post #: 2352
RE: Вопросы по C/C++ (Для новичков) - 2012-01-05 01:38:04.110000   
UncleBens

Сообщений: 10
Оценки: 0
Присоединился: 2008-12-02 01:33:59.240000
объясните пожалуйста что есть что:
int ival = 1024; int *pi = &ival; int **ppi = &pi cout &lt;&lt; "**ppi = "&lt;&lt; **ppi &lt;&lt; endl; // значение переменной cout &lt;&lt; "*ppi = "&lt;&lt; *ppi &lt;&lt; endl; // адрес переменной cout &lt;&lt; "ppi = "&lt;&lt; ppi &lt;&lt; endl; // ? cout &lt;&lt; "&ppi = "&lt;&lt; &ppi &lt;&lt; endl; // cout &lt;&lt; "&pi = " &lt;&lt; &pi &lt;&lt; endl; cout &lt;&lt; "&ival = " &lt;&lt; &ival &lt;&lt; endl; //адрес переменной
Post #: 2353
RE: Вопросы по C/C++ (Для новичков) - 2012-01-06 13:04:35.370000   
MrKrab

Сообщений: 5
Оценки: 0
Присоединился: 2011-11-07 13:57:12.956666
#include &lt;iostream.h&gt; int main(){ int f , s; char fly[12]; int rem_a; int rem_b; cout&lt;&lt;"Type the formule"; gets(fly); int i=0; int ku = 1; char op; do { switch (fly[i]){ case '+' : rem_a = i - 1; rem_b = i + 1; ku = 0; op = '+'; break; case '-' : rem_a = i - 1; rem_b = i + 1; ku = 0; op = '-'; break; case '*' : rem_a = i - 1; rem_b = i + 1; ku = 0; op = '*'; break; case '/' : rem_a = i - 1; rem_b = i + 1; ku = 0; op = '/'; break; default : break; } i++; }while (ku!=0); f = 0; int x = 1; for (rem_a; rem_a; rem_a-- , x *=10) f += fly[rem_a]*x; int y = 1; int z = rem_b; int m; for (z; fly[z] != '\0'; z++) m = 1; int rem_c = z - 1; for (rem_c , rem_b ; rem_c!=rem_b; rem_c-- , y *=10) s += fly[rem_c]*y; int res switch (op){ //Здесь выдаётся ошибка "Declaration syntax error" case '+': res = f + s; case '-': res = f - s; case '*': res = f - s; case '/': res = f / s; default: res = 0; } cout&lt;&lt;"\n Result is : "&lt;&lt;res ; int e = 2; cin&gt;&gt;e ; return (0); } Компиллятор мне в одном месте (оно помечено) выдаёт ошибку, хотя по идее всё написано правильною В чём здесь прикол?
Post #: 2354
RE: Вопросы по C/C++ (Для новичков) - 2012-01-08 11:07:11.033333   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
MrKrab, ты забыл точку с запятой на предыдущей строке.
Post #: 2355
RE: Вопросы по C/C++ (Для новичков) - 2012-02-09 00:04:54.303333   
El perro rabioso

Сообщений: 78
Оценки: 0
Присоединился: 2011-07-11 23:49:44.860000
Добрый вечер,

есть следующий код

#include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; #include &lt;fstream&gt; int n[10], max, max_i; using namespace std; int* CallNumberGeneration() { srand(time(NULL)); int sum=0; cout &lt;&lt; "Количество вызовов за первые 10 секунд\n\nСекунда \t Количество вызовов\n\n"; for (register int i=0; i&lt;10; i++) { *(n+i) = rand() % 30; cout &lt;&lt; i+1 &lt;&lt; "\t\t " &lt;&lt; *(n+i) &lt;&lt; "\n"; sum = sum + *(n+i); } cout &lt;&lt; "\nСуммарное количество вызовов за 10 секунд: " &lt;&lt; sum &lt;&lt; "\n\n"; return n; } int maxCallNumber(int *n) { static int max = 0; static int max_i = 0; for (int i=0; i&lt;10; i++) if (*(n+i) &gt; max) { max = *(n+i); max_i = i; } cout &lt;&lt; "Максимальное число вызовов " &lt;&lt; max &lt;&lt; " получено на " &lt;&lt; max_i &lt;&lt; "-ой секунде.\n\n"; return max, max_i + 1; } void WriteToFile(int *n, int max, int max_i) { ofstream MyFile("ATC.txt", ios::out); MyFile &lt;&lt; "Количество вызовов за первые 10 секунд\n\nСекунда \t Количество вызовов\n\n"; for (int i=0; i&lt;10; i++) MyFile &lt;&lt; i+1 &lt;&lt; "\t\t " &lt;&lt; *(n+i) &lt;&lt; "\n"; MyFile &lt;&lt; "Максимальное число вызовов " &lt;&lt; max &lt;&lt; " получено на " &lt;&lt; max_i &lt;&lt; "-ой секунде.\n\n"; MyFile.close(); } int main() { CallNumberGeneration(); maxCallNumber(n); WriteToFile(n, max, max_i); system("PAUSE"); return 0; }
При вызове ф-ии WriteToFile компилятор ругается на переменную max, якобы она undeclared, хотя с массивом, инициализированным вместе с ней, этого не происходит.

В чем причина?
Post #: 2356
RE: Вопросы по C/C++ (Для новичков) - 2012-02-09 01:09:29.020000   
bob3r

Сообщений: 67
Оценки: 0
Присоединился: 2011-06-03 02:30:17.840000
Массив инициализирован, а max и max_i (глобальные переменные) не инициализированы. Вместо их инициализированы статические переменные из функции инициализации, которые имеют такие же названия и типы.

Замени
static int max = 0;
static int max_i = 0;
На
max = 0;
max_i = 0;

И ещё, разве в С++ уже можно возвращать список переменных:
return max, max_i + 1;
Это такие возможности нового стандарта? Я думал тут ошибка будет.
Post #: 2357
RE: Вопросы по C/C++ (Для новичков) - 2012-02-09 01:39:49.990000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
return max, max_i + 1; - всё верно, тут ошибка, вернёт только правое выражение.
Post #: 2358
RE: Вопросы по C/C++ (Для новичков) - 2012-02-09 10:44:56.580000   
El perro rabioso

Сообщений: 78
Оценки: 0
Присоединился: 2011-07-11 23:49:44.860000
А как вернуть две переменные?

Попробовал так:
return max; return (max_i + 1);
и вынес инициализацию наверх вот так:

int n[10], max = 0, max_i = 0;
Проблема осталась та же.
Post #: 2359
RE: Вопросы по C/C++ (Для новичков) - 2012-02-09 10:52:32.463333   
El perro rabioso

Сообщений: 78
Оценки: 0
Присоединился: 2011-07-11 23:49:44.860000
Странно, переименовал переменные в maximum и maximum_1 соответственно, и все заработало. А ведь max не считается ключевым словом…
Post #: 2360
Страниц:  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 [59] 60
Все форумы >> [Компилируемые языки] >> RE: Вопросы по C/C++ (Для новичков)







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.