Параметри пошуку (Сторінка 1 з 2)
Ласкаво просимо!
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
#Sparta написав:Ну тут є суттєвим наступне питання.
Ви хочете читати з файлу чи консольний ввід передбачаєте?
Консольний ввід.
Як шукати '\n'? Коли ввести якийсь char c і після кожного числа перевіряти умову (c != '\n'), то c буде "їсти" першу цифру кожного наступного числа.
Потрібно зчитати числа до кінця рядка. Чи можна це зробити без string і char*? Чи є в C++ якась функція подібна до eoln в Pascal?
1 тест не проходить через неправильну відповідь.
#include <iostream>
#include <iomanip>
#include <math.h>
using namespace std;
int main()
{
int T = 0, l, h, k;
cin >> l >> h >> k;
while (l >= 0)
{
++T;
double S = 0;
int e;
for (int i = l; i <= h; ++i)
{
e = floor(k*log10((double)h));
S += pow(10, k*log10((double)i)-e);
}
while (S >= 1) {S /= 10; ++e;}
cout << "Case ";
cout << setfill('0') << setw(4) << T << ": ";
if (S)
{
cout << fixed << setprecision(6) << S << 'e';
cout << setfill('0') << setw(10) << e << endl;
}
else cout << "0.000000e0000000001" << endl;
cin >> l >> h >> k;
}
return 0;
}
http://www.e-olymp.com/uk/solutions/2095631
Re: qsort (28 відповідей, залишених у C++)
Re: qsort (28 відповідей, залишених у C++)
Re: qsort (28 відповідей, залишених у C++)
Ось умова задачі:
Задача Strip На довгій смужці записується велике число, після чого смужка розрізається на кілька частин таким чином, що на кожній частині буде одна або кілька цифр. Відомо, що до розрізання на смужці було записано максимальне число. Напишіть програму, яка відновить це число.
Технічні умови
Програма Strip читає з пристрою стандартного введення N (1≤N≤100) – кількість частин, на які була розрізана смужка. Кожен з наступних N рядків містить частину стрічки - одне число від 1 до 100 цифр. Гарантується, що хоча б на одній із частин перша цифра відмінна від нуля. Програма виводить на екран одне число – максимальне число до розрізання.
Re: qsort (28 відповідей, залишених у C++)
Знову якась проблема з покажчиками?
Re: qsort (28 відповідей, залишених у C++)
Якщо ввести
2
88
89, то виведе 8988, тобто 89 має стояти перед 88 (так і має бути), але якщо ввести
5
87
88
89
8
47, то виведе 888898747. Тут вже 89 стоїть після 88.
#include <iostream>
using namespace std;
int cmp(const void* str1, const void* str2)
{
char* s1 = *(char**)str1, *s2 = *(char**)str2;
int l = min(strlen(s1), strlen(s2));
if (strncmp(s1, s2, l) || strlen(s1) == strlen(s2)) return -strncmp(s1, s2, l);
unsigned char i = l;
if (strlen(s1) > strlen(s2))
{
while (s1[i] == s1[l-1] && i < strlen(s1)) ++i;
return s1[i]-s1[l-1];
}
else
{
while (s2[i] == s2[l-1] && i < strlen(s2)) ++i;
return s2[i]-s2[l-1];
}
}
int main()
{
/*char** s1 = 0, **s2 = 0;
//char** p1 = 0, **p2 = 0;
cin >> *s1 >> *s2;
//*p1 = s1; *p2 = s2;
cout << cmp(*s1, *s2);*/
short N;
char S[101];
cin >> N;
char** A = new char*[N];
for (char i = 0; i < N; ++i)
{
cin >> S;
A[i] = new char[strlen(S)+1];
strcpy(A[i], S);
}
qsort(A, N, 4, cmp);
for (char i = 0; i < N; ++i) cout << A[i];
//for (char i = 0; i < N; ++i) delete A[i];
delete [] A;
cout << endl; system("pause");
return 0;
}
Re: qsort (28 відповідей, залишених у C++)
Як перевірити функцію cmp на деяких двох рядках, які я вводжу з клавіатури?
Re: qsort (28 відповідей, залишених у C++)
У вас елементи - це показчики на рядки.
А можна зробити так, щоб елементи були рядками?
Re: qsort (28 відповідей, залишених у C++)
Re: qsort (28 відповідей, залишених у C++)
Але тепер
error C2664: 'qsort' : cannot convert parameter 4 from 'int (__cdecl *)(const void **,const void **)' to 'int (__cdecl *)(const void *,const void *)'
Re: qsort (28 відповідей, залишених у C++)
...покажчики на покажчики на рядки. І як це зробити?
Re: qsort (28 відповідей, залишених у C++)
Тема: qsort (28 відповідей, залишених у C++)
Наскільки я розумію, функція qsort повинна міняти місцями елементи, якщо cmp повертає додатне значення. cmp("4", "2") повертає -2, тому qsort не повинна міняти їх. Але якщо ввести
3
4
01
2,
то отримаємо 2014.
#include <iostream>
using namespace std;
int cmp(const void* str1, const void* str2)
{
char* s1 = (char*)str1, *s2 = (char*)str2;
int l = min(strlen(s1), strlen(s2));
if (strncmp(s1, s2, l) || strlen(s1) == strlen(s2)) return -strncmp(s1, s2, l);
unsigned char i = l;
if (strlen(s1) > strlen(s2))
{
while (s1[i] == s1[l-1] && i < strlen(s1)) ++i;
return s1[l-1]-s1[i];
}
if (strlen(s1) < strlen(s2))
{
while (s2[i] == s2[l-1] && i < strlen(s2)) ++i;
return s2[l-1]-s2[i];
}
}
int main()
{
/*char s1[10], s2[10];
cin >> s1 >> s2;
cout << cmp(s1, s2);*/
short N;
char S[101];
cin >> N;
char** A = new char*[N];
for (char i = 0; i < N; ++i)
{
cin >> S;
A[i] = new char[strlen(S)];
strcpy(A[i], S);
}
qsort(A, N, 4, cmp);
for (char i = 0; i < N; ++i) cout << A[i];
cout << endl; system("pause");
return 0;
}
Все зробив, як ви казали, але все те саме.
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//
#pragma once
#include "targetver.h"
[!if !CONSOLE_APP]
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
[!else]
#include <stdio.h>
#include <tchar.h>
[!endif]
[!if SUPPORT_MFC]
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // some CString constructors will be explicit
#ifndef VC_EXTRALEAN
#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
#endif
#include <afx.h>
#include <afxwin.h> // MFC core and standard components
[!if !LIB_APP]
#include <afxext.h> // MFC extensions
#ifndef _AFX_NO_OLE_SUPPORT
#include <afxdtctl.h> // MFC support for Internet Explorer 4 Common Controls
#endif
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h> // MFC support for Windows Common Controls
#endif // _AFX_NO_AFXCMN_SUPPORT
#include <iostream>
[!endif]
[!endif]
[!if DLL_APP || WIN_APP]
// Windows Header Files:
#include <windows.h>
[!endif]
[!if WIN_APP]
// C RunTime Header Files
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <tchar.h>
[!endif]
[!if SUPPORT_ATL]
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // some CString constructors will be explicit
#include <atlbase.h>
#include <atlstr.h>
[!endif]
// TODO: reference additional headers your program requires here
error C2065: 'M_PI' : undeclared identifier
error C2065: 'M_E' : undeclared identifier
#include <iostream>
#define _USE_MATH_DEFINES
#include <cmath>
using namespace std;
int main() {
cout<<"pi="<<M_PI<<endl;
cout<<"e="<<M_E<<endl;
cout<<endl;system("pause"); return 0;
}
Тобто додати в 'Довірені'?
Знайдені повідомлення: з 1 по 20 з 29