Re: Допоможіть будь ласка з написанням програм
Коментар Arete перед вашим прочитайте.
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → C++ → Допоможіть будь ласка з написанням програм
Коментар Arete перед вашим прочитайте.
Ось що написав, як зробити перевірку в ІФ, щоб він перевіряв, підпослідовності з від'ємних чисел і вибирав найбільшу?
Забудьте про функції, ви ще базової роботи з циклами не засвоїли (мовчу за масиви). Зробіть так, що на кожне введене число програма відповідала - від'ємне воно чи ні.
читайте про масиви, бо це чад гульби в пекельному мороці, наприклад.
Не читайте поки про масиви, вони для цієї задачі не потрібні. Робіть, що я сказав.
Ось так. Чи в тому коді робити?
#include "stdafx.h"
#include "windows.h"
#include "locale.h"
int main()
{
setlocale(LC_ALL,"RUS");
double x;
printf("Введiть число: ");
scanf_s("%lf",&x);
if (x<0)
printf("Число вiд'емне! \n");
else
printf("Число додатне! \n");
system("pause");
return 0;
}
На кожне, я сказав. Вводите послідовність, кожне перевіряєте.
А тепер горбатий, я сказав горбатий. Напишіть 1 цикл
for(;;)
і читайте в ньому все що вводиться з консолі.
Напишіть 1 цикл
Це дурна порада. Не треба робити так.
Якби я хотів знайти послідовність у класичному Си, я б мабудь робив якось так:
char s[255]={0};
gets_s(&s[0],255);
int n=0,i,k=0;
for(char *c=strtok(s," ");c;c=strtok(0," ")){
i=atoi(c);
if(i<0) n++;
else {k=(n>k)?n:k; n=0;};
}
printf("%d",k); getchar();
Че скетч.
Ось
#include "stdafx.h"
#include "windows.h"
#include "locale.h"
int main()
{
setlocale(LC_ALL,"RUS");
int x1,x2,x3,x4,x5,i,n;
printf("Введiть послiдовнiсть: ");
scanf_s("%d %d %d %d %d",&x1,&x2,&x3,&x4,&x5);
if (0>x1)
printf("x1= %d Вiд'емне\n",x1);
if (0>x2)
printf("x2= %d Вiд'емне\n",x2);
if (0>x3)
printf("x3= %d Вiд'емне\n",x3);
if (0>x4)
printf("x4= %d Вiд'емне\n",x4);
if (0>x5)
printf("x5= %d Вiд'емне\n",x5);
else printf("Всi Додатнi\n");
system("pause");
return 0;
}
Чудово. А тепер всі ці xN заженіть в один цикл. Я знаю, ви можете, в першому коді ви так робили.
Ось, але проблемка з'явилась. Коли ввожу 1 від'ємне, пише його, але ще пише "всі додатні" ось скрін.
#include "stdafx.h"
#include "windows.h"
#include "locale.h"
int main()
{
setlocale(LC_ALL,"RUS");
int x1,x2,x3,x4,x5,i,n;
printf("Введiть кiлькiсть послiдовностей: ");
scanf_s("%d",&n);
for(i=0;i<n;i++)
{
printf("Введiть [%d] послiдовнiсть: ",i);
scanf_s("%d %d %d %d %d",&x1,&x2,&x3,&x4,&x5);
if (0>x1)
printf("x1= %d Вiд'емне\n",x1);
if (0>x2)
printf("x2= %d Вiд'емне\n",x2);
if (0>x3)
printf("x3= %d Вiд'емне\n",x3);
if (0>x4)
printf("x4= %d Вiд'емне\n",x4);
if (0>x5)
printf("x5= %d Вiд'емне\n",x5);
else printf("Всi Додатнi\n");
}
system("pause");
return 0;
}
snikers.mc
у вас "else printf("Всi Додатнi\n");" відноситься лише до останнього if, а не до всіх зразу.
Якщо записати таким форматом, то тоді воно перевіряє тільки х1, а далі не хоче. Чи це не так записується?
if (0>x1)
printf("x1= %d Вiд'емне\n",x1);
else
if (0>x2)
printf("x2= %d Вiд'емне\n",x2);
else
if (0>x3)
printf("x3= %d Вiд'емне\n",x3);
else
if (0>x4)
printf("x4= %d Вiд'емне\n",x4);
else
if (0>x5)
printf("x5= %d Вiд'емне\n",x5);
else
printf("Всi Додатнi\n");
Ви не туди пішли. Робіть цикл.
А що там не так - просто розберіть по рядку.
І форматування у вас без else-ів неправильне, що заплутує.
Ось цикл, чи про який ви цикл говорете? Тільки якщо там стоять else, то результат ось такий (картинка), перше від'ємне пише, а останні ігнорує, а якщо немає, то показує всі від'ємні.
КАРТИНКА
КОД
А де в умові було сказано, що послідовностей має бути декілька, а елементів в послідовності - рівно 5?
Оста так переобразив.
#include "stdafx.h"
#include "windows.h"
#include "locale.h"
int main()
{
setlocale(LC_ALL,"RUS");
int x,i,n,k=0;
printf("Введiть кiлькiсть елементiв: ");
scanf_s("%d",&n);
for(i=0;i<n;i++)
{
printf("Введiть [%d] елемент: ",i);
scanf_s("%d",&x);
if (x<0)
k++;
}
printf("Вiд'емних чисел в послiдовностi - %d \n",k);
system("pause");
return 0;
}
Оста так переобразив.
Це лише підрахунок чисел.
Наразі тобі треба трохи змінити код, щоб рахувати кількість елементів, які нижче нуля, й знаходяться поруч.
Можеш взяти мій приклад вишче на вивченя як зразок.
Як мені організувати перевірку ближніх чисел?