#include <stdio.h>
#include <stdlib.h>
void swap_two(int* input, int i, int j)
{
int k;
k = input[_i_];
input[_i_] = input[_j_];
input[_j_] = k;
}
void sort(int input[])
{
if (input[1] > input[2])
swap_two(input, 1, 2);
if (input[0] > input[1])
swap_two(input, 0, 1);
if (input[0] > input[2])
swap_two(input, 0, 2);
}
int main()
{
int input_count = 3;
int result[2];
int input_numbers[100] = {1, 4, 3, 5, 56};
scanf("%d",&input_count);
for (int i = 0; i < input_count; i++)
scanf("%d", &input_numbers[_i_]);
for (int i = 0; i < 3; i++)
result[_i_] = input_numbers[_i_];
for (int i = 3; i < input_count; i++)
{
for(int j = 0; j < 3; j++)
{
if (result[_j_] < input_numbers[_i_])
{
result[_j_] = input_numbers[_i_];
sort(result);
}
if(result[_j_] == input_numbers[_i_])
{
sort(result);
break;
}
}
}
for(int i = 0; i < 3; i++){
printf("%d | ", result[_i_]);
}
system("pause");
return 0;
}
Почему может не работать программа
Код:
#include <stdio.h>
#include <stdlib.h>
void swap_two(int input[], int i, int j){
int k;
k = input[ i ];
input = input[j];
input[j] = k;
}
void sort(int input[]){
if (input[1] > input[2]) swap_two(input, 1, 2);
if (input[1] > input[3]) swap_two(input, 1, 3);
if (input[2] > input[3]) swap_two(input, 2, 3);
}
int main()
{
int input_count = 3;
int result[3];
int input_numbers[100] = {1, 4, 3, 5, 56};
//scanf("%i", input_count);
/*for (int i = 0; i < input_count; i++){
scanf("%i", &input_numbers[ i ]);
}*/
for (int i = 0; i < 3; i++) result = input_numbers[ i ];
for (int i = 3; i < input_count; i++){
for(int j = 0; j < 3; j++){
if (result[j] < input_numbers){
result[j] = input_numbers;
sort(result);
}
}
}
swap_two(result, 1, 2);
for(int i = 0; i < 3; i++){
printf("%d ", result);
}
return 0;
}
#include <stdlib.h>
void swap_two(int input[], int i, int j){
int k;
k = input[ i ];
input = input[j];
input[j] = k;
}
void sort(int input[]){
if (input[1] > input[2]) swap_two(input, 1, 2);
if (input[1] > input[3]) swap_two(input, 1, 3);
if (input[2] > input[3]) swap_two(input, 2, 3);
}
int main()
{
int input_count = 3;
int result[3];
int input_numbers[100] = {1, 4, 3, 5, 56};
//scanf("%i", input_count);
/*for (int i = 0; i < input_count; i++){
scanf("%i", &input_numbers[ i ]);
}*/
for (int i = 0; i < 3; i++) result = input_numbers[ i ];
for (int i = 3; i < input_count; i++){
for(int j = 0; j < 3; j++){
if (result[j] < input_numbers){
result[j] = input_numbers;
sort(result);
}
}
}
swap_two(result, 1, 2);
for(int i = 0; i < 3; i++){
printf("%d ", result);
}
return 0;
}
Программа должна выводить в консоль 3 наибольших числа массива. Но я имею только 3 первых введённых числа.
И не понятная ситуация с закомментированными строками. Ввод при помощи scanf не работает.
Так же, не могли бы вы порекомендовать хороший отладчик для новичка.
Спасибо.
Поправка: вот, теперь индексы появились. Почему-то не отображалась комбинация "[_i_]" без подчёркиваний. Наверное, какой-то символ форматирования.
Поправка 2 )) : scanf("%i", &input_numbers[ i ]); тоже не отображался индекс
ты пытаешся три раза сделать полную чепуху. вообщем на этот код каждый уважающий компилятор будет сильно ругаться.почитай про массивы!
если ты все исправил то всеравно куча косяков. Ты забываешь про индексы массивов! В том же scanf например scanf("%i", &input_numbers[index]); так надо.
немного подправил. у меня все работает
Спасибо!, efviop!
Код:
#include <stdio.h>
#include <stdlib.h>
void swap_two(int* input, int i, int j)
{
int k;
k = input[ i ];
input[ i ] = input[ j ];
input[ j ] = k;
}
void sort(int* input)
{
int s = 0;
while(1)
{
if (input[0] > input[1])
swap_two(input, 0, 1);
if (input[0] < input[1])
s++;
if (input[1] > input[2])
swap_two(input, 1, 2);
if (input[1] < input[2])
s++;
if(s > 2)
break;
}
}
int main()
{
int input_count = 3;
int result[2];
int input_numbers[100] = {1, 4, 3, 5, 56};
scanf("%d",&input_count);
for (int i = 0; i < input_count; i++)
scanf("%d", &input_numbers[ i ]);
for (int i = 0; i < 3; i++)
result[ i ] = input_numbers[ i ];
for (int i = 3; i < input_count; i++)
{
for(int j = 0; j < 3; j++)
{
if(result[ j ] == input_numbers[ i ])
continue;
if (result[ j ] < input_numbers[ i ])
result[ j ] = input_numbers[ i ];
}
}
sort(result);
for(int i = 0; i < 3; i++)
printf("%d | ", result[ i ]);
system("pause");
return 0;
}
#include <stdlib.h>
void swap_two(int* input, int i, int j)
{
int k;
k = input[ i ];
input[ i ] = input[ j ];
input[ j ] = k;
}
void sort(int* input)
{
int s = 0;
while(1)
{
if (input[0] > input[1])
swap_two(input, 0, 1);
if (input[0] < input[1])
s++;
if (input[1] > input[2])
swap_two(input, 1, 2);
if (input[1] < input[2])
s++;
if(s > 2)
break;
}
}
int main()
{
int input_count = 3;
int result[2];
int input_numbers[100] = {1, 4, 3, 5, 56};
scanf("%d",&input_count);
for (int i = 0; i < input_count; i++)
scanf("%d", &input_numbers[ i ]);
for (int i = 0; i < 3; i++)
result[ i ] = input_numbers[ i ];
for (int i = 3; i < input_count; i++)
{
for(int j = 0; j < 3; j++)
{
if(result[ j ] == input_numbers[ i ])
continue;
if (result[ j ] < input_numbers[ i ])
result[ j ] = input_numbers[ i ];
}
}
sort(result);
for(int i = 0; i < 3; i++)
printf("%d | ", result[ i ]);
system("pause");
return 0;
}
Код:
#include <stdio.h>
#include <stdlib.h>
void swap_two(int* input, int i, int j)
{
int k;
k = input[ i ];
input[ i ] = input[ j ];
input[ j ] = k;
}
void sort(int* input)
{
if(input[0] > input[1])
swap_two(input,0,1);
if(input[1] > input[2])
swap_two(input,1,2);
if(input[0] > input[1])
swap_two(input,0,1);
}
int main()
{
int input_count = 3;
int result[2];
int input_numbers[100] = {1, 4, 3, 5, 56};
scanf("%d",&input_count);
for (int i = 0; i < input_count; i++)
scanf("%d", &input_numbers[ i ]);
for (int i = 0; i < 3; i++)
result[ i ] = input_numbers[ i ];
sort(result);//смещаем большие значения в конец массива
for (int i = 3; i < input_count; i++)
{
//возвращаемся в начало цикла так как в result[1],result[2] только большие значения
if(result[ 0 ] == input_numbers[ i ])
continue;
if (result[ 0 ] < input_numbers[ i ])
{
result[ 0 ] = input_numbers[ i ];
sort(result);
}
}
for(int i = 0; i < 3; i++)
printf("%d | ", result[ i ]);
system("pause");
return 0;
}
#include <stdlib.h>
void swap_two(int* input, int i, int j)
{
int k;
k = input[ i ];
input[ i ] = input[ j ];
input[ j ] = k;
}
void sort(int* input)
{
if(input[0] > input[1])
swap_two(input,0,1);
if(input[1] > input[2])
swap_two(input,1,2);
if(input[0] > input[1])
swap_two(input,0,1);
}
int main()
{
int input_count = 3;
int result[2];
int input_numbers[100] = {1, 4, 3, 5, 56};
scanf("%d",&input_count);
for (int i = 0; i < input_count; i++)
scanf("%d", &input_numbers[ i ]);
for (int i = 0; i < 3; i++)
result[ i ] = input_numbers[ i ];
sort(result);//смещаем большие значения в конец массива
for (int i = 3; i < input_count; i++)
{
//возвращаемся в начало цикла так как в result[1],result[2] только большие значения
if(result[ 0 ] == input_numbers[ i ])
continue;
if (result[ 0 ] < input_numbers[ i ])
{
result[ 0 ] = input_numbers[ i ];
sort(result);
}
}
for(int i = 0; i < 3; i++)
printf("%d | ", result[ i ]);
system("pause");
return 0;
}