Discussione Ufficiale Programmiamo con Inforge | Esercitazione 01 in C | Livello base

Una Discussione Ufficiale punta a raccogliere tutte le informazioni su un argomento o un fatto di attualità, con costanti aggiornamenti da parte del creatore e dei partecipanti.
U

Utente cancellato 275412

Ultima modifica da un moderatore:
anche io partecipo
Messaggio unito automaticamente:

io sempre in C# li faccio so che non dovrei farli in questo linguaggio ma ci provo:
esercizio 1:
C#:
static float MediaFloat(params float[] array)
        {
            float temp = 0;
            int count = 0;
            foreach (float x in array)
            {
                temp += x;
                count++;
            }
            return temp / (float)count;
           
        }

esercizio 2:
C#:
static void PrintArray(float[] array)
        {
            foreach (float x in array) {
                Console.WriteLine(x);
            }
        }

esercizio 3:
C#:
static public void InputArray(List<float> array, int n)
        {
            for (int i=0;i<n;i++)
            {
                Console.Write($"Input {i}: ");
                float temp = (float)Console.Read();
                array.Add(temp);
            }
        }

esercizio 4:
non credo si possa fare in C#

esercizio 5:
C#:
static public void MinArray(float[] array)
        {
            float temp = 0;
            foreach (float x in array)
            {
                if (x>temp)
                {
                    temp = x;
                }
            }
            foreach (float x in array)
            {
                if (x<temp)
                {
                    temp = x;
                }
            }
            Console.WriteLine(temp);
        }

esercizio 6:
non lo riesco a fare

esercizio 7:
C#:
static public void ArrayWrite(float[] array, string filename)
        {
            StreamWriter sw = new StreamWriter(filename);
            foreach (float x in array)
            {
                sw.WriteLine(Convert.ToString(x));
            }

            sw.Close();
        }

esercizio 8:
anche questo non credo si possa fare in C#
 
  • Mi piace
Reactions: Valley
Banner pubblicitario per Bright Data su Inforge.net azienda di vendita Proxy, Data Collector e Content Unlocker
Supporta Inforge con una donazione

DispatchCode

Moderatore
24 Maggio 2016
393
264
193
esercizio 4:
non credo si possa fare in C#

In C# puoi fare così:

Codice:
float[] array_alloc(int n){
    return new float[n];
}

esercizio 6:
non lo riesco a fare

Hai studiato algoritmi di sorting a scuola? Non ci sono vincoli, puoi utilizzarne anche di semplici come bubble sort o selection sort.
Se sei rimasto bloccato, posta il codice interessato, così vediamo di aiutarti. ;)

esercizio 8:
anche questo non credo si possa fare in C#

Si puoi farlo: nel Main dovrai di fatto chiedere l'input da console con Console.ReadLine() e successivamente utilizzare TryParse.
Come detto sopra, se hai difficoltà pubblica pure un codice parziale.
 
U

Utente cancellato 275412

Hai studiato algoritmi di sorting a scuola?
si ma non ero molto attento in classe... comunque sono riuscito a farlo:

C#:
using System;
using System.Collections.Generic;

namespace MyCompiler {
    class Program {
        static void array(float[] arrays) {
            float[] vettore=new float[arrays.Length];
            List<int> ban=new List<int>();
            int count=0;
            foreach (float x in arrays) {
                vettore[count]=arrays[count];
                count++;
            }
            float temp=0.0f;
            for (int q=0;q<arrays.Length;q++) {
            for (int i=0;i<arrays.Length;i++) {
                if (ban.Contains(i)) {
                    continue;
                }
                if (vettore[i]>temp) {
                    temp=vettore[i];
                }
            }
            for (int i=0;i<arrays.Length;i++) {
                if (temp==vettore[i]) {
                    ban.Add(i);
                }
            }
            }
            int count2=0;
            foreach (int x in ban) {
                vettore[count2]=x;
                count2++;
            }
        }
        public static void Main(string[] args) {
            float[] f={3.3f,5.6f,9.9f};
            array(f);
            foreach (float t in f) {
                Console.WriteLine(t);
            }
        }
    }
}
 
Banner pubblicitario per Bright Data su Inforge.net azienda di vendita Proxy, Data Collector e Content Unlocker
Supporta Inforge con una donazione

DispatchCode

Moderatore
24 Maggio 2016
393
264
193
@ddos attack non mi è chiaro che vuoi fare. Sarebbe l'ordinamento? Visto così è errato; sarebbe sufficiente una cosa come questa:

Codice:
        static float[] array(float[] values) {
            
            for(int i=0; i<values.Length; i++) {
                for(int j=i+1; j<values.Length; j++) {
                    if(values[j] < values[i]) {
                        float tmp = values[i];
                        values[i] = values[j];
                        values[j] = tmp;
                    }
                }
            }
  
            return values;
        }

questo è l'ordinamento più semplice che puoi implementare (è anche il meno efficiente).

scrivo per provare

ottimo, attendiamo la soluzione allora. ;)
 
Banner pubblicitario per Bright Data su Inforge.net azienda di vendita Proxy, Data Collector e Content Unlocker
Supporta Inforge con una donazione

Nice032

Utente Iron
16 Giugno 2021
4
2
8
View attachment 50504

Programmiamo con Inforge | Presentazione

Ad oggi, sul web, si trovano moltissime guide sui vari linguaggi di programmazione e sulle loro molteplici applicazioni. Tuttavia, chi si approccia a queste risorse, non sempre riesce a mettere in pratica ciò che ha appreso. Al fine di limitare queste mancanze, nasce Programmiamo con Inforge.

In questa rubrica potrai scrivere codice per la risoluzione di alcuni problemi legati alla programmazione, mettendo in pratica quanto stai apprendendo dalla teoria oppure mostrando le tue abilità e competenze nel campo dell’informatica.


Partiamo dalle Basi del C

In questa guida puoi trovare i testi per studiare e approfondire il C: I migliori libri per imparare e approfondire il C
In questa discussione puoi trovare le risposte alle domande più frequenti su come scrivere codice in C:
Frequently asked questions: da dove si parte?

Esercitazione 01 in C | Livello base | [Array e operazioni]

L'esercitazione si compone di 7 esercizi nei quali ti sarà richiesto di definire una serie di funzioni utili per lo svolgimento di diverse operazioni sugli array. Una volta scritte le funzioni, dovrai richiamarle nel main() e chiedere all'utente di svolgerle.

*** Testo nascosto: non può essere aggiunto alla citazione ***

Soluzioni

Nell'eventualità in cui non dovessi riuscire ad approcciarti ad uno degli esercizi proposti, prendi queste soluzioni come spunto per elaborarne una nuova versione. Tuttavia, ti consigliamo di pubblicare una tua soluzione originale in questa discussione così da poter essere aiutato passo passo ad arrivare ad un codice migliore.


*** Testo nascosto: non può essere aggiunto alla citazione ***

Conclusioni

Pubblica la soluzione ottimale per risolvere gli esercizi e ricorda che puoi confrontarti con il resto della community in questo thread, chiedere aiuto o aiutare gli altri ;)
pronto!
 
Banner pubblicitario per Bright Data su Inforge.net azienda di vendita Proxy, Data Collector e Content Unlocker
Supporta Inforge con una donazione

kernelspace

Utente Bronze
17 Giugno 2021
92
61
45
Ultima modifica da un moderatore:
belli questi esercizi :)
Messaggio unito automaticamente:

giocato anche io

C:
/*
 * Esercizi di base, per Inforge, by kernelspace
 *
 * Da linux/gcc, compila con:
 *
 *    gcc -Wall -o base main.c
 *
 * Sintassi conforme a
 *    https://www.kernel.org/doc/html/v4.10/process/coding-style.html
 * verificata con checkpatch.pl
 */

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

static const char filename[] = "dati.txt";

static void err(char *msg)
{
    printf("errore: %s\n", msg);
    exit(1);
}

static float array_mean(float *array, int size)
{
    float mean;
    int n = size;

    while (size--)
        mean += *array++;
    mean /= n;

    return mean;
}

static void array_print_to_screen(float *array, int size)
{
    int i = 1;

    while (size--)
        printf("%d: %f\n", i++, *array++);
}

static void array_input(float *array, int size)
{
    float f;
    int i = 1;

    printf("vai con la sequenza\n");

    while (size--) {
        printf("%d: ", i++);
        scanf("%f", &f);
        *array++ = f;
    }
}

static float *array_alloc(int size)
{
    return (float *)malloc(size * sizeof(float));
}

static int array_min_index(float *f, int size)
{
    float min;
    int n, min_idx = 0;

    for (min = *f, n = 0; n < size; ++n) {
        if (f[n] < min) {
            min = f[n];
            min_idx = n;
        }
    }

    return min_idx;
}

static void array_sort(float *f, int size)
{
    float *p;
    int items, min_idx, i = 0;

    p = array_alloc(size);
    if (!p)
        err("non posso allocare");

    for (items = size; items; items--) {
        min_idx = array_min_index(f, items);
        p[i++] = f[min_idx];
        memmove(&f[min_idx], &f[min_idx + 1],
               (size - min_idx - 1) * sizeof(float));
    }

    memcpy(f, p, size * sizeof(float));
    free(p);
}

static int array_write_to_file(float *array, int size, const char *filename)
{

    FILE *f;
    int i = 1;

    f = fopen(filename, "w+");
    if (!f)
        return -1;

    fprintf(f, "Ecco la list ordinata:\n");
    while (size--)
        fprintf(f, "%d: %f\n", i++, *array++);

    fclose(f);

    return 0;
}

int main(void)
{
    int num = 0, x;
    float mean, *f;

    printf("Ciao !\n");
    printf("calcolo media, quanti valori vuoi inserite (max 100) ? ");

    while ((x = getchar()) != '\n') {
        num *= 10;
        num += x - 48;
    }

    if (!num || num > 100)
        err("valore errato");

    f = array_alloc(num);
    if (!f)
        err("non posso allocare");

    array_input(f, num);
    printf("hai inserito:\n");
    array_print_to_screen(f, num);

    printf("ora riordino ...\n");
    array_sort(f, num);
    printf("sequenza riordinata:\n");
    array_print_to_screen(f, num);


    mean = array_mean(f, num);
    printf("media :%f\n", mean);

    if (array_write_to_file(f, num, filename))
        err("non ho potuto salvare su file");

    printf("tutto ok, dati in %s !\n", filename);

    free(f);

    return 0;
}
 
Banner pubblicitario per Bright Data su Inforge.net azienda di vendita Proxy, Data Collector e Content Unlocker
Supporta Inforge con una donazione