RE: Вопросы по C/C++ (Для новичков)
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-08-01 18:10:57.036666
|
|
|
El perro rabioso
Сообщений: 78
Оценки: 0
Присоединился: 2011-07-11 23:49:44.860000
|
Все сделал, если кому интересно, вот исходник:
#include <iostream>
using namespace std;
void sorting1(int n,int *arr)
{
for (int i=0;i<n-1;i++)
for (int j=0;j<n-i-1;j++)
{
int temp;
if (*(arr+j)>*(arr+j+1))
{
temp=*(arr+j+1);
*(arr+j+1)=*(arr+j);
*(arr+j)=temp;
}
}
}
void sorting2(int n,int *arr)
{
int temp;
for (int k=0;k<14;k++)
{
int min=*(arr+k);
for (int j=k+1;j<15;j++)
{
if (*(arr+j)<min)
{
temp=min;
min=*(arr+j);
*(arr+j)=temp;
}
}
*(arr+k)=min;
}
}
void sorting3(int n,int *arr)
{
int i, j, tmp;
for (i = 1; i < n; i++)
{
for (j = i; j > 0 && arr[j - 1] > arr[j]; j--)
{
tmp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = tmp;
}
}
}
int main()
{
register int n;
printf("Give the number of elemets in the array: ");
scanf("%d",&n);
register int brd;
printf("\n\nGive the maximum permissible value of array elements: ");
scanf("%d",&brd);
register int arr[n];
printf("\n\nYour array is: ");
for (register short int i=0;i<n;i++)
{
*(arr+i)=rand() % brd;
printf("%d ",*(arr+i));
}
int method;
int size=sizeof arr;
printf("\n\nThe size of the array: %i", size);
printf("\n\nPlease, choose the ordering method:\n\n");
printf("- for bubble sort please press 1.\n");
printf("- for transport method please press 2.\n");
printf("- for input method please press 3.\n\n");
scanf("%d",&method);
switch (method)
{
case 1:
sorting1(n,arr);
break;
case 2:
sorting2(n,arr);
break;
case 3:
sorting3(n,arr);
break;
default:
cout<<"Wrong key!"<<endl;
}
printf("\nThe array sorted is: ");
for (int m=0;m<n-1;m++)
printf("%d ",*(arr+m));
printf("\n\n");
system("PAUSE");
return 0;
}
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-08-01 18:23:27.350000
|
|
|
AleXX_mirny
Сообщений: 6
Оценки: 0
Присоединился: 2011-07-08 19:32:33.940000
|
void text_string::split(char x,text_string temp[]) //text_string это класс на подобие строки
{
int i=0,r[10],y=0; //надеюсь с y и i все понятно в r[] хранятся номера символов
char chtemp[256];
while (main_string[i]!='\0') //main_string это массив символов (обычный, без *)
{
if (main_string[i]==x){ r[y]=i;y++;}
i++;
};
text_read(chtemp); //читает строку
temp[0]=chtemp; //записывает строку в масив
temp[0].cut(r[0]); //обрезает строку
for (int i=1;i<y+1;i++)
{
text_read(chtemp,r[i],r[i+1]+1); //читает уже определенный кусок строки
temp[i]=chtemp;//записывает строку в массив
}
temp[i]=""; //записывает пустую чтроку
}; quote:
Run-Time Check Failure #2 - Stack around the variable 'chtemp' was corrupted. где проблема?) UPD: ох, извиняюсь, переполнился буфер, длина переданной строки была больше 256 символов
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-08-01 18:42:29.660000
|
|
|
El perro rabioso
Сообщений: 78
Оценки: 0
Присоединился: 2011-07-11 23:49:44.860000
|
Зашел на сайт http://www.cplusplus.com и на основе описанных там библиотек написал такую программу:
#include <cstdio>
#include <iostream>
using namespace std;
void get_text()
{
char mystring[100];
FILE *myfile;
myfile=fopen("empty.txt","w");
fgets (mystring , 100 , myfile);
puts(mystring);
fclose(myfile);
}
int main()
{
printf("Enter the text:\n\n)");
get_text();
system("pause");
return 0;
}
Код функции пользователя, в принципе, практически такой же как на http://www.cplusplus.com/reference/clibrary/cstdio/fgets/, однако (на мой взгляд это самое страшное слово в мире), программа не работает. Что сделано не так?
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-08-01 23:41:55.930000
|
|
|
Klofelin
Сообщений: 68
Оценки: 0
Присоединился: 2010-09-03 20:58:52.116666
|
Непонятно, что должна делать твоя программа. Сначала просит ввести юзера некий текст, но не дожидаясь этого совершает какие-то таинственные действия. Я откомментировал твою функцию get_text, посмотри сам, что ты написал.
void get_text()
{
char mystring[100];
FILE *myfile;
myfile=fopen("empty.txt","w"); //создаем/открываем файл в режиме "для записи"
fgets (mystring , 100 , myfile);//считываем из этого файла одну строку в массив "mystring"
puts(mystring); // выводим содержимое массива "mystring" на экран
fclose(myfile);
}
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-08-01 23:44:17.603333
|
|
|
El perro rabioso
Сообщений: 78
Оценки: 0
Присоединился: 2011-07-11 23:49:44.860000
|
Она должна считывать данные с клавиатуры и заносить их в файл. Klofelin, спасибо, наставил на путь истинный. Все отредактировал, теперь работает. Хрень спросил не подумав[&o]
#include <cstdio>
#include <iostream>
using namespace std;
void get_text()
{
char mystring[256];
FILE *myfile;
myfile=fopen("empty.txt","w");
gets(mystring);
fputs(mystring, myfile);
fclose(myfile);
}
int main()
{
printf("Enter the text:\n\n)");
get_text();
system("pause");
return 0;
}
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-08-01 23:58:34.266666
|
|
|
Klofelin
Сообщений: 68
Оценки: 0
Присоединился: 2010-09-03 20:58:52.116666
|
Ну вот так, например, можно
void get_text()
{
char mystring[100];
FILE *myfile;
myfile=fopen("empty.txt","w"); //создаем/открываем файл в режиме "для записи"
gets (mystring); //получаем строку от юзера
fprintf(myfile, "%s", mystring); // записываем строку в файл
fclose(myfile);
}
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-08-01 23:59:22.200000
|
|
|
El perro rabioso
Сообщений: 78
Оценки: 0
Присоединился: 2011-07-11 23:49:44.860000
|
Синхронно думали :):)
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-08-02 08:23:41.130000
|
|
|
Apathy^^
Сообщений: 96
Оценки: 10
Присоединился: 2011-07-01 17:14:09.226666
|
имхо если писать 1 запись то сгодиться,если же писать несколько записай в файл использовал бы атрибут "a"
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-08-03 14:03:50.130000
|
|
|
UncleBens
Сообщений: 10
Оценки: 0
Присоединился: 2008-12-02 01:33:59.240000
|
Всем доброго времени суток. Изучаю классы. Не могу перегрузить оператор "+" для строк в старом стиле.
char CMessage::operator +(const CMessage& smess)const
{
return strcat(this->getString,smess.getString);
}
getString возвращает char* ошибки компиляции error C3867: 'CMessage::getString': function call missing argument list; use '&CMessage::getString' to create a pointer to member error C3867: 'CMessage::getString': function call missing argument list; use '&CMessage::getString' to create a pointer to member Так же посоветуйте литературу конкретно по ссылкам указателям и всеми производными случаями их использования(классы, функции, с модификаторами конст и т.д.). спс за ответы
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-08-03 14:15:38.106666
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Для вызова метода/функции в С++ обязательно писать скобки: getString() Сигнатура метода должна быть char * CMessage:: … Некоторые ссылки: http://www.rsdn.ru/article/cpp/cstr.xml http://www.rsdn.ru/article/cpp/ObjectsAndPointers.xml http://www.rsdn.ru/article/cpp/ObjectsAndPointers2.xml
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-08-04 11:58:48.890000
|
|
|
Claorisel
Сообщений: 234
Оценки: 18
Присоединился: 2010-01-12 19:36:12.130000
|
После cout << бла бла бла; допиши getch();
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-08-04 14:49:36.453333
|
|
|
KwanzaBot
Сообщений: 129
Оценки: 0
Присоединился: 2011-04-18 19:45:33.773333
|
Подскажите как собрать в gcc проект с такой структурой:
main.cpp
c_p.h - описание класса
c_p.cpp - реализация
Просто "$ g++ ./main.cpp" не получается)
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-08-04 15:43:52.426666
|
|
|
Claorisel
Сообщений: 234
Оценки: 18
Присоединился: 2010-01-12 19:36:12.130000
|
Поищи здесь http://www.firststeps.ru/linux/r.php?3
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-08-05 22:26:34.523333
|
|
|
A_Rud
Сообщений: 1
Оценки: 0
Присоединился: 2011-08-05 22:15:10.386666
|
Подскажите пожалуйста как в C++Builder создать две формы в приложении, чтобы они работали одновременно?
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-08-06 00:27:02.283333
|
|
|
tеstеr
Сообщений: 377
Оценки: -46
Присоединился: 2008-02-08 17:56:40.563333
|
у формы есть свойсво modal (модальность), достаточно у второй формы поставить модальность = false. И показать её. Будут две формы и обе будут доступны.
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-08-07 12:53:21.076666
|
|
|
AleXX_mirny
Сообщений: 6
Оценки: 0
Присоединился: 2011-07-08 19:32:33.940000
|
как вывод одной программы направить в стандартный ввод другой?
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-08-07 13:15:09.653333
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
AleXX_mirny, используй popen: http://pubs.opengroup.org/onlinepubs/009695399/functions/popen.html
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-08-07 20:33:57.550000
|
|
|
AleXX_mirny
Сообщений: 6
Оценки: 0
Присоединился: 2011-07-08 19:32:33.940000
|
простите за наивность, но можно на примере? :)
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-08-07 20:38:09.060000
|
|
|
Аpathy^^
Сообщений: 504
Оценки: 10
Присоединился: 2011-08-02 18:35:14.340000
|
можете помочь обновить indy в c builder 6?
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-08-10 19:20:01.606666
|
|
|
AleXX_mirny
Сообщений: 6
Оценки: 0
Присоединился: 2011-07-08 19:32:33.940000
|
quote:
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\libmysql.dll : fatal error LNK1107: недопустимый или поврежденный файл: не удается прочитать по 0x270 и что делать?
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-08-17 05:47:45.126666
|
|
|
AleXX_mirny
Сообщений: 6
Оценки: 0
Присоединился: 2011-07-08 19:32:33.940000
|
void put_line(text_string string)
{
data_file.seekg(ios::end);
char temp[256];
string.text_read(temp);
for (int i=0;i<string.get_length();i++)
{
data_file.put(temp[i]);
}
} при выполнении функции, с файлом ничего не происходит. почему?
void put_line(text_string string)
{
data_file2.open(file_name);
data_file2.end;
char temp[256];
string.text_read(temp);
for (int i=0;i<string.get_length();i++)
{
data_file2.put(temp[i]);
}
data_file2.close();
} изменил. теперь файл стирается, а строка пишется с начала
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-08-20 21:51:30.760000
|
|
|
Klofelin
Сообщений: 68
Оценки: 0
Присоединился: 2010-09-03 20:58:52.116666
|
q*=(((-1)*x*x)/((2*n-1)*2*n));
Здесь ошибка. В первой итерации, когда n равен нулю, у тебя происходит деление на нуль. На нуль делить нельзя.
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-08-20 22:25:38.450000
|
|
|
El perro rabioso
Сообщений: 78
Оценки: 0
Присоединился: 2011-07-11 23:49:44.860000
|
Спасибо, исправил. Но результат не совпадает с контрольным. Где-то еще ошибка в алгоритме.
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-08-22 01:16:18.440000
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Для каких N ты считаешь? Скорее всего у тебя элементарное переполнение.
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-08-22 01:28:42.283333
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
quote:
ORIGINAL: El perro rabioso Спасибо, исправил. Но результат не совпадает с контрольным. Где-то еще ошибка в алгоритме. Насчёт алгоритма – не скажу. Ошибка в реализации. У тебя x и n объявлены как int. Ты считаешь выражение: (((-1)*x*x)/((2*n-1)*2*n)) Слева и справа от знака деления стоят подвыражения, которые после вычислений дают результат типа int. Значит используется целочисленное деление, то есть деление нацело. А это тебе не надо совершенно. Как минимум, стоит написать так: (((-1.0)*x*x)/((2.0*n-1)*2*n)), тогда и сверху и снизу результат будет float'ом, и деление будет уже выполняться в числах с плавающей запятой. Но вообще, правильнее было бы, объявить x как float, или точнее как double.
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-08-22 14:23:07.216666
|
|
|
El perro rabioso
Сообщений: 78
Оценки: 0
Присоединился: 2011-07-11 23:49:44.860000
|
rgo, спасибо, программа работает, но результат не совпадает с контрольным. Разницы между применением double и float не наблюдается.
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-08-22 15:59:46.406666
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
quote:
ORIGINAL: El perro rabioso rgo, спасибо, программа работает, но результат не совпадает с контрольным. Разницы между применением double и float не наблюдается. quote:
ORIGINAL: _SaZ_ Для каких N ты считаешь? Скорее всего у тебя элементарное переполнение. Факториал от 10 уже не влезет в int на 32-х разрядной системе. С типами float / double тоже есть проблемы, когда ты к очень большому числу прибавляешь маленькое - оно игнорируется.
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-08-22 19:15:15.846666
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
_SaZ_, ну посмотри ты в код, там факториал не высчитывается явно. Высчитывается лишь множитель, который на самом деле равен отношению следующего члена ряда к предыдущему. Максимум что там может случиться плохое – при некотором N число окажется слишком маленьким по модулю. Короче превратиться в ноль. И тогда начиная с N и до 100 программа будет суммировать нули. Но это никак не скажется на правильности результата. El perro rabioso Да у тебя ж там вообще хрень сплошная. n меняется от нуля до 100. расскажи мне, как вычисляются s и q при n равном нулю. И скажи мне, чему они равны. Вот возьми калькулятор, посчитай, и выпиши здесь ответ. Кроме того, как я понимаю ты ждёшь от пользователя, что он введёт тебе угол в градусах. И при вычислении косинуса библиотечной функцией ты заботливо переводишь градусы в радианы, поскольку библиотечная функция градусов не понимает. Но нахрена ты градусы засовываешь в ряд? Этот ряд тоже не знает ничего про градусы и работает исключительно с радианами.
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-08-23 19:06:11.950000
|
|
|
Sрam
Сообщений: 2863
Оценки: 372
Присоединился: 2009-01-16 15:23:43.276666
|
Всем привет) Не стал создавать новую тему для одного вопроса, собсно сам вопрос: Не удается получить имя диска, код следующий: quote:
#include <iostream> #include "Windows.h" #include <stdlib.h> using namespace std; int main(int argc, char* argv[]) { char DiskLabel[256]; char *DiskName = "C:\\"; GetVolumeInformationA(DiskName, DiskLabel, MAX_PATH, NULL, NULL, NULL, NULL, 0); cout<<DiskLabel<<endl; system("pause"); return 0; } Взял от сюда: http://www.cyberguru.ru/cbuilder-sources/hardware/polutchenie-metki-diska.HТМL Что не так?8|
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-08-23 23:37:38.570000
|
|
|
El perro rabioso
Сообщений: 78
Оценки: 0
Присоединился: 2011-07-11 23:49:44.860000
|
quote:
ORIGINAL: rgo El perro rabioso Да у тебя ж там вообще хрень сплошная. n меняется от нуля до 100. расскажи мне, как вычисляются s и q при n равном нулю. И скажи мне, чему они равны. Вот возьми калькулятор, посчитай, и выпиши здесь ответ. Кроме того, как я понимаю ты ждёшь от пользователя, что он введёт тебе угол в градусах. И при вычислении косинуса библиотечной функцией ты заботливо переводишь градусы в радианы, поскольку библиотечная функция градусов не понимает. Но нахрена ты градусы засовываешь в ряд? Этот ряд тоже не знает ничего про градусы и работает исключительно с радианами. Спасибо огромное, все исправил, теперь работает корректно:)
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
float x;
double cosinus;
printf("Enter x: ");
scanf("%f", &x);
x=M_PI*x/180;
cosinus=cos(x);
printf("\n\ncos(x)=%f", cosinus);
float s=0, q=1;
register int n;
for (n=1; n<=100; n++)
{
s+=q;
q*=((-1.0)*x*x)/((2.0*n-1)*2.0*n);
}
printf("\n\ncos(x)=%f",s);
printf("\n\n");
system("pause");
return 0;
}
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-08-23 23:44:08.160000
|
|
|
El perro rabioso
Сообщений: 78
Оценки: 0
Присоединился: 2011-07-11 23:49:44.860000
|
quote:
ORIGINAL: Sрam Всем привет) Не стал создавать новую тему для одного вопроса, собсно сам вопрос: Не удается получить имя диска Попробуй так:
#include <iostream>
#include <Windows.h>
#include <cstdlib>
using namespace std;
int main(int argc, char* argv[])
{
char DiskLabel[256];
char *DiskName = "C:\\";
GetVolumeInformationA(DiskName, DiskLabel, MAX_PATH, NULL, NULL, NULL, NULL, 0);
cout<<DiskLabel<<endl;
system("pause");
return 0;
}
У меня получилось. Просто поменял название библиотеки stdlib.h на cstdlib. Последнее обозначение принято в С++.
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-08-24 12:50:44.583333
|
|
|
Sрam
Сообщений: 2863
Оценки: 372
Присоединился: 2009-01-16 15:23:43.276666
|
quote:
ORIGINAL: El perro rabioso quote:
ORIGINAL: Sрam Всем привет) Не стал создавать новую тему для одного вопроса, собсно сам вопрос: Не удается получить имя диска Попробуй так:
#include <iostream>
#include <Windows.h>
#include <cstdlib>
using namespace std;
int main(int argc, char* argv[])
{
char DiskLabel[256];
char *DiskName = "C:\\";
GetVolumeInformationA(DiskName, DiskLabel, MAX_PATH, NULL, NULL, NULL, NULL, 0);
cout<<DiskLabel<<endl;
system("pause");
return 0;
}
У меня получилось. Просто поменял название библиотеки stdlib.h на cstdlib. Интересно с каким бубном компилятором этот сорец у тебя запахал? PS quote:
Последнее обозначение принято в С++. Ну ты меня стандартами не пугай ;)
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-08-24 13:38:51.440000
|
|
|
El perro rabioso
Сообщений: 78
Оценки: 0
Присоединился: 2011-07-11 23:49:44.860000
|
DevC++ съел и не заметил.
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-08-24 16:38:56.003333
|
|
|
xp3
Сообщений: 1
Оценки: 0
Присоединился: 2011-08-24 12:49:02.113333
|
Добрый день. Может кто-нибудь сталкивался с протоколом SNMP. Какой формат пакета ? можно ли без сторонних библиотек на чистой Си написать клиента ? (нужно получить коммунити нэйм точки , может еще несколько параметров ) Иль может подскажете другой способ получения данных с точки доступа ВайФай ?
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-08-24 19:03:13.886666
|
|
|
Sрam
Сообщений: 2863
Оценки: 372
Присоединился: 2009-01-16 15:23:43.276666
|
quote:
ORIGINAL: El perro rabioso DevC++ съел и не заметил. Видео в студию:)
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-08-26 22:59:08.456666
|
|
|
El perro rabioso
Сообщений: 78
Оценки: 0
Присоединился: 2011-07-11 23:49:44.860000
|
Могу отправить скриншот
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-08-28 12:24:06.860000
|
|
|
El perro rabioso
Сообщений: 78
Оценки: 0
Присоединился: 2011-07-11 23:49:44.860000
|
Добрый день, обратил внимание, что даже самый простой код на С++ скомпилированный в виде .exe с помощью стандартного компилятора DevC++ занимает минимум полмегабайта, в то время как сложный софт, например CCleaner занимает около 3,5 Мб. В чем причина?8|
|
|
|
|
|