Выдаёт "Необработанное исключение по адресу 0x003B4514 в ConsoleApplication5.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0x33932DB8."
Найти минимальное число и поменять его местами с третьим элементом массива.
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <locale>
int main ()
{
setlocale(LC_ALL,"Russian");
int mas[5],min,indmin,i;
for (i=1;i<5;i++)
{
printf ("Введите %d-й элемент массива массива: ",i);
scanf_s ("%d",&mas);
}
min=mas[0];
for (i=1; i<5; i++)
{
if (mas<min)>;
indmin=i;
}
}
system ("cls");
printf("\nИсходный массив: ");
for (i=1;i<5;i++){
printf("%d ",mas);}
int a;
a=mas[indmin];
mas[indmin]=mas[3];
mas[3]=a;
printf("\nМассив полученный в результате смены местами максимальным элемента и элемента под номером \"3\": ");
for (i=1;i<5;i++){
printf("%d ",mas);}
_getch ();
}
Другие языки программирования и технологии
Помогите найти ошибку в программе. C++
for (i=1;i<5;i++) // i=0 *
min=mas[0]; // NULL
Дальше не читаю даже. Думаю тут ошибочка основная.
min=mas[0]; // NULL
Дальше не читаю даже. Думаю тут ошибочка основная.
Третьим по порядку, или поменять с элементом с индексом 3?
В любом случае ваша программа мало похожа на программу на С++. Надо примерно так:
#include <iostream>
using namespace std;
int main() {
int n;
cout << "размер массива? ";
cin >> n;
if (n < 3) return 0;
int *a = new int[n];
for (int c = 0; c < n; ++c) {
cout << "a[" << c << "]? ";
cin >> a[c];
}
int mc = 0;
for (int c = 1; c < n; ++c) if (a[c] < a[mc]) mc = c;
int t = a[mc];
a[mc] = a[2];
a[2] = t;
cout << "результат: \n";
for (int c = 0; c < n; ++c) cout << ' ' << a[c];
cout << endl;
delete[] a;
return 0;
}
или даже так:
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n;
cout << "размер массива? ";
cin >> n;
if (n < 3) return 0;
int *a = new int[n];
for (int c = 0; c < n; ++c) {
cout << "a[" << c << "]? ";
cin >> a[c];
}
iter_swap(min_element(a, a + 5), a + 2);
cout << "результат: \n";
for (int c = 0; c < n; ++c) cout << ' ' << a[c];
cout << endl;
delete[] a;
return 0;
}
В любом случае ваша программа мало похожа на программу на С++. Надо примерно так:
#include <iostream>
using namespace std;
int main() {
int n;
cout << "размер массива? ";
cin >> n;
if (n < 3) return 0;
int *a = new int[n];
for (int c = 0; c < n; ++c) {
cout << "a[" << c << "]? ";
cin >> a[c];
}
int mc = 0;
for (int c = 1; c < n; ++c) if (a[c] < a[mc]) mc = c;
int t = a[mc];
a[mc] = a[2];
a[2] = t;
cout << "результат: \n";
for (int c = 0; c < n; ++c) cout << ' ' << a[c];
cout << endl;
delete[] a;
return 0;
}
или даже так:
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n;
cout << "размер массива? ";
cin >> n;
if (n < 3) return 0;
int *a = new int[n];
for (int c = 0; c < n; ++c) {
cout << "a[" << c << "]? ";
cin >> a[c];
}
iter_swap(min_element(a, a + 5), a + 2);
cout << "результат: \n";
for (int c = 0; c < n; ++c) cout << ' ' << a[c];
cout << endl;
delete[] a;
return 0;
}
Давно на С не писал, но, кажется мне что вместо
scanf_s ("%d",&mas);
должно быть
scanf_s ("%d",&mas[i-1]);
вместо
i<5
должно быть в данном случае
i<=5
if (mas<min)>
scanf_s ("%d",&mas);
должно быть
scanf_s ("%d",&mas[i-1]);
вместо
i<5
должно быть в данном случае
i<=5
if (mas<min)>
Похожие вопросы
- Помогите исправить ошибку в программе (c++).
- помогите найти ошибка в программе на PASCAL тема: "файлы".
- Помогите найти ошибку в программе и исправить ее.
- Помогите найти ошибки в программе!
- Помогите найти ошибку в программе С++
- Помогите найти ошибку в программе Паскаль!
- Всем добрый вечер) пожалуйста,помогите найти ошибку в программе-->
- Помогите найти ошибку в программе (паскаль)
- КТО знает програмирование по QBASIC Описание темы: ПОМОГИТЕ НАЙТИ ОШИБКИ В ПРОГРАММЕ
- Помогите найти ошибку в программе.