Member NFOC Ответов: 2

Как работает второй и первый не на заданном наборе входов?


Первый код:
int a;
	long b;
	char c;
	float d;
	double e;

	scanf("%d", &a);
	scanf("%ld", &b);
	scanf("%c", &c);
	scanf("%f", &d);
	scanf("%lf", &e);

	printf("%d\n", a);

	printf("%ld\n", b);

	printf("%c\n", c);

	printf("%f\n", d);

	printf("%lf\n", e);


Второй Код:

int a; 
    long b; 
    char c; 
    float d; 
    double e;
    scanf("%d %ld %c %f %lf",&a,&b,&c,&d,&e);

    printf("%d", a);
    cout<<endl;
    printf("%ld",b);
    cout<<endl;
    printf("%c ", c);
    cout<<endl;
    printf("%f ", d);
    cout<<endl;
    printf("%lf", e);


Что я уже пробовал:

первый из них не работает, а второй дает правильные выходные данные на этом наборе входных значений:
3 12345678912345 a 334.23 14049.30493

2 Ответов

Рейтинг:
1

OriginalGriff

Поскольку ваша вторая версия явно включает пробелы, разделяющие ваши значения, ваша первая версия этого не делает, поэтому она выходит из синхронизации.
Попробовать это:

int a;
long b;
char c;
float d;
double e;

scanf("%d ", &a);
scanf("%ld ", &b);
scanf("%c ", &c);
scanf("%f ", &d);
scanf("%lf", &e);

printf("%d\n", a);
printf("%ld\n", b);
printf("%c\n", c);
printf("%f\n", d);
printf("%lf\n", e);


Рейтинг:
0

CPallini

Затем используйте третью (C++) один:

#include <iostream>
using namespace std;

int main()
{
  int a;
  long b;
  char c;
  float d;
  double e;

  cin >> a >> b >> c >> d >> e;
  if ( cin.good())
    cout << a << " " << b << " " << c << " " << d << " " << e << endl;
  else
    cout << "no luck" << endl;
}