Advertisement
Guest User

Untitled

a guest
Jan 16th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.12 KB | None | 0 0
  1. /* Fondamenti di Informatica
  2. Prima Prova in Itinere
  3. TURNO 1B
  4.  
  5. Scrivere un programma in ANSI C che, dato un file di testo che contiene in ogni riga un valore intero, esegua le seguenti operazioni:
  6. 1. Carica in un vettore di numeri interi i valori dispari presenti nel file;
  7. 2. Visualizzi il contenuto del vettore caricato al punto 1 in ordine inverso rispetto quello di inserimento;
  8. 3. Calcoli e visualizzi il valore minimo e la sua posizione all’interno del vettore
  9. Specifiche:
  10. - La dimensione dell’array è N pari a 10
  11. - Il nome del file di ingresso deve essere inserito da input.
  12. - Il numero di righe nel file non è noto all’inizio. Eventuali elementi nel file oltre la riga N-esima (cioè oltre la decima riga) non devono essere prese in considerazione
  13.  
  14. */
  15.  
  16. #include <stdio.h>
  17. #include <stdlib.h>
  18. #define DIM 10
  19.  
  20. int main(void) {
  21. int v[DIM];
  22. FILE *f;
  23. char nomefile[64];
  24. int numelementi = 0; // numero di elementi letti
  25. int num, min, j, pos;
  26.  
  27. /**** Quesito 1 ****/
  28. printf("Inserire il nome del file da aprire: ");
  29. scanf("%s", nomefile);
  30. if (((f = fopen(nomefile, "r")) == NULL)){
  31. printf("Errore nell'apertura del file\n");
  32. exit(1);
  33. }
  34.  
  35. while ((!feof(f)) && (numelementi < DIM)) {
  36. if (fscanf(f, "%d", &num)==1)
  37. if ((num % 2) != 0){
  38. v[numelementi] = num;
  39. numelementi++;
  40. }
  41. }
  42. fclose(f);
  43. printf("Elementi del file letti e caricati nel vettore\n\n");
  44.  
  45. /* controllo che nel vettore ci siano elementi, altrimenti esco dal programma
  46. in quanto i quesiti 2 e 3 non possono essere eseguiti */
  47. if (numelementi == 0) {
  48. printf("Non sono presenti numeri validi nel file\n");
  49. printf("I quesiti 2 e 3 non possono essere eseguiti\n");
  50. exit(1);
  51. }
  52.  
  53. /**** Quesito 2 ****/
  54. printf("Stampa del vettore in ordine inverso\n");
  55. for (j = numelementi - 1; j >= 0; j--)
  56. printf("Elemento %d = %d\n", j, v[j]);
  57.  
  58. /**** Quesito 3 ****/
  59. min = v[0];
  60. pos = 0;
  61. for (j = 1; j < numelementi; j++) {
  62. if (v[j] < min) {
  63. min = v[j];
  64. pos = j;
  65. }
  66. }
  67. printf("Il valore minimo contenuto all'interno del vettore e' %d, in posizione %d \n", min, pos);
  68.  
  69. return 0;
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement