Informatică, întrebare adresată de Madalina1360, 8 ani în urmă

Ș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 de Razzvy
1

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.

Alte întrebări interesante