Esto es lo que tengo del vector, никакой se Комо мэр encontrar el número.
#include <stdio.h>
int main(int argc, char *argv[]) {
int n;
scanf("%i",&n);
int vector[n];
for(int i=0;i<n;i++){
printf("vector[%i]\n\n\f ",i);
scanf("%i",vector);
}
return 0;
}
Находить самого большего nГєmero vector/array в C
Прежде всего, у твоей программы есть недостаток в этой lГ-nea:
scanf("%i",vector);
то, что estГЎs посылая, та direcciГіn основание договоренности, а именно, в ningГєn момент estarГЎs наполняя вектор (в excepciГіn первого элемента).
Правильная форма serГ - в, таким образом:
scanf("%i",&vector[i]);
Таким образом, в каждом iteraciГіn, envГ-эксперте она direcciГіn памяти каждого элемента вектора и поэтому, вектора llenarГЎ правильно.
Относительно как находить самую большую стоимость вектора, алгоритм serГ - в:
Мы Объявляем две переменные, первую (его может быть int mayor
) для того, чтобы он сохранял самую большую стоимость и вторую (его может быть int posMayor
) для того, чтобы он хранил ее posiciГіn/Г-ndice самого большего элемента.
Потом, мы понимаем, что первый элемент вектора - самый больший (этот serГЎ стандартная настройка int mayor
).
Мы Выполняем цикл, где в каждый iteraciГіn мы проверяем, algГєn становится ли элемент вектора превосходящим переменную int mayor
, если выполняется ее condiciГіn, обновляем переменную, где мы сохраняем самую большую стоимость и tambiГ©n она posiciГіn.
cГіdigo quedarГ - в, таким образом:
#include<stdio.h>
int main(int argc, char *argv[])
{
int mayor;
int posMayor = 0;
int n;
scanf("%i",&n);
int vector[n];
for(int i=0;i<n;i++){
printf("vector[%i]\n\n\f ",i);
scanf("%i",&vector[i]);
}
mayor = vector[0];
for(int i = 1; i < n; ++i)
{
if(vector[i] > mayor)
{
mayor = vector[i];
posMayor = i;
}
}
printf("El numero mayor fue: %d (indice: %d)\n", mayor, posMayor);
return 0;
}
TambiГ©n я должен подчеркивать, что VLA (Переменная Ленгт Арраис) не являются рекомендуемым, должным, что, не возможно обнаруживать, если она asignaciГіn памяти sucediГі с Г©xito или нет. Поэтому razГіn, рекомендует использовать память dinГЎmica.
Используя ее funciГіn malloc мы можем создавать договоренность X элементов безопасной формы:
#include<stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int mayor;
int posMayor = 0;
int* vector;
//Pedimos el tamaño del vector
int n;
scanf("%i",&n);
//Reservamos memoria para crear el arreglo dinámico
vector = malloc(n * sizeof(int));
if(vector == NULL)
{
printf("Error: Hubo una fallo al momento de asignar memoria!");
return 1;
}
for(int i=0;i<n;i++){
printf("vector[%i]\n\n\f ",i);
scanf("%i",&vector[i]);
}
mayor = vector[0];
for(int i = 1; i < n; ++i)
{
if(vector[i] > mayor)
{
mayor = vector[i];
posMayor = i;
}
}
printf("El numero mayor fue: %d (indice: %d)\n", mayor, posMayor);
//Liberamos la memoria.
free(vector);
return 0;
}