Știe cineva să rezolve aceste probleme in limbajul C?
1) Se citeste un vector cu n elemente numere intregi, n fiind cel mult egal cu 1000. Parcurgeti si afisati elementele vectorului astfel: intai elementele de pe pozitii pare in ordinea din vector, iar pe linia urmatoare elementele de pe pozitii impare in ordine inversa din vector. Indexarea elementelor din vector incepe cu 1. Exemplu: Pentru n=7 si vectorul cu elemente {5,3,5,2,7,6,4} se vor afisa elementele astfel:
3 2 6
4 7 5 5
2) Se citeste un vector a cu n elemente numere intregi. Afisati valoarea minima din vector si pozitiile pe care apare ea. Elementele vectorului sunt numerotate de la 1 la n. 3) Se citeste un numar natural n. Afisati cel mai mic palindrom mai mare decat n. Exemplu: daca n=1232 se va afisa 1331.
Răspunsuri la întrebare
Răspuns:
Problema 1
#include <stdio.h>
int main() {
int v[1001], n;
// Citeste numarul de elemente
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
// Citeste fiecare element al vectorului
scanf("%d", &v[i]);
}
// Afiseaza elementele de pe pozitii pare
for (int i = 1; i <= n; i++) {
if (i % 2 == 0) {
printf("%d ", v[i]);
}
}
printf("\n");
// Afiseaza elementele de pe pozitii impare, dar invers
for (int i = n; i >= 1; i--) {
if (i % 2 == 1) {
printf("%d ", v[i]);
}
}
printf("\n");
}
Problema 2:
#include <stdio.h>
#include <limits.h>
int main() {
int v[1001], n, mini = INT_MAX;
// Citeste numarul de elemente
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
// Citeste fiecare element al vectorului
scanf("%d", &v[i]);
}
// Afla elementul minim si retine-l in variabila mini
for (int i = 1; i <= n; i++) {
if (v[i] < mini) {
mini = v[i];
}
}
// Afiseaza valoarea minima
printf("%d\n", mini);
// Afiseaza pozitiile elementelor care sunt egale cu mini
for (int i = 1; i <= n; i++) {
if (v[i] == mini) {
printf("%d ", i);
}
}
printf("\n");
}
Problema 3:
#include <stdio.h>
#include <limits.h>
int oglindit(int x) {
int o = 0;
// Itereaza prin cifrele lui x, pornind de la ultima
while (x) {
int cifra = x % 10;
// Construieste oglinditul, atasand la final cifra curenta
o = o * 10 + cifra;
x /= 10;
}
return o;
}
int main() {
int n, x;
// Citeste numarul n
scanf("%d", &n);
// Treci prin toate valorile mai mari decat n
// Si opreste-te cand gasesti un palindrom
x = n + 1;
// Cat timp x nu e palindrom
while (oglindit(x) != x) {
// Treci la urmatorul
x++;
}
printf("%d", x);
}
Explicație:
La a treia problema am folosit o functie, pentru a-mi fi mai usor sa verific daca un numar e palindrom.